MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7)
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,避免创建偶数节点数量的集群,因为这样会导致脑裂。Linux版本:CentOS 6.5IP信息:Node IPNode 1 10.20.30.10Node 2 10.20.30.20Node 3 10.
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
服务器cpu高主频
txt怎么保存到数据库
科技的发展与网络安全的关系浅谈
宝山区微型软件开发技术指导
广东领站网络技术有限公司
中国工行软件开发中心官网
湖南服务器电源厂家排名
国家涉密软件开发甲级
什么数据库可以查到中文数据
服务器kvm切换器
db2数据库如何给用户设定权限
网络安全倡议书100字小学生
网络安全主体班会内容
加强 网络安全
网络安全中接入控制又称
关于宣传网络安全教育的漫画
搭建安全文件服务器
戴尔服务器型号1NKFMM2
手机lstp服务器地址怎么填
网络安全近几年有减弱趋势吗
通州区网络技术咨询热线
计算机网络技术全真模拟演练
重庆垫江网络生鲜软件开发
电厂网络安全二区
网络安全合规图片
寻宝天行网络技术有限
cf说是网络安全
计算机的服务器管理
ssh手机管理服务器
快速导入数据到数据库的工具