MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7)
发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,避免创建偶数节点数量的集群,因为这样会导致脑裂。Linux版本:CentOS 6.5IP信息:Node IPNode 1 10.20.30.10Node 2 10.20.30.20Node 3 10.
千家信息网最后更新 2024年12月01日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安全错误
数据库的锁怎样保障安全
网络技术教学 看完就会
关于网络安全的图片素材
联机服务器图片
城市交通监控系统数据库设计
心交社视频软件开发
学科网上传课件显示服务器错误
软件开发培训要求
织梦超级管理员数据库修改
池州通信软件开发多少钱
枞阳软件开发者
简幻欢服务器导入地图
软件开发营业执照费用
软件开发在学校叫什么专业
李嘉欣视频软件开发
清远搬家服务软件开发推荐
1988自习室软件开发
局网络安全会议纪要
asp调用db数据库
泰州蓝思软件开发工程师待遇
张店陶瓷软件开发定制
数字无线传感器网络技术
清华经济社会数据库
excel 权限管理服务器
我的世界服务器主城推荐建筑
观看网络安全视频心得
东软网络安全事业
天津大规模软件开发管理模式
移动互联网软件开发什么意思
TPLINK虚拟服务器太少
数据库访问安全性