Percona XtraDB Cluster簡易入門 - 安裝篇


說明


Percona XtraDB Cluster(簡稱PXC),是由percona公司推出的mysql集群解決方案。特點是每個節點都能進行讀寫,且都保存全量的數據。也就是說在任何一個節點進行寫入操作,都會同步給其它所有節點寫入到自己的磁盤。這點跟Oracle Rac有本質的區別,Rac是多個節點連同一個共享存儲,假如Oracle的共享存儲掛了,整個集群就掛了。而Mysql pxc中任何一台機器掛了,集群照常運轉,因為節點間並不共享磁盤。

 

寫在前面的注意事項(節選自官方手冊)


1. 由於pxc只作用於innodb引擎,而mysql自帶的系統庫(mysql)里面有些表是MyISAM的存儲引擎,因此不能直接對系統庫(mysql)的表進行dml操作,比如INSERT INTO mysql.user...。而是使用CREATE USER...,這個是沒有問題的,而且也是正確的方式。
2. 不支持LOCK TABLES和UNLOCK TABLES語句
mysql> lock tables world write;
ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK/FOR EXPORT with pxc_strict_mode = ENFORCING
3. log_output參數不能是TABLE
4. 不支持分布式事務
5. 新建表必須要有主鍵,否則對表進行dml操作會報以下錯誤
ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of DML command on a table (hello.world) without an explicit primary key with pxc_strict_mode = ENFORCING or MASTER
6. 推薦的節點數最小是3個

 

安裝


准備三個節點,操作系統使用centos6.10,pxc采用rpm安裝的方式,簡單
節點1 ip: 10.40.16.120  hostname:mysqla
節點2 ip: 10.40.16.121  hostname:mysqlb
節點3 ip: 10.40.16.122  hostname:mysqlc

所有節點關閉防火牆

service iptables stop
chkconfig iptables off
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config


所有節點安裝以下rpm包

#安裝percona cluster依賴包
wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm
wget http://www.rpmfind.net/linux/epel/6/x86_64/Packages/s/socat-1.7.2.3-1.el6.x86_64.rpm

yum install -y libev-4.04-2.el6.x86_64.rpm
yum install -y socat-1.7.2.3-1.el6.x86_64.rpm

#配置yum倉庫
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

#安裝percona cluster
yum install -y Percona-XtraDB-Cluster-57

到這里所有的安裝工作就已經完成了,接下來就是修改參數文件,把這三個節點連起來組成集群

 

修改參數文件


需要修改的參數已經列出來了,其余不用動,注意下面這些參數有的前面有#號,需要去掉
修改節點1的參數文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122   #集群的所有節點ip
wsrep_node_address=10.40.16.120                                        #本機的ip
wsrep_node_name=pxc-cluster-node-1                                     #本機在集群中的名字
wsrep_sst_auth="sstuser:s3cretPass"                                    #集群間同步的用戶,后面需要在節點1創建該用戶


vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

server-id=1                     #集群內所有節點的id不能相同

                                  

啟動節點1的mysql
/etc/init.d/mysql bootstrap-pxc  #集群的第一個節點啟動必須使用該方式。如果手工將整個集群關掉了,那么重新啟動集群時,應該啟動最后一個被關閉的節點,且以該方式。第一個啟動的節點稱為donater,后面啟動的節點為joiner,兩者啟動方式不一樣,需要留意

[root@mysqla ~]# /etc/init.d/mysql bootstrap-pxc
Bootstrapping PXC (Percona XtraDB Cluster)MySQL (Percona XtraDB Cluster) is not running, but lock file (/var/lock/subsys/mysql) exists [FAILED]
Starting MySQL (Percona XtraDB Cluster)....                [  OK  ]

前面那個failed忽略,屬於正常情況

 

找出root的臨時密碼

[root@mysqla ~]# grep "temporary password" /var/log/mysqld.log |awk -F " " '{print $11}'

&enffgG_E8Ty

 

修改root密碼並創建同步賬號(同步賬號需要跟/etc/percona-xtradb-cluster.conf.d/wsrep.cnf的鍵值wsrep_sst_auth對應)

[root@mysqla ~]# mysql -uroot -p'&enffgG_E8Ty'
mysql> alter user root@'localhost' identified by 'root';
mysql> create user 'sstuser'@'localhost' identified by 's3cretPass';
mysql> grant process, reload, lock tables, replication client on *.* to 'sstuser'@'localhost';
mysql> flush privileges;


修改節點2的參數文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122
wsrep_node_address=10.40.16.121
wsrep_node_name=pxc-cluster-node-2
wsrep_sst_auth="sstuser:s3cretPass"


vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

server-id=2


啟動節點2的mysql
service mysql start

[root@mysqlb ~]# service mysql start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Starting MySQL (Percona XtraDB Cluster)......State transfer in progress, setting sleep higher
.                                                          [  OK  ]


修改節點3的參數文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122
wsrep_node_address=10.40.16.122
wsrep_node_name=pxc-cluster-node-3
wsrep_sst_auth="sstuser:s3cretPass"


vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

server-id=3


啟動節點3的mysql
service mysql start

[root@mysqlc ~]# service mysql start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Starting MySQL (Percona XtraDB Cluster)......State transfer in progress, setting sleep higher
.                                                          [  OK  ]


測試
在任意節點創建一張表,注意這里創建的表必須有主鍵,查看其它節點是否有數據,有就表示同步完成,沒有的話去看日志/var/log/mysqld.log查找原因

如果文章幫到了你,還希望你點個贊,你的點贊是我寫作的最大動力,哈哈。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM