当前位置: 首页 > 工具软件 > MySQL/Galera > 使用案例 >

CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE

鱼安然
2023-12-01

CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE

一、前言

Galera Cluster for MySQL is a true Multi-Master Cluster based on synchronous replication.

Galera Cluster需要至少三个节点的服务器硬件。Galera Cluster由两部分组成:Galera复制库(galera-4)和使用写集复制(WSREP)API扩展的MySQL版本(mysql-wsrep)。

下载地址:

Galera Cluster

二、准备

主机名IP
node1192.168.198.131
node2192.168.198.135

注意: Galera Cluster集群至少3个节点,实际使用中使用2个节点也是可以搭建成功的,但是不适合在生产环境。因为在“选主”过程中,若为2个节点时,容易造成集群“脑裂”,特别是在同时启动2个节点时,出现“脑裂”概率更大。

三、安装

cat > /etc/yum.repos.d/galera.repo <<-END
[galera]
name = Galera
baseurl = http://releases.galeracluster.com/galera-4/centos/7/x86_64/
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1
[mysql-wsrep]
name = MySQL-wsrep
baseurl = http://releases.galeracluster.com/mysql-wsrep-8.0/centos/7/x86_64/
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1
END

yum makecache
yum -y install gcc gcc-c++ openssl openssl-devel lsof socat perl boost-devel rsync jemalloc libaio libaio-devel net-tools
yum install -y galera-4 mysql-wsrep-8.0

四、基础配置

1.关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

2.关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

或者

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --reload

3.禁用服务

systemctl disable iptables.service;
systemctl disable firewalld.service;
systemctl disable cups.service;
systemctl disable ip6tables.service;
systemctl disable firstboot-graphical.service;
systemctl disable postfix.service;
systemctl disable NetworkManager.service;
systemctl disable avahi-daemon.service;

4.启用服务

systemctl enable crond.service;
systemctl enable sshd.service;
systemctl enable sysstat.service;
systemctl enable network.service;

5.系统调优

cat >> /etc/sysctl.conf  << EOF
kernel.shmmni = 4096
kernel.shmall = $[`free | tr [:blank:] \\\n | grep [0-9] | sed -n '1p'`*1024/4096]
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65000
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.file-max = 6815744
fs.aio-max-nr = 1048576
fs.suid_dumpable = 1
kernel.panic_on_oops = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
EOF

cat >> /etc/security/limits.conf << EOF
*        soft   stack         10240
*        soft   nproc         2047
*        hard   nproc         16384
*        soft   nofile        2048
*        hard   nofile        65536
*        soft   memlock       3145728
*        hard   memlock       3145728
EOF

cat >> /etc/pam.d/login << EOF
session  required pam_limits.so
EOF

sysctl -p

6.hosts及主机名(node1、node2)

cat >> /etc/hosts << EOF
192.168.198.131 node1
192.168.198.135 node2
EOF

设置主机名

hostnamectl set-hostname node1
hostnamectl set-hostname node1

五、配置

1./etc/my.cnf配置

  • node1
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

server_id=1
log_timestamps=SYSTEM
lower_case_table_names=1
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=128M
binlog_format=ROW
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_node_name="node1"
wsrep_node_address="192.168.198.131"
wsrep_cluster_name="test"
wsrep_cluster_address="gcomm://192.168.198.131,192.168.198.135"
wsrep_provider_options="gcache.size=128M; gcache.page_size=128M"
wsrep_slave_threads=4
wsrep_sst_method=rsync
wsrep_sst_auth=rsync:rsync123

[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

[mysqldump]
socket=/var/lib/mysql/mysql.sock
max_allowed_packet = 512M

[mysqld_safe]
# 内存分配算法调优(默认malloc)
malloc-lib=/usr/lib64/libjemalloc.so.1

[mysqladmin]
socket=/var/lib/mysql/mysql.sock

  • node2:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

server_id=2
log_timestamps=SYSTEM
lower_case_table_names=1
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=128M
binlog_format=ROW
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_node_name="node2"
wsrep_node_address="192.168.198.135"
wsrep_cluster_name="test"
wsrep_cluster_address="gcomm://192.168.198.131,192.168.198.135"
wsrep_provider_options="gcache.size=128M; gcache.page_size=128M"
wsrep_slave_threads=4
wsrep_sst_method=rsync
wsrep_sst_auth=rsync:rsync123

[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

[mysqldump]
socket=/var/lib/mysql/mysql.sock
max_allowed_packet = 512M

[mysqld_safe]
# 内存分配算法调优(默认malloc)
malloc-lib=/usr/lib64/libjemalloc.so.1

[mysqladmin]
socket=/var/lib/mysql/mysql.sock

2.初始化node1

临时将node1的/etc/my.cnf 属性wsrep_cluster_address="gcomm://192.168.198.131,192.168.198.135"改为wsrep_cluster_address="gcomm://",然后执行以下命令

vim /etc/my.cnf
wsrep_cluster_address="gcomm://"
#wsrep_cluster_address="gcomm://192.168.198.131,192.168.198.135"
/usr/bin/mysqld_bootstrap
systemctl status mysqld
mysql_pass=`grep 'password is generated' /var/log/mysqld.log |awk '{print $NF}' |awk 'END{print}'` && echo $mysql_pass
mysqladmin -u root -p${mysql_pass} password '123456'

3.启动MySQL

先启动node2 mysqld服务,启动成功后,使用修改后的密码登录,测试是否成功!成功之后,将node1的/etc/my.cnf 属性改回wsrep_cluster_address="gcomm://192.168.198.131,192.168.198.135",然后重启node1 mysqld服务。(注意操作顺序)

  • node2
systemctl start mysqld
systemctl status mysqld
mysql -uroot -p
  • node1
vim /etc/my.cnf
#wsrep_cluster_address="gcomm://"
wsrep_cluster_address="gcomm://192.168.198.131,192.168.198.135"
systemctl status mysqld
  • 集群状态查询
show status like 'wsrep_local_state_comment';
show status like 'wsrep_cluster_size';

Open:节点启动成功,尝试连接到集群

Primary: 节点已处于集群中,在新节点加入时,选取donor进行数据库同步时会产生的状态
Joiner: 节点处于等待接收或正在接收同步文件的状态
Joined: 节点完成数据同步,但还有部分数据不是最新的,在追赶与集群数据一致的状态
Synced: 节点正常提供服务的状态,表示当前节点数据状态与集群数据状态是一致的
Donor: 表示该节点被选为Donor节点,正在为新加进来的节点进行全量数据同步,此时该节点对客户端不提供服务

4.创建用户

create user  'root'@'%' identified by '123456';
grant all on *.* to 'root'@'%' WITH GRANT OPTION;
flush privileges;

**说明:**用户信息也是自动同步的,因此只需要在其中一个节点执行即可!

5.MySQL集群完全关闭后如何启动?

查看每个节点grastate.dat中的safe_to_bootstrap值最大的一个作为主节点,使用bash /usr/bin/mysqld_bootstrap启动主节点创建新集群,使用systemctl status mysqld启动其余节点。

cat /var/lib/mysql/grastate.dat
bash /usr/bin/mysqld_bootstrap

六、测试

node1中创建database,node2中查看同步情况。

mysql -uroot -p

mysql> create database test;
mysql> show databases;

七.jdbc连接

jdbc:mysql:loadbalance://192.168.198.131:3306,192.168.198.135:3306/test?loadBalanceBlacklistTimeout=5000&useSSL=true

jdbc:mysql:loadbalance://192.168.198.131:3306,192.168.198.135:3306/test?loadBalanceBlacklistTimeout=5000&useSSL=false&allowPublicKeyRetrieval=true

注意:

  • useSSL=falseallowPublicKeyRetrieval=true结合使用,避免无法获取数据库连接。
  • useSSL=true或者不设置该属性,也可以正常获取数据库连接。
show global variables like '%max_connect_errors%';
-- 查询host cache 指定IP当前错误连接数
select * from performance_schema.host_cache;
``

> mysql 8 以上版本默认使用 `sha256_password` 认证
> 密码在传输过程中必须加密保护,如果无法使用 TLS,就需要使用 RSA 公钥加密
> 可以在连接字符串中通过 `ServerRSAPublicKeyFile` 指定服务器的 RSA 公钥
> 或者设置`AllowPublicKeyRetrieval=True`参数以允许客户端从服务器获取公钥
> **注意**: `AllowPublicKeyRetrieval=True`可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启。

> 说明: 
> `mysql> FLUSH HOSTS`或`mysqladmin flush-hosts -uroot -p`可以`解封IP`限制。
> `mysql> FLUSH PRIVILEGES` 可以清空校验cache,`重现`该问题。
> 正式环境下,建议执行过`mysql> FLUSH HOSTS`后,重新执行下`mysql> FLUSH PRIVILEGES`,使得TLS连接校验生效。(现象:执行`mysql> FLUSH HOSTS`后,TLS连接校验失效,`performance_schema.host_cache`表被清空,执行`mysql> FLUSH PRIVILEGES`后,TLS连接校验生效则,这样可能给人造成一种这是“偶然问题”的假象)。


**参考:**

[jdbc连接配置](https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-multi-host-connections.html)

[mysql驱动协议之loadbalance和replication](https://blog.csdn.net/weixin_33754065/article/details/92072857)

[mysql8.0禁止应用连接_Java连接MySQL8.0:Public Key Retrieval is not allowed](https://blog.csdn.net/weixin_42558758/article/details/113657278?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161899730916780274187060%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161899730916780274187060&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-11-113657278.first_rank_v2_pc_rank_v29&utm_term=allowPublicKeyRetrieval%3Dtrue)


### 八、其它(可忽略)
---
**依赖、冲突关系如下:**

```shell
[root@localhost ~]# yum install galera-4 mysql-wsrep-8.0 rsync
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * epel: mirror.sjtu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package galera-4.x86_64 0:26.4.7-1.el7 will be installed
--> Processing Dependency: libboost_program_options-mt.so.1.53.0()(64bit) for package: galera-4-26.4.7-1.el7.x86_64
---> Package mysql-wsrep-8.0.x86_64 0:8.0.22-26.5.el7 will be installed
--> Processing Dependency: mysql-wsrep-common = 8.0.22-26.5.el7 for package: mysql-wsrep-8.0-8.0.22-26.5.el7.x86_64
--> Processing Dependency: mysql-wsrep-libs = 8.0.22-26.5.el7 for package: mysql-wsrep-8.0-8.0.22-26.5.el7.x86_64
--> Processing Dependency: mysql-wsrep-client = 8.0.22-26.5.el7 for package: mysql-wsrep-8.0-8.0.22-26.5.el7.x86_64
--> Processing Dependency: mysql-wsrep-libs-compat = 8.0.22-26.5.el7 for package: mysql-wsrep-8.0-8.0.22-26.5.el7.x86_64
--> Processing Dependency: mysql-wsrep-server = 8.0.22-26.5.el7 for package: mysql-wsrep-8.0-8.0.22-26.5.el7.x86_64
---> Package rsync.x86_64 0:3.1.2-10.el7 will be installed
--> Running transaction check
---> Package boost-program-options.x86_64 0:1.53.0-28.el7 will be installed
---> Package mariadb-libs.x86_64 1:5.5.60-1.el7_5 will be obsoleted
---> Package mysql-wsrep-client.x86_64 0:8.0.22-26.5.el7 will be installed
--> Processing Dependency: mysql-wsrep-client-plugins = 8.0.22-26.5.el7 for package: mysql-wsrep-client-8.0.22-26.5.el7.x86_64
---> Package mysql-wsrep-common.x86_64 0:8.0.22-26.5.el7 will be installed
---> Package mysql-wsrep-libs.x86_64 0:8.0.22-26.5.el7 will be obsoleting
---> Package mysql-wsrep-libs-compat.x86_64 0:8.0.22-26.5.el7 will be obsoleting
---> Package mysql-wsrep-server.x86_64 0:8.0.22-26.5.el7 will be installed
--> Processing Dependency: socat for package: mysql-wsrep-server-8.0.22-26.5.el7.x86_64
--> Processing Dependency: lsof for package: mysql-wsrep-server-8.0.22-26.5.el7.x86_64
--> Running transaction check
---> Package lsof.x86_64 0:4.87-6.el7 will be installed
---> Package mysql-wsrep-client-plugins.x86_64 0:8.0.22-26.5.el7 will be installed
---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                          Arch                         Version                               Repository                         Size
=============================================================================================================================================================
Installing:
 galera-4                                         x86_64                       26.4.7-1.el7                          galera                             14 M
 mysql-wsrep-8.0                                  x86_64                       8.0.22-26.5.el7                       mysql-wsrep                       2.4 k
 mysql-wsrep-libs                                 x86_64                       8.0.22-26.5.el7                       mysql-wsrep                       4.6 M
     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5
 mysql-wsrep-libs-compat                          x86_64                       8.0.22-26.5.el7                       mysql-wsrep                       1.4 M
     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5
 rsync                                            x86_64                       3.1.2-10.el7                          base                              404 k
Installing for dependencies:
 boost-program-options                            x86_64                       1.53.0-28.el7                         base                              156 k
 lsof                                             x86_64                       4.87-6.el7                            base                              331 k
 mysql-wsrep-client                               x86_64                       8.0.22-26.5.el7                       mysql-wsrep                        48 M
 mysql-wsrep-client-plugins                       x86_64                       8.0.22-26.5.el7                       mysql-wsrep                       236 k
 mysql-wsrep-common                               x86_64                       8.0.22-26.5.el7                       mysql-wsrep                       616 k
 mysql-wsrep-server                               x86_64                       8.0.22-26.5.el7                       mysql-wsrep                       494 M
 socat                                            x86_64                       1.7.3.2-2.el7                         base                              290 k

Transaction Summary
=============================================================================================================================================================
Install  5 Packages (+7 Dependent packages)

Total download size: 564 M

若网速较慢,可直接从node1中,将cache中的packages复制给node2

scp /var/cache/yum/x86_64/7/galera/packages/* root@node2
scp /var/cache/yum/x86_64/7/mysql-wsrep/packages/* root@node2

离线安装可手动卸载mariadb-libs冲突包

rpm -qa| grep mariadb
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

mysqld 手动初始化:

mysqld --initialize –-console

九、配置说明

1.wsrep_provider_options参数说明

galera-parameters

2.wsrep配置一览

转自:
超详细,多图文使用galera cluster搭建mysql集群并介绍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语句数

十、安装Keepalived实现VIP访问

参考:
Galera Cluster for Mysql集群环境搭建
21条MySQL优化建议(经验总结)

 类似资料: