简介
Percona XtraDB Cluster简称PXC,是Percona公司开发的高可用性和扩展性的MySQL开源集群方案,集成了Percona Server、Percona XtraBackup以及Codership Galera库。本文将带领大家在CentOS 6操作系统上搭建一套3节点的PXC环境。
在安装PXC环境之前,做好以下准备:
- 各个节点能访问外网;
- 节点间防火墙打开3306, 4444, 4567和4568端口;
- 各个节点关闭SELinux。
安装PXC
安装Percona yum源:
sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
安装PXC软件包:
sudo yum install Percona-XtraDB-Cluster-56
配置节点1
配置节点1的/etc/my.cnf:
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Galera库的路径
wsrep_provider=/usr/lib64/libgalera_smm.so
# 各个节点的互联IP
wsrep_cluster_address=gcomm://172.16.51.136,172.16.51.148,172.16.51.149
# binlog格式应为ROW
binlog_format=ROW
# 支持InnoDB引擎表, 部分支持MyISAM引擎表
default_storage_engine=InnoDB
# Galera需要设置的自增锁模式
innodb_autoinc_lock_mode=2
# 节点1的地址
wsrep_node_address=172.16.51.136
# SST使用xtrabackup方法
wsrep_sst_method=xtrabackup-v2
# 集群名称
wsrep_cluster_name=my_centos_cluster
# SST使用的账号
wsrep_sst_auth="sstuser:sstpass"
启动节点1:
sudo /etc/init.d/mysql bootstrap-pxc
创建SST账号:
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'sstpass';
mysql> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
配置节点2
配置节点2的/etc/my.cnf:
[mysqld]
datadir=/var/lib/mysql
user=mysql
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://172.16.51.136,172.16.51.148,172.16.51.149
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=172.16.51.148
wsrep_sst_method=xtrabackup-v2
wsrep_cluster_name=my_centos_cluster
wsrep_sst_auth="sstuser:sstpass"
启动节点2:
sudo /etc/init.d/mysql start
配置节点3
配置节点3的/etc/my.cnf:
[mysqld]
datadir=/var/lib/mysql
user=mysql
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://172.16.51.136,172.16.51.148,172.16.51.149
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=172.16.51.149
wsrep_sst_method=xtrabackup-v2
wsrep_cluster_name=my_centos_cluster
wsrep_sst_auth="sstuser:sstpass"
启动节点3:
sudo /etc/init.d/mysql start
测试集群复制
节点1创建数据库:
mysql> create database pxc;
节点2创建表:
mysql> use pxc;
mysql> create table test (id int primary key, name varchar(32));
节点3插入数据:
mysql> insert into pxc.test values (1, 'test');
各个节点查询数据:
mysql> select * from pxc.test;
+----+------+
| id | name |
+----+------+
| 1 | test |
+----+------+
1 row in set (0.00 sec)
可以看到集群各个节点的数据是同步的。