MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7)
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,避免创建偶数节点数量的集群,因为这样会导致脑裂。Linux版本:CentOS 6.5IP信息:Node IPNode 1 10.20.30.10Node 2 10.20.30.20Node 3 10.
千家信息网最后更新 2026年10月31日MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7)避免创建偶数节点数量的集群,因为这样会导致脑裂。
Linux版本:CentOS 6.5
IP信息:
Node IP
Node 1 10.20.30.10
Node 2 10.20.30.20
Node 3 10.20.30.30
关掉selinux和防火墙,否则后面初始化集群会失败
[root@localhost mysql_log_57]# vim /etc/selinux/config
SELINUX=disabled
1. 在所有节点上安装Percona XtraDB集群软件
安装YUM源
[root@localhost ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
检查包是否可用
[root@localhost install]# yum list | grep Percona-XtraDB-Cluster-57
Percona-XtraDB-Cluster-57.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
Percona-XtraDB-Cluster-57-debuginfo.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
安装Percona XtraDB集群包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
安装时提示缺少下面的包
Error: Package: Percona-XtraDB-Cluster-server-57-5.7.18-29.20.1.el6.x86_64 (percona-release-x86_64)
Requires: socat
Error: Package: percona-xtrabackup-24-2.4.7-2.el6.x86_64 (percona-release-x86_64)
Requires: libev.so.4()(64bit)
安装缺少的socat和libev包
到fedora官网下载repository
在下面网页中下载epel-release开头的rpm包
http://dl.fedoraproject.org/pub/epel/6/x86_64/
上传rpm包到服务器上
安装repository包
[root@localhost install]# yum localinstall epel-release-6-8.noarch.rpm
安装socat、libev
[root@localhost install]# yum install socat libev
再次安装Percona XtraDB集群包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
注意,如果服务器上安装过数据库,/etc/my.cnf配置文件已经存在,需要将其改名,否则会对集群启动产生影响
[root@localhost ~]# mv /etc/my.cnf /etc/my_5.7_mha.cnf
查看数据目录下的内容
[root@localhost usr]# cd /var/lib/mysql
[root@localhost mysql]# ls -trl
total 126800
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile1
-rw-r-----. 1 mysql mysql 56 Jul 1 19:21 auto.cnf
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 ca-key.pem
-rw-r--r--. 1 mysql mysql 1083 Jul 1 19:21 ca.pem
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 server-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 server-cert.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 client-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 client-cert.pem
-rw-r--r--. 1 mysql mysql 452 Jul 1 19:21 public_key.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 private_key.pem
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 performance_schema
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 mysql
drwxr-x---. 2 mysql mysql 12288 Jul 1 19:21 sys
-rw-r-----. 1 mysql mysql 417 Jul 1 19:21 ib_buffer_pool
-rw-rw----. 1 root root 5 Jul 1 19:21 mysqld_safe.pid
-rw-------. 1 mysql mysql 5 Jul 1 19:21 mysql.sock.lock
srwxrwxrwx. 1 mysql mysql 0 Jul 1 19:21 mysql.sock
-rw-r-----. 1 mysql mysql 5 Jul 1 19:21 localhost.localdomain.pid
-rw-r-----. 1 mysql mysql 3932160 Jul 1 19:21 xb_doublewrite
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibtmp1
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile0
-rw-r-----. 1 mysql mysql 4653 Jul 1 19:22 localhost.localdomain.er
默认安装的软件目录
查看软件目录下的内容
[root@localhost ~]# cd /usr/
[root@localhost usr]# ls -trl
total 144
drwxr-xr-x. 2 root root 4096 Sep 23 2011 games
drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
drwxr-xr-x. 4 root root 4096 Mar 23 16:03 src
lrwxrwxrwx. 1 root root 10 Mar 23 16:03 tmp -> ../var/tmp
dr-xr-xr-x. 15 root root 4096 Mar 23 16:17 lib
drwxr-xr-x. 42 root root 4096 Apr 3 03:15 include
drwxr-xr-x. 22 root root 12288 Apr 3 03:41 libexec
drwxr-xr-x. 14 root root 4096 Apr 9 08:25 local
dr-xr-xr-x. 2 root root 36864 Jul 1 16:11 bin
dr-xr-xr-x. 92 root root 49152 Jul 1 16:11 lib64
dr-xr-xr-x. 2 root root 12288 Jul 1 16:11 sbin
drwxr-xr-x. 175 root root 4096 Jul 1 16:11 share
启动Percona XtraDB集群服务
service mysql start
查看集群状态
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2263)
实际上集群的进程就是mysqld的进程
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2928)
[root@localhost mysql]# ps -ef|grep mysql
root 2824 1 0 19:56 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid
mysql 2928 2824 2 19:56 pts/1 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/localhost.localdomain.err --pid-file=/var/lib/mysql/localhost.localdomain.pid --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1
root 2982 2711 0 19:57 pts/1 00:00:00 grep mysql
重新设置root密码
[root@localhost log]# mysqld_safe --skip-grant-tables --skip-networking&
[root@localhost log]# mysql -uroot
mysql> update mysql.user set authentication_string=password('root') where user='root';
mysql> commit;
[root@localhost log]# mysqladmin shutdown
[root@localhost log]# service mysql start
Starting MySQL (Percona XtraDB Cluster).. SUCCESS!
[root@localhost ~]# mysql -uroot -p
mysql> alter user root@localhost identified by 'root';
2. 在所有节点上配置写集合复制相关的参数
这包括Glera库的路径和其他节点的位置
停掉集群服务
[root@localhost ~]# service mysql stop
Shutting down MySQL (Percona XtraDB Cluster)... SUCCESS!
参数说明:
wsrep_provider 指定Galera库的路径
wsrep_cluster_name 指定集群各个节点的IP地址
wsrep_node_name 指定每个节点的逻辑名。如果没有指定这个参数,默认会使用主机名
wsrep_node_address 指定节点的IP地址
wsrep_sst_method 默认,Percona XtraDB集群使用Percona XtraBackup来做状态快照传输(SST)。强烈建议将这个参数设为wsrep_sst_method=xtrabackup-v2。使用这个方法需要配置一个数据库用户。在wsrep_sst_auth参数中指定SST认证用户。
wsrep_sst_auth 指定SST认证用户名和密码,格式是:。
性和不支持的特性
binlog_format Gelera只支持行级的复制,所以设置 binlog_format=ROW
default_storage_engine Galera只支持InnoDB存储引擎。不支持MyISAM或其他非事务性的存储引擎。所以设置 default_storage_engine=InnoDB
innodb_autoinc_lock_mode Gelara只支持适合InnoDB的interleaved (2)锁模式。将这个参数设为traditional (0)或consecutive (1)锁模式会引起死锁,
进而将会导致复制失败。所以设置 innodb_autoinc_lock_mode=2
节点1配置文件
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address="gcomm://10.20.30.10,10.20.30.20,10.20.30.30"
wsrep_node_name=pxc1
wsrep_node_address=10.20.30.10
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
节点2配置文件
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc2
wsrep_node_address=10.20.30.20
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
节点3配置文件
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc3
wsrep_node_address=10.20.30.30
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
查看模块
[root@localhost ~]# ll /usr/lib64/galera3/libgalera_smm.so
-rwxr-xr-x. 1 root root 2404960 May 31 23:07 /usr/lib64/galera3/libgalera_smm.so
3. 在第一个节点上初始化集群
这个节点必须包含全部的数据,作为集群的数据源。
在第一个节点上执行下面操作
[root@localhost mysql_log_57]# /etc/init.d/mysql bootstrap-pxc
Starting MySQL (Percona XtraDB Cluster)..... SUCCESS!
查看集群状态
[root@localhost mysql_log_57]# mysql -uroot -p
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced | // 节点是同步状态
| wsrep_cluster_size | 1 | // 集群只有一个节点
| wsrep_cluster_status | Primary | // 主节点
| wsrep_connected | ON | // 已经连接到集群
| wsrep_ready | ON | // 已经做好写集合的复制准备
在增加其他节点到集群中前,创建SST的数据库用户。这个账户必须和配置文件中的信息相符。
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
-> 'sstuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
4. 增加其他节点到集群中
当配置好wsrep_cluster_address等配置文件后,启动该节点,它会自动加入集群并开始同步数据。
注意:不要在相同时间加入多个节点到集群中,以避免巨大的网络流量压力。
默认,Percona XtraDB集群使用Percona XtraBackup来传输状态快照 State Snapshot Transfer (SST)。
需要满足下面条件:
设置wsrep_sst_method参数为xtrabackup-v2,并使用wsrep_sst_auth变量提供SST用户认证。
在初始化节点上面创建SST用户。
启动第2个节点
[root@localhost ~]# /etc/init.d/mysql start
在第2个节点上,查看用户和集群状态
可以看到SST用户已经复制到第2节点,集群已经有了两个节点,size变为2
mysql> select user, host from mysql.user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
| sstuser | localhost |
+-----------+-----------+
3 rows in set (0.01 sec)
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced |
| wsrep_cluster_size | 2 |
增加第3个节点到集群中
[root@localhost ~]# /etc/init.d/mysql start
在第3个节点检查集群的状态
mysql> show status like 'wsrep%';
| wsrep_cluster_size | 3 |
可以看到集群的wsrep_cluster_size参数变为3,集群增加到第3个节点
5. 验证复制效果
在第2个节点上创建一个数据库
mysql> CREATE DATABASE percona;
Query OK, 1 row affected (0.07 sec)
在第3个节点上,在刚刚创建的库里面创建一张表
mysql> USE percona;
Database changed
mysql> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (0.05 sec)
在第1个节点上,往这张表中插入一条数据
mysql> INSERT INTO percona.example VALUES (1, 'percona1');
Query OK, 1 row affected (0.23 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
在第2个节点查看这张表中的数据
mysql> SELECT * FROM percona.example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
+---------+-----------+
1 row in set (0.00 sec)
Linux版本:CentOS 6.5
IP信息:
Node IP
Node 1 10.20.30.10
Node 2 10.20.30.20
Node 3 10.20.30.30
关掉selinux和防火墙,否则后面初始化集群会失败
[root@localhost mysql_log_57]# vim /etc/selinux/config
SELINUX=disabled
1. 在所有节点上安装Percona XtraDB集群软件
安装YUM源
[root@localhost ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
检查包是否可用
[root@localhost install]# yum list | grep Percona-XtraDB-Cluster-57
Percona-XtraDB-Cluster-57.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
Percona-XtraDB-Cluster-57-debuginfo.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
安装Percona XtraDB集群包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
安装时提示缺少下面的包
Error: Package: Percona-XtraDB-Cluster-server-57-5.7.18-29.20.1.el6.x86_64 (percona-release-x86_64)
Requires: socat
Error: Package: percona-xtrabackup-24-2.4.7-2.el6.x86_64 (percona-release-x86_64)
Requires: libev.so.4()(64bit)
安装缺少的socat和libev包
到fedora官网下载repository
在下面网页中下载epel-release开头的rpm包
http://dl.fedoraproject.org/pub/epel/6/x86_64/
上传rpm包到服务器上
安装repository包
[root@localhost install]# yum localinstall epel-release-6-8.noarch.rpm
安装socat、libev
[root@localhost install]# yum install socat libev
再次安装Percona XtraDB集群包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
注意,如果服务器上安装过数据库,/etc/my.cnf配置文件已经存在,需要将其改名,否则会对集群启动产生影响
[root@localhost ~]# mv /etc/my.cnf /etc/my_5.7_mha.cnf
查看数据目录下的内容
[root@localhost usr]# cd /var/lib/mysql
[root@localhost mysql]# ls -trl
total 126800
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile1
-rw-r-----. 1 mysql mysql 56 Jul 1 19:21 auto.cnf
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 ca-key.pem
-rw-r--r--. 1 mysql mysql 1083 Jul 1 19:21 ca.pem
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 server-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 server-cert.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 client-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 client-cert.pem
-rw-r--r--. 1 mysql mysql 452 Jul 1 19:21 public_key.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 private_key.pem
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 performance_schema
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 mysql
drwxr-x---. 2 mysql mysql 12288 Jul 1 19:21 sys
-rw-r-----. 1 mysql mysql 417 Jul 1 19:21 ib_buffer_pool
-rw-rw----. 1 root root 5 Jul 1 19:21 mysqld_safe.pid
-rw-------. 1 mysql mysql 5 Jul 1 19:21 mysql.sock.lock
srwxrwxrwx. 1 mysql mysql 0 Jul 1 19:21 mysql.sock
-rw-r-----. 1 mysql mysql 5 Jul 1 19:21 localhost.localdomain.pid
-rw-r-----. 1 mysql mysql 3932160 Jul 1 19:21 xb_doublewrite
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibtmp1
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile0
-rw-r-----. 1 mysql mysql 4653 Jul 1 19:22 localhost.localdomain.er
默认安装的软件目录
查看软件目录下的内容
[root@localhost ~]# cd /usr/
[root@localhost usr]# ls -trl
total 144
drwxr-xr-x. 2 root root 4096 Sep 23 2011 games
drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
drwxr-xr-x. 4 root root 4096 Mar 23 16:03 src
lrwxrwxrwx. 1 root root 10 Mar 23 16:03 tmp -> ../var/tmp
dr-xr-xr-x. 15 root root 4096 Mar 23 16:17 lib
drwxr-xr-x. 42 root root 4096 Apr 3 03:15 include
drwxr-xr-x. 22 root root 12288 Apr 3 03:41 libexec
drwxr-xr-x. 14 root root 4096 Apr 9 08:25 local
dr-xr-xr-x. 2 root root 36864 Jul 1 16:11 bin
dr-xr-xr-x. 92 root root 49152 Jul 1 16:11 lib64
dr-xr-xr-x. 2 root root 12288 Jul 1 16:11 sbin
drwxr-xr-x. 175 root root 4096 Jul 1 16:11 share
启动Percona XtraDB集群服务
service mysql start
查看集群状态
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2263)
实际上集群的进程就是mysqld的进程
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2928)
[root@localhost mysql]# ps -ef|grep mysql
root 2824 1 0 19:56 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid
mysql 2928 2824 2 19:56 pts/1 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/localhost.localdomain.err --pid-file=/var/lib/mysql/localhost.localdomain.pid --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1
root 2982 2711 0 19:57 pts/1 00:00:00 grep mysql
重新设置root密码
[root@localhost log]# mysqld_safe --skip-grant-tables --skip-networking&
[root@localhost log]# mysql -uroot
mysql> update mysql.user set authentication_string=password('root') where user='root';
mysql> commit;
[root@localhost log]# mysqladmin shutdown
[root@localhost log]# service mysql start
Starting MySQL (Percona XtraDB Cluster).. SUCCESS!
[root@localhost ~]# mysql -uroot -p
mysql> alter user root@localhost identified by 'root';
2. 在所有节点上配置写集合复制相关的参数
这包括Glera库的路径和其他节点的位置
停掉集群服务
[root@localhost ~]# service mysql stop
Shutting down MySQL (Percona XtraDB Cluster)... SUCCESS!
参数说明:
wsrep_provider 指定Galera库的路径
wsrep_cluster_name 指定集群各个节点的IP地址
wsrep_node_name 指定每个节点的逻辑名。如果没有指定这个参数,默认会使用主机名
wsrep_node_address 指定节点的IP地址
wsrep_sst_method 默认,Percona XtraDB集群使用Percona XtraBackup来做状态快照传输(SST)。强烈建议将这个参数设为wsrep_sst_method=xtrabackup-v2。使用这个方法需要配置一个数据库用户。在wsrep_sst_auth参数中指定SST认证用户。
wsrep_sst_auth 指定SST认证用户名和密码,格式是:。
性和不支持的特性
binlog_format Gelera只支持行级的复制,所以设置 binlog_format=ROW
default_storage_engine Galera只支持InnoDB存储引擎。不支持MyISAM或其他非事务性的存储引擎。所以设置 default_storage_engine=InnoDB
innodb_autoinc_lock_mode Gelara只支持适合InnoDB的interleaved (2)锁模式。将这个参数设为traditional (0)或consecutive (1)锁模式会引起死锁,
进而将会导致复制失败。所以设置 innodb_autoinc_lock_mode=2
节点1配置文件
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address="gcomm://10.20.30.10,10.20.30.20,10.20.30.30"
wsrep_node_name=pxc1
wsrep_node_address=10.20.30.10
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
节点2配置文件
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc2
wsrep_node_address=10.20.30.20
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
节点3配置文件
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc3
wsrep_node_address=10.20.30.30
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
查看模块
[root@localhost ~]# ll /usr/lib64/galera3/libgalera_smm.so
-rwxr-xr-x. 1 root root 2404960 May 31 23:07 /usr/lib64/galera3/libgalera_smm.so
3. 在第一个节点上初始化集群
这个节点必须包含全部的数据,作为集群的数据源。
在第一个节点上执行下面操作
[root@localhost mysql_log_57]# /etc/init.d/mysql bootstrap-pxc
Starting MySQL (Percona XtraDB Cluster)..... SUCCESS!
查看集群状态
[root@localhost mysql_log_57]# mysql -uroot -p
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced | // 节点是同步状态
| wsrep_cluster_size | 1 | // 集群只有一个节点
| wsrep_cluster_status | Primary | // 主节点
| wsrep_connected | ON | // 已经连接到集群
| wsrep_ready | ON | // 已经做好写集合的复制准备
在增加其他节点到集群中前,创建SST的数据库用户。这个账户必须和配置文件中的信息相符。
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
-> 'sstuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
4. 增加其他节点到集群中
当配置好wsrep_cluster_address等配置文件后,启动该节点,它会自动加入集群并开始同步数据。
注意:不要在相同时间加入多个节点到集群中,以避免巨大的网络流量压力。
默认,Percona XtraDB集群使用Percona XtraBackup来传输状态快照 State Snapshot Transfer (SST)。
需要满足下面条件:
设置wsrep_sst_method参数为xtrabackup-v2,并使用wsrep_sst_auth变量提供SST用户认证。
在初始化节点上面创建SST用户。
启动第2个节点
[root@localhost ~]# /etc/init.d/mysql start
在第2个节点上,查看用户和集群状态
可以看到SST用户已经复制到第2节点,集群已经有了两个节点,size变为2
mysql> select user, host from mysql.user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
| sstuser | localhost |
+-----------+-----------+
3 rows in set (0.01 sec)
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced |
| wsrep_cluster_size | 2 |
增加第3个节点到集群中
[root@localhost ~]# /etc/init.d/mysql start
在第3个节点检查集群的状态
mysql> show status like 'wsrep%';
| wsrep_cluster_size | 3 |
可以看到集群的wsrep_cluster_size参数变为3,集群增加到第3个节点
5. 验证复制效果
在第2个节点上创建一个数据库
mysql> CREATE DATABASE percona;
Query OK, 1 row affected (0.07 sec)
在第3个节点上,在刚刚创建的库里面创建一张表
mysql> USE percona;
Database changed
mysql> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (0.05 sec)
在第1个节点上,往这张表中插入一条数据
mysql> INSERT INTO percona.example VALUES (1, 'percona1');
Query OK, 1 row affected (0.23 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
在第2个节点查看这张表中的数据
mysql> SELECT * FROM percona.example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
+---------+-----------+
1 row in set (0.00 sec)
节点
集群
数据
配置
参数
用户
状态
文件
支持
数据库
服务
目录
软件
认证
信息
内容
地址
密码
引擎
快照
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖北九亚互联网络科技有限公司
亿人帮互联网科技有限公司
云之行互联网科技
中国互联网科技股
科技互联网项目
互联网品科技
科技信息互联网
互联网金融公司科技
合肥互联网科技公司
青岛互联网科技公司
江苏南京365互联网科技
华服互联网科技官网
崇明区互联网教育科技售后服务
互联网科技研发水平
本届互联网大会上的黑科技
有人说阿里系是互联网科技企业
银川新华互联网科技学校是国营吗
互联网科技职业技能培训学校
科技和互联网行业的特点
北京品多多互联网科技有限公司
有格互联网科技
科技创新与互联网经济
团飞科技与伯堂互联网服务平台
湖南诚度互联网科技有限公司
互联网科技和信息
中和天地互联网科技有限公司
江苏互联网智能科技软件
信承诺互联网科技有限公司
广州智享互联网科技
互联网科技对化妆品行业