優勢:
1.準同步複製
2.多個可同時讀寫節點,可實現寫擴展,較分片方案更進一步
3.自動節點管理
4.數據嚴格一致
5.服務高可用
缺點:
1.只支持innodb引擎
2.全部表都要有主鍵
3.全部的寫操做都將發生在全部節點上,存在寫擴大問題
4.加入新節點,開銷大。須要複製完整的數據。html
node1 | 172.17.20.127 |
node2 | 172.17.20.128 |
node3 | 172.17.20.129 |
安裝相關yum源node
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -ivh https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm
安裝pxcmysql
yum -y install Percona-XtraDB-Cluster-server Percona-XtraDB-Cluster-client Percona-XtraDB-Cluster-shared percona-xtrabackup-24
修改/etc/my.cnf配置文件,其餘兩臺節點須要修改server_id和wsrep_node_addresssql
[mysqld] server_id=127 #其餘節點須要修改 datadir=/data/mysql socket=/data//mysql/mysql.sock pid_file=/var/lib/mysql/mysql.pid user=mysql port=3306 default_storage_engine=InnoDB character_set_server=utf8 log-error=/var/lib/mysql/mysql-error.log slow_query_log=1 slow_query_log_file=/var/lib/mysql/mysql-slow.log #INNODB/XtraDB innodb_buffer_pool_size=1610612736 innodb_log_file_size=104857600 #PXC wsrep_provider=/usr/lib64/libgalera_smm.so wsrep_cluster_address=gcomm://172.17.20.127,172.17.20.128,172.17.20.129 binlog_format=ROW innodb_autoinc_lock_mode=2 wsrep_node_address=172.17.20.127 #其餘節點須要修改 wsrep_sst_method=xtrabackup-v2 #同步工具 wsrep_cluster_name=my_mysql_cluster wsrep_sst_auth="sstuser:s3cret" #SST鏈接的用戶名和密碼
建立數據存儲目錄bootstrap
mkdir -p /data/mysql/ chown mysql.mysql /data/mysql/
在node1啓動PXC服務socket
/etc/init.d/mysql bootstrap-pxc #成功後密碼在日誌文件裏查到 SET PASSWORD = PASSWORD('123qwe'); #登錄MySQL修改密碼。
在node1MySQL中建立SST同步用戶ide
GRANT PROCESS,RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO 'sstuser'@'%' IDENTIFIED BY 's3cret'; flush privileges;
State Snapshot Transfer 是能夠讓one node (donor) 經過數據拷貝升級至joining node (joiner)。
一個新節點加入至集羣中,須要同步數據,那麼SST能夠傳輸數據,讓新節點成爲集羣的一部分。
SST的三個有效方法:mysqldump, rsync andxtrabackup。不過多解釋,目前最好用的是xtrabackup工具
在node2,node3啓動MySQL服務測試
/etc/init.d/mysql start
查看集羣狀態spa
show status like 'wsrep%';
而後測試數據寫入和查詢