时间:2020-03-13来源:电脑系统城作者:电脑系统城
介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了。本文主要侧重实操,因为跟着百度前几页的搭建教程或多或少都有坑,前后配置逻辑矛盾的也有。终于,经过几个通宵的bug修复,反复验证,力求以最简洁的代码,最少的操作量,最直白的逻辑来完成集群的搭建。因为操作过程中,网上对wsrep相关参数的介绍少之又少,所以最后特别写了完整版的参数说明,供搭建成功后,各种测试调试使用,对于这些参数有坑的地方,欢迎在底下留言,供大家参考,谢谢。
对于mysql的集群方案,我之前总结过,详情点击查看,多图文,详细介绍mysql各个集群方案
Galera Cluster需要至少三个节点的服务器硬件。
如果群集在单个交换机上运行,请使用三个节点。如果您的群集跨越多个交换机,请使用三个交换机。如果您的群集跨越网络,请使用三个网络。如果您的群集跨越数据中心,请使用三个数据中心。这样可以确保在网络中断的情况下,群集可以维护主组件。
对于服务器硬件,每个节点至少需要以下组件:
注意:Galera Cluster可能会由于内存不足而在有限的硬件上运行时偶尔崩溃。为避免这种情况,请确保分配了足够的交换空间。
对于软件,群集中的每个节点至少需要以下条件:
注意:Galera Cluster的二进制安装软件包包括带有wsrep API补丁的数据库服务器。但是,从源构建时,必须手动应用此修补程序。
在开始安装过程之前,需要完成一些任务以为Galera Cluster准备服务器。您必须在集群中的每个节点上执行以下步骤。
如果在服务器上启用了SELinux(增强安全性的Linux),则它可能会阻止mysqld执行所需的操作。您必须对SELinux禁用mysqld或对其进行配置,以允许mysqld运行外部程序并在非特权端口上打开侦听套接字,即非特权用户可以执行的操作。在这里我看了看它的状态 cat /etc/selinux/config
,然后就直接把它给禁用了。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
若服务器必须要启用SELinux,请查阅selinux和mysql
接下来需要更新每个节点上的防火墙设置,以便它们可以与群集通信。具体执行方式取决于您的发行版和所使用的特定防火墙软件。在这里我看了看防火墙状态 firewall-cmd --state
,就直接把它关闭了。
systemctl stop firewalld.service
systemctl disable firewalld.service
有关为Galera Cluster设置防火墙以及其他用于在Linux和FreeBSD中配置数据包过滤的程序的详细信息,请参阅防火墙设置。
默认情况下,某些服务器(例如Ubuntu)包括AppArmor,这可能会阻止mysqld打开其他端口或运行脚本。 您必须禁用AppArmor或对其进行配置,以允许mysqld运行外部程序并在非特权端口上打开侦听套接字。在这里我就禁用AppArmor了。
ln -s /etc/apparmor.d/usr /etc/apparmor.d/disable/.sbin.mysqld
输入效果如下所示,因为我是centos,不是Ubuntu的,所以禁用APPArmor是不需要的操作,这里只是为了演示。
安装过程十有八九会报错,会提示依赖检测失败,请按照提示,下载相关依赖。这是我依据下面的安装顺序进行安装而报错,我为此逐个而安装的依赖。我的centos是刚安装的最简版,所以缺很多东西,你可以先把以下这些依赖安装完,再安装mysql cluster相关的。
yum -y install lsof net-tools perl socat openssl openssl-devel boost-devel
有个安装的文件和系统现有的有冲突,导致安装失败,卸载掉这个mariadb。
rpm -qa| grep mariadb
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
修改配置文件的时候,还有几个依赖包是被需要的,提前下载好
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install rsync jemalloc
Galera Cluster由两部分组成:Galera复制库(galera-3)和使用写集复制(WSREP)API扩展的MySQL版本(mysql-wsrep)。
若因软件版本变化,导致无法下载,或者你不是centos系统,请自行访问http://releases.galeracluster.com,找到可以下载的对应的版本。
强烈建议安装顺序按照下面所示,逐个来,因为后面的安装需要依赖前面的安装。
wget http://releases.galeracluster.com/galera-3/centos/7/x86_64/galera-3-25.3.29-1.el7.x86_64.rpm
wget http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/mysql-wsrep-5.7-5.7.29-25.21.el7.x86_64.rpm
wget http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/mysql-wsrep-client-5.7-5.7.29-25.21.el7.x86_64.rpm
wget http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/mysql-wsrep-common-5.7-5.7.29-25.21.el7.x86_64.rpm
wget http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/mysql-wsrep-devel-5.7-5.7.29-25.21.el7.x86_64.rpm
wget http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/mysql-wsrep-libs-5.7-5.7.29-25.21.el7.x86_64.rpm
wget http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/mysql-wsrep-libs-compat-5.7-5.7.29-25.21.el7.x86_64.rpm
wget http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/mysql-wsrep-server-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh mysql-wsrep-common-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh mysql-wsrep-libs-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh mysql-wsrep-client-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh mysql-wsrep-libs-compat-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh mysql-wsrep-server-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh mysql-wsrep-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh mysql-wsrep-devel-5.7-5.7.29-25.21.el7.x86_64.rpm
rpm -ivh galera-3-25.3.29-1.el7.x86_64.rpm
最终效果如下所示
vi /etc/my.cnf
打开配置文件,按 i
进入编辑模式,增加以下配置信息。
wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so # wsrep提供者,我的是在这个目录下
wsrep_cluster_name='mysql_cluster' #集群的名字,必须是统一的
wsrep_cluster_address=gcomm://192.168.119.128,192.168.119.129,192.168.119.130 #集群中的其他节点地址
wsrep_node_name = node1 #该节点的名称
wsrep_node_address='192.168.119.128' #该节点的地址
wsrep_sst_method=rsync # 集群使用rsync同步方式
wsrep_sst_auth=lgx:666666 # 集群同步的用户名密码
完成以上修改,Esc退出编辑模式,输入:wq
保存并退出。 类似同样的操作操作再来两次。最终效果如下所示
注意:每个节点的 server-id,wsrep_node_name,wsrep_node_address
是不一样的。
启动第一个节点以前,其节点的配置文件里面,不能配置其它节点的ip,即 wsrep_cluster_address=gcomm://
这样就行了,否则会导致启动报错。待集群启动后,再修改它的配置文件,把其他节点的ip补充上去。
启动第一个节点,该命令会启动本机的 mysqld 服务,命令只在集群第一个节点启动时使用,因为该脚本中带有一个参数:–wsrep-new-cluster,代表新建集群。
/usr/bin/mysqld_bootstrap
查看mysqld服务状态,判断是否成功启动,并创建了新集群。
systemctl status mysqld
效果图如下所示
逐个启动其它节点的服务,并查看是否启动成功。
systemctl start mysqld
systemctl status mysqld
可以看到,节点已经启动。
因为数据库刚刚初始化,超级用户root是没有密码的,系统会给几个临时的root密码。再修改root密码时,需要你用其中一个临时密码确认一下,即红框所示。新输入的密码若不够复杂,会被安全原因拒绝生效。
grep -i 'temporary password' /var/log/mysqld.log
mysqladmin -u root -p 'LGX_211_lgx'
现在用刚刚设置的root密码,来登录某一台主机上的mysql,看看当前节点的数据库状态,再来看看集群的状况。
mysql -u root -p
show status like 'wsrep_local_state_comment';
show status like 'wsrep_cluster_size';
由红框可以看出,当前的节点是正常提供服务的状态,且与集群数据状态是一致的。由篮框可知,当前集群一共有三个节点。
Open:节点启动成功,尝试连接到集群
Primary: 节点已处于集群中,在新节点加入时,选取donor进行数据库同步时会产生的状态
Joiner: 节点处于等待接收或正在接收同步文件的状态
Joined: 节点完成数据同步,但还有部分数据不是最新的,在追赶与集群数据一致的状态
Synced: 节点正常提供服务的状态,表示当前节点数据状态与集群数据状态是一致的
Donor: 表示该节点被选为Donor节点,正在为新加进来的节点进行全量数据同步,此时该节点对客户端不提供服务
在节点1, mysql -u root -p
登录mysql,创建数据库,并建表,填充数据。
create database test;
use test;
create table t1(a int);
insert into t1 values(1);
如下所示
在节点2,也建一个表,填充数据。
use test;
create table t2(a int);
insert into t2 values(2);
同理,在节点3,也建一个表,填充数据。
use test;
create table t3(a int);
insert into t3 values(3);
然后,随机选一个节点,来查询刚刚输入的信息。
select t1.a,t2.a,t3.a from test.t1,test.t2,test.t3;
效果如下所示,在任一一个节点上可以查出刚刚在三个节点上输入的信息。
8,其它测试
单个节点挂掉不影响其它节点正常对外的读写操作。
增加节点,我的电脑已经没有条件在装一台虚拟机了。
之前的配置文件是刚开始测试所必须的最简版。这里我汇总整理了所有的可配置项,供你上生产运营环境的时候,增加相关配置。
如果设置为1(默认值),将根据集群的大小以及集群大小的变化自动调整auto_increment_increment和auto_increment_offset变量。 这样可以避免由于auto_increment而引起的复制冲突。 在主从环境中,可以设置为OFF。
如果设置为ON(默认为OFF),则在整个集群中强制执行读取提交的特征。 如果主设备比从设备更快地应用事件,则两者可能会短暂地不同步。 在将此变量设置为ON的情况下,从站将等待事件应用,然后再处理其他查询。 设置为ON也将导致更大的读取延迟。
说明:要在集群中使用的认证规则。 可能的值为:
strict:可能会导致更多认证失败的更严格的规则。 例如,对于外键,如果不同的节点大约在同一时间收到指向父表中同一行的无冲突插入,则可能导致认证失败
optimized:宽松的规则,允许更多的并发性,并减少更少的认证失败。
说明:设置为“开”(默认值)时,将自动为没有一个表的表生成主键。 这对于并行应用是必需的,强烈建议对所有表使用。
说明:启动时要连接的群集节点的地址,例如gcomm://192.168.0.1:1234?gmcast.listen_addr = 0.0.0.0:2345。 优良作法是以gcomm:// <node1或ip:port>,<node2或ip2:port>,<node3或ip3:port>的形式指定所有可能的群集节点。 指定一个空ip(gcomm://)将导致该节点启动新群集(不应在my.cnf文件中完成此操作,因为每次重新启动后,服务器将不会重新加入当前群集)。 在某些配置中,可以在运行时更改该变量,这将导致节点关闭与任何当前群集的连接,并连接至新地址。 如果指定端口,请注意这是Galera端口,而不是MariaDB端口。
描述:集群的名称。 节点无法连接到名称不同的集群,因此在同一集群中的所有节点上都必须相同。
说明:将LOCK / UNLOCK TABLES语句转换为BEGIN和COMMIT。 主要用于使较旧的应用程序与多主机设置一起使用,请谨慎使用,因为这可能会导致极大的写入集。
说明:wsrep提供程序将在其中存储其内部文件的目录。
说明:用于将DBUG选项传递给wsrep提供程序。
说明:当设置为ON(默认为OFF)时,调试消息也将记录到错误日志中。
描述:当节点接收到的写集超出其可应用的数量时,事务将放入接收的队列中。 如果节点的接收队列等待应用的写入集过多(如gcs.fc_limit WSREP提供程序选项所定义),则该节点通常将使用Flow Control。 但是,当此选项设置为ON时,将为取消同步的节点禁用Flow Control。 取消同步的节点将一直处理接收到的队列,直到达到可管理的大小为止。 已取消同步的节点继续从群集中的其他节点接收写集。 群集中的其他节点不等待不同步的节点赶上,因此,不同步的节点可能甚至落在群集中的其他节点之后。 您可以通过检查wsrep_local_state_comment状态变量是否等于Donor / Desynced来检查节点是否被取消同步。
说明:默认情况下,当不与组同步时(wsrep_ready = OFF),节点将拒绝除SET和SHOW之外的所有查询。 如果wsrep_dirty_reads设置为1,则该节点将接受不更改数据的查询,例如SELECT查询(脏读),创建prepare语句等。
说明:如果设置为ON,则启用Drupal / MySQL / InnoDB错误#282555的解决方法。 这是一个错误,在某些情况下,将DEFAULT值插入到AUTO_INCREMENT列中时,可能会返回重复的键错误。
说明:一种二进制日志格式,它将覆盖所有会话二进制日志格式设置。
说明:此系统变量定义用于wsrep GTID模式的GTID域ID。
当wsrep_gtid_mode设置为ON时,所有Galera Cluster写集都将使用wsrep_gtid_domain_id代替gtid_domain_id。
当wsrep_gtid_mode设置为OFF时,将忽略wsrep_gtid_domain_id,以实现向后兼容。
为了使此模式生成一致的GTID,还需要满足一些其他要求。
说明:Wsrep GTID模式尝试使所有群集节点上的Galera Cluster写入集的GTID保持一致。 在SST期间,GTID状态最初会复制到联接节点。 如果您打算将Galera Cluster与MariaDB复制一起使用,则wsrep GTID模式可能会有所帮助。
当wsrep_gtid_mode设置为ON时,所有Galera Cluster写集都将使用wsrep_gtid_domain_id代替gtid_domain_id。
当wsrep_gtid_mode设置为OFF时,将忽略wsrep_gtid_domain_id,以实现向后兼容。
为了使此模式生成一致的GTID,还需要满足一些其他要求。
说明:内部服务器使用情况,手动设置WSREP GTID seqno。
说明:如果设置,将忽略复制错误。
说明:如果设置为ON(MariaDB 10.4.2和更低版本的默认设置),则LOAD DATA INFILE通过引入事务拆分来支持大数据文件。 该设置已在Galera 4中弃用,并且从MariaDB 10.4.3默认为OFF。
说明:如果设置为ON(默认为OFF),则会记录群集中发生冲突的MDL以及InnoDB锁的详细信息。
说明:每个写入集允许的最大行数。 在MariaDB Galera 10.0.27和MariaDB 10.1.17之前,此变量在内部被忽略,并且对节点没有影响。 从MariaDB Galera 10.0.27和MariaDB 10.1.17起,已添加了对此变量的支持,并且为了向后兼容,默认值已更改为0,这实际上允许写集为任意大小。
说明:每个写入集允许的最大大小(以字节为单位)。 超出此限制的Writeset将被拒绝。 请注意,MariaDB 10.1.17和MariaDB Galera 10.0.27以及之前的版本允许将最大值设置为2GB以上,这被Galera拒绝。
说明:确定分组在一起的复制事件的数量。 实验实现旨在在单个从站面临大量提交时间延迟时帮助解决瓶颈问题。 如果设置为0(默认值),则没有分组。
说明:指定节点的网络地址,格式为ip address [:port]。 从MariaDB 10.1.8开始,支持IPv6。 节点的默认行为是拉取系统上第一个网络接口的地址和默认的Galera端口。 这种自动猜测可能不可靠,尤其是在以下情况下:
云部署
容器部署
具有多个网络接口的服务器。
运行多个节点的服务器。
网络地址转换(NAT)。
节点在多个区域中的群集。
说明:这是节点用来侦听客户端连接的地址。 如果未指定地址或将其设置为AUTO(默认),则mysqld使用--bind-address或--wsrep-node-address,或尝试以相同顺序从可用网络接口列表中获取一个地址。
描述:此节点的名称。 此名称可以在wsrep_sst_donor中用作首选供体。 请注意,群集中的多个节点可以具有相同的名称。
说明:每次节点状态或集群成员资格更改时要执行的命令。 可用于发出警报,配置负载均衡器等。 有关更多详细信息,请参见编码通知脚本页面。
说明:是否启用wsrep复制。 如果全局值设置为OFF(MariaDB 10.1以来的默认值),则无法加载提供程序并加入集群中的节点。 如果仅将会话值设置为OFF,则该特定会话的操作不会在群集中复制,但其他会话和应用程序线程将照常继续。 变量的会话值不会影响节点的成员身份,因此,无论其值如何,节点都会不断从群集中的其他节点接收更新。 在MariaDB 10.1之前,即使该变量默认情况下为ON,其值也会根据是否已指定强制配置以打开Galera复制而自动调整。 从MariaDB 10.1开始,默认情况下将其设置为OFF,并且必须启用它才能启用Galera复制。
说明:在线模式升级方法。 默认值为TOI,指定不带可选参数的设置将设置为RSU。
TOI:总订单隔离。 在每个群集节点中,对于其他事务,将以相同的顺序处理DDL,从而确保数据的一致性。 但是,数据库的受影响部分将为整个群集锁定。
RSU:滚动架构升级。 DDL处理仅在节点上本地完成,用户需要在每个节点上手动执行更改。 在进行处理以避免阻塞其他节点的同时,该节点与群集的其余部分不同步。 模式更改必须以与基于ROW的复制相同的方式向后兼容,以避免在单个节点上完成DDL处理并重新开始复制时中断复制。
说明:Wsrep修补程序版本,例如wsrep_25.10。
描述:wsrep库的位置,通常在Debian和Ubuntu上为/usr/lib/libgalera_smm.so,在Red Hat / CentOS上通常为/usr/lib64/libgalera_smm.so。
说明:用分号(;)分隔的wsrep选项列表。
说明:如果在服务器启动时将其设置为ON,则服务器将恢复Galera应用的最新写入集的序列号,并将其输出到stderr,通常将其重定向到错误日志。 此时,服务器将退出。 可以将此序列号提供给wsrep_start_position系统变量。
说明:设置为拒绝来自客户端连接的查询的变量,对维护很有用。 该节点继续应用写集,但是客户端查询生成错误1047:未知命令错误。
NONE-未设置。 查询将照常处理。
ALL-来自客户端连接的所有查询将被拒绝,但现有的客户端连接将保留。
ALL_KILL来自客户端连接的所有查询将被拒绝,现有的客户端连接(包括当前的客户端连接)将被立即终止。
说明:是否将复制MyISAM表的DML更新。 此功能仍处于试验阶段,不应在生产系统中使用。
说明:如果设置为ON,则当节点重新加入群集时,复制从属会自动重新启动。
说明:在将错误返回给客户端之前,由于群集范围内的冲突而导致重试自动提交的查询的次数。 如果设置为0,将不尝试重试,而值1(默认值)或更大将指定尝试的重试次数。 有助于使用自动提交来避免死锁的应用程序。
说明:如果设置为ON(默认值),则应用程序从属线程执行外键约束检查。
说明:用于并行应用Galera写集的从属线程数。 Galera从属线程能够确定可以安全并行应用哪些写集。 但是,如果您的群集节点似乎经常出现一致性问题,那么将该值设置为1可能会解决此问题。 有关更多信息,请参见关于Galera复制:Galera从属线程。
说明:如果设置为ON,则应用程序从属线程执行辅助索引唯一性检查。
说明:用于流式复制片段的存储。
描述:用于复制的用户名和密码。 如果wsrep_sst_method设置为rsync,则未使用,而对于其他方法,它的格式应为<user>:<password>。 内容在日志中以及使用SHOW VARIABLES查询值时被屏蔽。
说明:以逗号分隔的列表(从5.5.33起)或作为捐赠者的服务器名称(按照wsrep_node_name)或状态转移的源(按优先顺序排列)。通常,施主选择算法更喜欢一个施主,该施主只能将丢失的事务(IST)转移到合并节点,而不是完整状态(SST)。因此,它首先在给定的施主列表中寻找一个具有IST功能的节点,然后是集群中的其余节点。如果在指定的施主列表之外找到多个候选节点,则首选与连接器位于同一段(gmcast.segment)中的节点。如果集群中的现有节点都无法通过IST服务丢失的事务,则该算法会继续寻找合适的节点以传输整个状态(SST)。首先查看供体列表中指定的节点(不考虑其段)。如果仍然找不到合适的施主,则仅在施主列表具有“终止逗号”的情况下,检查其余施主节点的适用性。请注意,无状态节点(Galera仲裁器)永远不能成为施主。
说明:如果设置为ON(默认为OFF),施主节点将拒绝传入的查询,并返回UNKNOWN COMMAND错误代码。 可以用于通知负载均衡器节点不可用。
说明:用于进行状态快照传输(SST)的方法
说明:这是群集中其他节点(供体)连接以发送状态转移更新的地址。 如果未指定地址或将其设置为AUTO(默认),则mysqld使用--wsrep_node_address的值作为接收地址。 但是,如果未设置--wsrep_node_address,它将使用--bind-address中的地址,或尝试以相同顺序从可用网络接口列表中获取一个地址。 注意:将其设置为localhost将使在其他主机上运行的节点无法到达该节点。
说明:节点应使用的起始位置,格式为:UUID:seq_no。 可以使用wsrep_recover恢复用于该位置的正确值。
说明:如果设置,则拒绝不支持Galera复制的受影响表上的DDL。
说明:设置此变量可确保在执行由值指定的类型的操作之前进行因果关系检查,以确保在完全同步的节点上执行该语句。进行检查时,将在节点上阻止新查询,以使服务器能够赶上群集中进行的所有更新,直到检查开始为止。到达后,将在节点上执行原始查询。这会导致更高的延迟。请注意,当wsrep_dirty_reads设置为ON时,wsrep_sync_wait的值将变得无关紧要。样本用法(对于必须具有最新数据的关键读取)SET SESSION wsrep_sync_wait = 1;选择 ...; SET SESSION wsrep_sync_wait = 0;
0-禁用(默认)
1-读取(选择和开始/开始事务)。直到MariaDB 10.2.8,MariaDB 10.1.26,MariaDB Galera 10.0.31和MariaDB Galera 5.5.56(也显示)。这与wsrep_causal_reads = 1相同。
2-更新和删除;
3-读取,更新和删除;
4-插入和更换;
5-读取,插入和替换;
6-更新,删除,插入和替换;
7-读取,更新,删除,插入和替换;
8-显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
9-读取和显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
10-更新,删除和显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
11-读取,更新,删除和显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
12-插入,替换和显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
13-读取,插入,替换和显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
14-更新,删除,插入,替换和显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
15-读取,更新,删除,插入,替换和显示(来自MariaDB 10.2.9,MariaDB 10.1.27,MariaDB Galera 10.0.32,MariaDB Galera 5.5.57)
描述:用于流复制的事务片段的大小(以wsrep_trx_fragment_unit指定的单位度量)
说明:流复制事务片段大小的单位:
字节:交易的Binlog事件缓冲区大小(以字节为单位)
行:受事务影响的行数
语句:在多语句事务中执行的SQL语句数
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30