Percona XtraDB Cluster可以用于实现Mysql的高可用性和扩展性,能够提供一下特性:
1.同步复制,事务在所有节点同时提交,不再是类似replication的异步复制;
2.多主对外提供读写服务;
3.主从服务器上并行运行事务,实现真正的可并发;
4.节点自动添加配置;
1. 安装环境:
OS:Redhat 6.5
Cluster:Percona-XtraDB-Cluster5.6.22-25
主节点:
hostname:mysql-pxc01
ip addr:192.168.48.11
备节点:
hostname:mysql-pxc02
ip addr:192.168.48.12
在/etc/hosts中添加各个主机信息
mysql-pxc01 192.169.48.11
mysql-pxc02 192.168.48.12
2. 安装软件包:
yum install mysql-libs-5.1.71-1.el6.i686
yum install perl-DBD-MySQL-4.013-3.el6.i686.rpm
yum install zlib-1.2.3-29.el6.i686.rpm
yum install zlib-devel-1.2.3-29.el6.i686.rpm
yum install openssl-1.0.1e-15.el6.i686.rpm
yum install openssl-devel-1.0.1e-15.el6.i686.rpm
yum install tcp_wrappers-7.6-57.el6.i686.rpm
rpm -ivh socat-1.7.2.1-1.el6.rf.i686.rpm
yum install perl-Time-HiRes-1.9721-136.el6.i686.rpm
yum install libaio-0.3.107-10.el6.i686.rpm
yum install libaio-devel-0.3.107-10.el6.i686.rpm
yum install rsync-3.0.6-9.el6_4.1.i686.rpm
rpm -ivh percona-xtrabackup-2.2.9-5067.el6.i686.rpm
rpm -ivh Percona-XtraDB-Cluster-client-56-5.6.22-25.8.978.el6.i686.rpm
rpm -ivh Percona-XtraDB-Cluster-galera-3-3.9-1.3494.rhel6.i686.rpm
yum install lsof-4.82-4.el6.i686.rpm
rpm -ivh Percona-XtraDB-Cluster-shared-56-5.6.22-25.8.978.el6.i686.rpm
rpm -ivh Percona-XtraDB-Cluster-server-56-5.6.22-25.8.978.el6.i686.rpm
3. 关闭iptables和selinux
# chkconfig iptables off
# service iptables stop
# vi /etc/selinux/config
SELINUX=disabled
重启主机
4. 配置文件
Ø 创建数据目录
mkdir –p /mysqldata/data
Ø 更改目录权限
chown –R mysql:mysql /mysqldata
192.168.48.11的my.cnf
[mysqld]
datadir=/mysqldata/data
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL containsthe IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://192.168.48.11,192.168.48.12
# In order for Galera to workcorrectly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has onlyexperimental support
default_storage_engine=InnoDB
# This changes how InnoDBautoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #1 address
wsrep_node_address=192.168.48.11
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=my_Redhat_cluster
# Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"
wsrep_slave_threads=4
192.168.48.12的my.cnf
[mysqld]
datadir=/mysqldata/data
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL containsthe IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://192.168.48.11,192.168.48.12
# In order for Galera to workcorrectly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has onlyexperimental support
default_storage_engine=InnoDB
# This changes how InnoDBautoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #1 address
wsrep_node_address=192.168.48.12
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=my_Redhat_cluster
# Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"
wsrep_slave_threads=4
5. 第一个节点初始化数据库
5.1. 初始化数据库
# mysql_install_db --user=mysql --basedir=/usr --datadir=/mysqldata/data
5.2. 启动集群的第一个节点
# service mysql bootstrap-pxc
如果iptables和selinux没有关闭,此处会启动失败
5.3. 配置备份用户
第一个节点启动后,在启动第二个节点之前需要配置备份用户,否则第二个节点无法启动。因为第二个节点通过xtrabackup进行拉数据,需要通过配置文件中的sstuser用户。
Ø 更改root用户密码(强烈建议)
mysql> UPDATE mysql.user SET password=PASSWORD("xxxx")where user='root';
mysql> FLUSH PRIVILEGES;
Ø 创建SST传输用户
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
6. 其它节点
其它节点无需初始化数据库,数据会从第一个节点上拉过来
# service mysql start