介绍 galera cluster 原理的文章已经有一大堆了, 百度几篇看一看就能有相关了解, 这里就不赘述了. 本文主要侧重实操, 因为跟着百度前几页的搭建教程或多或少都有坑, 前后配置逻辑矛盾的也有. 终于, 经过几个通宵的 bug 修复, 反复验证, 力求以最简洁的代码, 最少的操作量, 最直白的逻辑来完成集群的搭建. 因为操作过程中, 网上对 wsrep 相关参数的介绍少之又少, 所以最后特别写了完整版的参数说明, 供搭建成功后, 各种测试调试使用, 对于这些参数有坑的地方, 欢迎在底下留言, 供大家参考, 谢谢.
对于 MySQL 的集群方案, 我之前总结过, 详情点击查看, 多图文, 详细介绍 MySQL 各个集群方案
一, 需求了解
Galera Cluster 需要至少三个节点的服务器硬件.
如果群集在单个交换机上运行, 请使用三个节点. 如果您的群集跨越多个交换机, 请使用三个交换机. 如果您的群集跨越网络, 请使用三个网络. 如果您的群集跨越数据中心, 请使用三个数据中心. 这样可以确保在网络中断的情况下, 群集可以维护主组件.
1, 硬体需求
对于服务器硬件, 每个节点至少需要以下组件:
1 GHz 单核 CPU;
512 MB RAM;
100 Mbps 网络连接;
注意: Galera Cluster 可能会由于内存不足而在有限的硬件上运行时偶尔崩溃. 为避免这种情况, 请确保分配了足够的交换空间.
2, 软件需求
对于软件, 群集中的每个节点至少需要以下条件:
已安装 Linux 或 FreeBSD 操作系统;
带有 wsrep API 补丁的 MySQL 或 MariaDB 服务器, 已安装 Galera 复制插件.
注意: Galera Cluster 的二进制安装软件包包括带有 wsrep API 补丁的数据库服务器. 但是, 从源构建时, 必须手动应用此修补程序.
二, 准备服务器
在开始安装过程之前, 需要完成一些任务以为 Galera Cluster 准备服务器. 您必须在集群中的每个节点上执行以下步骤.
1, 配置 SELinux
如果在服务器上启用了 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 https://blogs.oracle.com/jsmyth/selinux-and-mysql
2, 配置防火墙
接下来需要更新每个节点上的防火墙设置, 以便它们可以与群集通信. 具体执行方式取决于您的发行版和所使用的特定防火墙软件. 在这里我看了看防火墙状态 firewall-cmd --state , 就直接把它关闭了.
- systemctl stop firewalld.service
- systemctl disable firewalld.service
有关为 Galera Cluster 设置防火墙以及其他用于在 Linux 和 FreeBSD 中配置数据包过滤的程序的详细信息, 请参阅防火墙设置.
3, 禁用 AppArmor
默认情况下, 某些服务器 (例如 Ubuntu) 包括 AppArmor, 这可能会阻止 mysqld 打开其他端口或运行脚本. 您必须禁用 AppArmor 或对其进行配置, 以允许 mysqld 运行外部程序并在非特权端口上打开侦听套接字. 在这里我就禁用 AppArmor 了.
ln -s /etc/apparmor.d/usr /etc/apparmor.d/disable/.sbin.mysqld
输入效果如下所示, 因为我是 CentOS, 不是 Ubuntu 的, 所以禁用 APPArmor 是不需要的操作, 这里只是为了演示.
三, 安装 Galera 群集
1, 依赖包准备
安装过程十有八九会报错, 会提示依赖检测失败, 请按照提示, 下载相关依赖. 这是我依据下面的安装顺序进行安装而报错, 我为此逐个而安装的依赖. 我的 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
2, 下载, 安装
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
最终效果如下所示
3, 修改配置
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
是不一样的.
4, 启动第一个节点
启动第一个节点以前, 其节点的配置文件里面, 不能配置其它节点的 ip, 即 wsrep_cluster_address=gcomm:// 这样就行了, 否则会导致启动报错. 待集群启动后, 再修改它的配置文件, 把其他节点的 ip 补充上去.
启动第一个节点, 该命令会启动本机的 mysqld 服务, 命令只在集群第一个节点启动时使用, 因为该脚本中带有一个参数:-wsrep-new-cluster, 代表新建集群.
/usr/bin/mysqld_bootstrap
查看 mysqld 服务状态, 判断是否成功启动, 并创建了新集群.
systemctl status mysqld
效果图如下所示
5, 启动其它节点
逐个启动其它节点的服务, 并查看是否启动成功.
- systemctl start mysqld
- systemctl status mysqld
可以看到, 节点已经启动.
6, 集群验证
因为数据库刚刚初始化, 超级用户 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 节点, 正在为新加进来的节点进行全量数据同步, 此时该节点对客户端不提供服务
7, 数据复制验证
在节点 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, 其它测试
单个节点挂掉不影响其它节点正常对外的读写操作.
增加节点, 我的电脑已经没有条件在装一台虚拟机了.
四, wsrep 配置一览
之前的配置文件是刚开始测试所必须的最简版. 这里我汇总整理了所有的可配置项, 供你上生产运营环境的时候, 增加相关配置.
wsrep_auto_increment_control
如果设置为 1(默认值), 将根据集群的大小以及集群大小的变化自动调整 auto_increment_increment 和 auto_increment_offset 变量. 这样可以避免由于 auto_increment 而引起的复制冲突. 在主从环境中, 可以设置为 OFF.
wsrep_causal_reads
如果设置为 ON(默认为 OFF), 则在整个集群中强制执行读取提交的特征. 如果主设备比从设备更快地应用事件, 则两者可能会短暂地不同步. 在将此变量设置为 ON 的情况下, 从站将等待事件应用, 然后再处理其他查询. 设置为 ON 也将导致更大的读取延迟.
wsrep_certification_rules
说明: 要在集群中使用的认证规则. 可能的值为:
strict: 可能会导致更多认证失败的更严格的规则. 例如, 对于外键, 如果不同的节点大约在同一时间收到指向父表中同一行的无冲突插入, 则可能导致认证失败
optimized: 宽松的规则, 允许更多的并发性, 并减少更少的认证失败.
wsrep_certify_nonPK
说明: 设置为 "开"(默认值)时, 将自动为没有一个表的表生成主键. 这对于并行应用是必需的, 强烈建议对所有表使用.
wsrep_cluster_address
说明: 启动时要连接的群集节点的地址, 例如 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 端口.
wsrep_cluster_name
描述: 集群的名称. 节点无法连接到名称不同的集群, 因此在同一集群中的所有节点上都必须相同.
wsrep_convert_LOCK_to_trx
说明: 将 LOCK / UNLOCK TABLES 语句转换为 BEGIN 和 COMMIT. 主要用于使较旧的应用程序与多主机设置一起使用, 请谨慎使用, 因为这可能会导致极大的写入集.
wsrep_data_home_dir
说明: wsrep 提供程序将在其中存储其内部文件的目录.
wsrep_dbug_option
说明: 用于将 DBUG 选项传递给 wsrep 提供程序.
wsrep_debug
说明: 当设置为 ON(默认为 OFF)时, 调试消息也将记录到错误日志中.
wsrep_desync
描述: 当节点接收到的写集超出其可应用的数量时, 事务将放入接收的队列中. 如果节点的接收队列等待应用的写入集过多(如 gcs.fc_limit WSREP 提供程序选项所定义), 则该节点通常将使用 Flow Control. 但是, 当此选项设置为 ON 时, 将为取消同步的节点禁用 Flow Control. 取消同步的节点将一直处理接收到的队列, 直到达到可管理的大小为止. 已取消同步的节点继续从群集中的其他节点接收写集. 群集中的其他节点不等待不同步的节点赶上, 因此, 不同步的节点可能甚至落在群集中的其他节点之后. 您可以通过检查 wsrep_local_state_comment 状态变量是否等于 Donor / Desynced 来检查节点是否被取消同步.
wsrep_dirty_reads
说明: 默认情况下, 当不与组同步时(wsrep_ready = OFF), 节点将拒绝除 SET 和 SHOW 之外的所有查询. 如果 wsrep_dirty_reads 设置为 1, 则该节点将接受不更改数据的查询, 例如 SELECT 查询(脏读), 创建 prepare 语句等.
wsrep_drupal_282555_workaround
说明: 如果设置为 ON, 则启用 Drupal / MySQL / InnoDB 错误#282555 的解决方法. 这是一个错误, 在某些情况下, 将 DEFAULT 值插入到 AUTO_INCREMENT 列中时, 可能会返回重复的键错误.
wsrep_forced_binlog_format
说明: 一种二进制日志格式, 它将覆盖所有会话二进制日志格式设置.
wsrep_gtid_domain_id
说明: 此系统变量定义用于 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_mode
说明: 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_seq_no
说明: 内部服务器使用情况, 手动设置 WSREP GTID seqno.
wsrep_ignore_apply_errors
说明: 如果设置, 将忽略复制错误.
wsrep_load_data_splitting
说明: 如果设置为 ON(MariaDB 10.4.2 和更低版本的默认设置), 则 LOAD DATA INFILE 通过引入事务拆分来支持大数据文件. 该设置已在 Galera 4 中弃用, 并且从 MariaDB 10.4.3 默认为 OFF.
wsrep_log_conflicts
说明: 如果设置为 ON(默认为 OFF), 则会记录群集中发生冲突的 MDL 以及 InnoDB 锁的详细信息.
wsrep_max_ws_rows
说明: 每个写入集允许的最大行数. 在 MariaDB Galera 10.0.27 和 MariaDB 10.1.17 之前, 此变量在内部被忽略, 并且对节点没有影响. 从 MariaDB Galera 10.0.27 和 MariaDB 10.1.17 起, 已添加了对此变量的支持, 并且为了向后兼容, 默认值已更改为 0, 这实际上允许写集为任意大小.
wsrep_max_ws_size
说明: 每个写入集允许的最大大小(以字节为单位). 超出此限制的 Writeset 将被拒绝. 请注意, MariaDB 10.1.17 和 MariaDB Galera 10.0.27 以及之前的版本允许将最大值设置为 2GB 以上, 这被 Galera 拒绝.
wsrep_mysql_replication_bundle
说明: 确定分组在一起的复制事件的数量. 实验实现旨在在单个从站面临大量提交时间延迟时帮助解决瓶颈问题. 如果设置为 0(默认值), 则没有分组.
wsrep_node_address
说明: 指定节点的网络地址, 格式为 ip address [:port]. 从 MariaDB 10.1.8 开始, 支持 IPv6. 节点的默认行为是拉取系统上第一个网络接口的地址和默认的 Galera 端口. 这种自动猜测可能不可靠, 尤其是在以下情况下:
云部署
容器部署
具有多个网络接口的服务器.
运行多个节点的服务器.
网络地址转换(NAT).
节点在多个区域中的群集.
wsrep_node_incoming_address
说明: 这是节点用来侦听客户端连接的地址. 如果未指定地址或将其设置为 AUTO(默认), 则 mysqld 使用 --bind-address 或 --wsrep-node-address, 或尝试以相同顺序从可用网络接口列表中获取一个地址.
wsrep_node_name
描述: 此节点的名称. 此名称可以在 wsrep_sst_donor 中用作首选供体. 请注意, 群集中的多个节点可以具有相同的名称.
wsrep_notify_cmd
说明: 每次节点状态或集群成员资格更改时要执行的命令. 可用于发出警报, 配置负载均衡器等. 有关更多详细信息, 请参见编码通知脚本页面.
wsrep_on
说明: 是否启用 wsrep 复制. 如果全局值设置为 OFF(MariaDB 10.1 以来的默认值), 则无法加载提供程序并加入集群中的节点. 如果仅将会话值设置为 OFF, 则该特定会话的操作不会在群集中复制, 但其他会话和应用程序线程将照常继续. 变量的会话值不会影响节点的成员身份, 因此, 无论其值如何, 节点都会不断从群集中的其他节点接收更新. 在 MariaDB 10.1 之前, 即使该变量默认情况下为 ON, 其值也会根据是否已指定强制配置以打开 Galera 复制而自动调整. 从 MariaDB 10.1 开始, 默认情况下将其设置为 OFF, 并且必须启用它才能启用 Galera 复制.
wsrep_OSU_method
说明: 在线模式升级方法. 默认值为 TOI, 指定不带可选参数的设置将设置为 RSU.
TOI: 总订单隔离. 在每个群集节点中, 对于其他事务, 将以相同的顺序处理 DDL, 从而确保数据的一致性. 但是, 数据库的受影响部分将为整个群集锁定.
RSU: 滚动架构升级. DDL 处理仅在节点上本地完成, 用户需要在每个节点上手动执行更改. 在进行处理以避免阻塞其他节点的同时, 该节点与群集的其余部分不同步. 模式更改必须以与基于 ROW 的复制相同的方式向后兼容, 以避免在单个节点上完成 DDL 处理并重新开始复制时中断复制.
wsrep_patch_version
说明: Wsrep 修补程序版本, 例如 wsrep_25.10.
wsrep_provider
描述: wsrep 库的位置, 通常在 Debian 和 Ubuntu 上为 / usr/lib/libgalera_smm.so, 在 Red Hat / CentOS 上通常为 / usr/lib64/libgalera_smm.so.
wsrep_provider_options
说明: 用分号 (;) 分隔的 wsrep 选项列表.
wsrep_recover
说明: 如果在服务器启动时将其设置为 ON, 则服务器将恢复 Galera 应用的最新写入集的序列号, 并将其输出到 stderr, 通常将其重定向到错误日志. 此时, 服务器将退出. 可以将此序列号提供给 wsrep_start_position 系统变量.
wsrep_reject_queries
说明: 设置为拒绝来自客户端连接的查询的变量, 对维护很有用. 该节点继续应用写集, 但是客户端查询生成错误 1047: 未知命令错误.
NONE - 未设置. 查询将照常处理.
ALL - 来自客户端连接的所有查询将被拒绝, 但现有的客户端连接将保留.
ALL_KILL 来自客户端连接的所有查询将被拒绝, 现有的客户端连接 (包括当前的客户端连接) 将被立即终止.
wsrep_replicate_myisam
说明: 是否将复制 MyISAM 表的 DML 更新. 此功能仍处于试验阶段, 不应在生产系统中使用.
wsrep_restart_slave
说明: 如果设置为 ON, 则当节点重新加入群集时, 复制从属会自动重新启动.
wsrep_retry_autocommit
说明: 在将错误返回给客户端之前, 由于群集范围内的冲突而导致重试自动提交的查询的次数. 如果设置为 0, 将不尝试重试, 而值 1(默认值)或更大将指定尝试的重试次数. 有助于使用自动提交来避免死锁的应用程序.
wsrep_slave_FK_checks
说明: 如果设置为 ON(默认值), 则应用程序从属线程执行外键约束检查.
wsrep_slave_threads
说明: 用于并行应用 Galera 写集的从属线程数. Galera 从属线程能够确定可以安全并行应用哪些写集. 但是, 如果您的群集节点似乎经常出现一致性问题, 那么将该值设置为 1 可能会解决此问题. 有关更多信息, 请参见关于 Galera 复制: Galera 从属线程.
wsrep_slave_UK_checks
说明: 如果设置为 ON, 则应用程序从属线程执行辅助索引唯一性检查.
wsrep_sr_store
说明: 用于流式复制片段的存储.
wsrep_sst_auth
描述: 用于复制的用户名和密码. 如果 wsrep_sst_method 设置为 rsync, 则未使用, 而对于其他方法, 它的格式应为:. 内容在日志中以及使用 SHOW VARIABLES 查询值时被屏蔽.
wsrep_sst_donor
说明: 以逗号分隔的列表 (从 5.5.33 起) 或作为捐赠者的服务器名称 (按照 wsrep_node_name) 或状态转移的源 (按优先顺序排列). 通常, 施主选择算法更喜欢一个施主, 该施主只能将丢失的事务(IST) 转移到合并节点, 而不是完整状态 (SST). 因此, 它首先在给定的施主列表中寻找一个具有 IST 功能的节点, 然后是集群中的其余节点. 如果在指定的施主列表之外找到多个候选节点, 则首选与连接器位于同一段(gmcast.segment) 中的节点. 如果集群中的现有节点都无法通过 IST 服务丢失的事务, 则该算法会继续寻找合适的节点以传输整个状态 (SST). 首先查看供体列表中指定的节点(不考虑其段). 如果仍然找不到合适的施主, 则仅在施主列表具有 "终止逗号" 的情况下, 检查其余施主节点的适用性. 请注意, 无状态节点(Galera 仲裁器) 永远不能成为施主.
wsrep_sst_donor_rejects_queries
说明: 如果设置为 ON(默认为 OFF), 施主节点将拒绝传入的查询, 并返回 UNKNOWN COMMAND 错误代码. 可以用于通知负载均衡器节点不可用.
wsrep_sst_method
说明: 用于进行状态快照传输 (SST) 的方法
wsrep_sst_receive_address
说明: 这是群集中其他节点 (供体) 连接以发送状态转移更新的地址. 如果未指定地址或将其设置为 AUTO(默认), 则 mysqld 使用 --wsrep_node_address 的值作为接收地址. 但是, 如果未设置 --wsrep_node_address, 它将使用 --bind-address 中的地址, 或尝试以相同顺序从可用网络接口列表中获取一个地址. 注意: 将其设置为 localhost 将使在其他主机上运行的节点无法到达该节点.
wsrep_start_position
说明: 节点应使用的起始位置, 格式为: UUID:seq_no. 可以使用 wsrep_recover 恢复用于该位置的正确值.
wsrep_strict_ddl
说明: 如果设置, 则拒绝不支持 Galera 复制的受影响表上的 DDL.
wsrep_sync_wait
说明: 设置此变量可确保在执行由值指定的类型的操作之前进行因果关系检查, 以确保在完全同步的节点上执行该语句. 进行检查时, 将在节点上阻止新查询, 以使服务器能够赶上群集中进行的所有更新, 直到检查开始为止. 到达后, 将在节点上执行原始查询. 这会导致更高的延迟. 请注意, 当 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_size
描述: 用于流复制的事务片段的大小(以 wsrep_trx_fragment_unit 指定的单位度量)
wsrep_trx_fragment_unit
说明: 流复制事务片段大小的单位:
字节: 交易的 Binlog 事件缓冲区大小(以字节为单位)
行: 受事务影响的行数
语句: 在多语句事务中执行的 SQL 语句数
来源: https://www.cnblogs.com/lgx211/p/12470046.html