mysql高可用之PXC(Percona XtraDB Cluster)

來源:互聯網
上載者:User

標籤:mysql高可用之pxc(percona xtradb cluster)

mysql高可用之PXC(Percona XtraDB Cluster)

借鑒

http://www.cnblogs.com/xiaoboluo768/p/5135619.html


伺服器環境資訊如下:

node1    192.168.0.100

node2    192.168.0.101

node3    192.168.0.102


1.安裝軟體依賴包(添加repl源,再安裝依賴,3台server操作一樣。)


[[email protected] ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm


[[email protected] ~]# yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes socat nc libaio rsync -y


2.安裝xtrabackup(PXC同步資料需要用到,為什麼使用xtrabackup?自己查詢官方文檔)


wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.11/binary/redhat/6/x86_64/percona-xtrabackup-2.2.11-1.el6.x86_64.rpm

rpm -ivh percona-xtrabackup-2.2.11-1.el6.x86_64.rpm


 


3.下載安裝Percona-XtraDB-Cluster


wget https://www.percona.com/downloads/Percona-XtraDB-Cluster-56/Percona-XtraDB-Cluster-5.6.24-25.11/binary/tarball/Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64.tar.gz


無法下載軟體包的請先FQ或者去官方網站尋找最新版本


tar xf Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64.tar.gz -C /usr/local/services/


cd /usr/local/services/


ln -s Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64/ mysql


cd mysql


groupadd mysql


useradd -r -g mysql mysql


chown -R mysql .


chgrp -R mysql .     


cp support-files/my-default.cnf /etc/my.cnf


mkdir -p /data/mysql/data


chown -R mysql.mysql /data/mysql/data



cp support-files/mysql.server /etc/init.d/mysqld




4、以上安裝步驟三個節點都安裝,如果在初始化的時候報libssl.so.6和libcrypto.so.6兩個動態庫檔案不存在的,就做下連結:


yum install -y libssl.so.6


ln -s /usr/lib64/libssl.so /usr/lib64/libssl.so.6


ln -s /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so.6


./scripts/mysql_install_db  --basedir=/usr/local/services/mysql --datadir=/data/mysql/data/ --user=mysql


#################################################################### node1 ############################################################################################


5、node1的配置和啟動如下:


修改my.cnf設定檔如下:


/etc/my.cnf添加如下內容:


[mysqld]


basedir = /usr/local/services/mysql


datadir = /data/mysql/data


並在[mysqld]段落添如下參數:


wsrep_provider=/usr/local/services/mysql/lib/libgalera_smm.so      #庫檔案


wsrep_cluster_address=gcomm://192.168.0.100,192.168.0.101,192.168.0.102          #節點中所有ip


wsrep_node_address=192.168.0.100    #節點的ip


wsrep_slave_threads=2   #開啟的複製線程數,cpu核心數*2


binlog_format=ROW     #binlog格式必須為row


default_storage_engine=InnoDB  #暫時不支援其他儲存引擎,只支援innodb,當然可以支援myisam,需要另外參數開啟


innodb_autoinc_lock_mode=2     #自增鎖的最佳化


wsrep_cluster_name=pxc-xiaoboluo   #叢集名字


wsrep_sst_auth=sst:xiaoboluo       #sst模式需要的使用者名稱和密碼


wsrep_sst_method=xtrabackup-v2  #採用什麼方式複製資料。還支援mysqldump,rsync


啟動,進行授權操作,對於第一個節點必須以特殊方式啟動,如下:


查看啟動選項:/etc/init.d/mysqld --help


Usage: mysql {start|stop|restart|restart-bootstrap|reload|force-reload|status|bootstrap-pxc}  [ MySQL (Percona XtraDB Cluster) options ]


啟動:

[[email protected] mysql]# /etc/init.d/mysqld bootstrap-pxc


Bootstrapping PXC (Percona XtraDB Cluster)Starting MySQL (P[  OK  ]traDB Cluster).........


[[email protected] mysql]#


進行查看,可以發現啟動兩個連接埠


[[email protected] ~]# netstat -nltp | grep mysqld


tcp        0      00.0.0.0:4567                0.0.0.0:*                   LISTEN      2964/mysqld        


tcp        0      00.0.0.0:3306                0.0.0.0:*                   LISTEN      2964/mysqld        


[[email protected] ~]#


進行授權,推薦使用grant方式


mysql登入:


mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON * . * TO ‘sst‘@‘localhost‘ IDENTIFIED BY ‘xiaoboluo‘;


Query OK, 0 rows affected (0.03 sec)


mysql> FLUSH PRIVILEGES; 


Query OK, 0 rows affected (0.03 sec)


到這裡我們的第一個節點就搞定了,剩下的兩個節點配置稍微不同,安裝方式都是一樣的,不再重複


#########################################node2 node3######################################################################################################


6、node2的配置如下:


 


[mysqld]


basedir = /usr/local/services/mysql


datadir = /data/mysql/data


 


wsrep_provider=/usr/local/services/mysql/lib/libgalera_smm.so                            


wsrep_cluster_address=gcomm://192.168.0.100,192.168.0.101,192.168.0.102         


wsrep_node_address=192.168.0.101                                              


wsrep_slave_threads=2                                                           


binlog_format=ROW                                                                


default_storage_engine=InnoDB                                                   


innodb_autoinc_lock_mode=2                                                      


wsrep_cluster_name=pxc-xiaoboluo                                                     


wsrep_sst_auth=sst:xiaoboluo                                                        


wsrep_sst_method=xtrabackup-v2          


 


7、node3的配置如下:


[mysqld]


basedir = /usr/local/services/mysql


datadir = /data/mysql/data


 


wsrep_provider=/usr/local/services/mysql/lib/libgalera_smm.so                            


wsrep_cluster_address=gcomm://192.168.0.100,192.168.0.101,192.168.0.102         


wsrep_node_address=192.168.0.102                                             


wsrep_slave_threads=2                                                           


binlog_format=ROW                                                               


default_storage_engine=InnoDB                                                   


innodb_autoinc_lock_mode=2                                                      


wsrep_cluster_name=pxc-xiaoboluo                                                    


wsrep_sst_auth=sst:xiaoboluo                                                        


wsrep_sst_method=xtrabackup-v2          


 


8、node2,node3節點都配置完成以後,我們啟動,對於第2,3個節點啟動和我們普通的MySQL啟動方式一樣。


node2啟動:


[[email protected] ~]# /etc/init.d/mysqld 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  ]

查看node2日誌


[[email protected] mysql]# tail -f /data/mysql/3306/data/node2.err 

2017-01-08 09:15:25 6036 [Note] WSREP: REPL Protocols: 7 (3, 2)

2017-01-08 09:15:25 6036 [Note] WSREP: Service thread queue flushed.

2017-01-08 09:15:25 6036 [Note] WSREP: Assign initial position for certification: 2, protocol version: 3

2017-01-08 09:15:25 6036 [Note] WSREP: Service thread queue flushed.

2017-01-08 09:15:27 6036 [Note] WSREP: Member 2.0 (node3) requested state transfer from ‘*any*‘. Selected 0.0 (node1)(SYNCED) as donor.

2017-01-08 09:15:28 6036 [Note] WSREP: (b21bada5, ‘tcp://0.0.0.0:4567‘) turning message relay requesting off

2017-01-08 09:15:43 6036 [Note] WSREP: 0.0 (node1): State transfer to 2.0 (node3) complete.

2017-01-08 09:15:43 6036 [Note] WSREP: Member 0.0 (node1) synced with group.

2017-01-08 09:15:48 6036 [Note] WSREP: 2.0 (node3): State transfer from 0.0 (node1) complete.

2017-01-08 09:15:48 6036 [Note] WSREP: Member 2.0 (node3) synced with group.


[[email protected] mysql]#  /etc/init.d/mysqld start

Starting MySQL (Percona XtraDB Cluster).........State transfer in progress, setting sleep higher

...                                                        [  OK  ]


#########################################測試####################################################################

9、測試


node1節點建立表t1,插入資料,在另外兩個節點也可以看見 這裡就不測試了

到這裡搭建就基本結束了。3個節點同時支援write/read操作。最大節點數量不建議超過8個,更加詳細的介紹以及細節建議大家參考官方文檔。

總結:

Percona XtraDB Cluster現在已經有企業在使用了,我這裡只是簡單的搭建以及測試,如果線上需要使用我們還需要進行相關壓力測試。比如使用sysbench,或者tpcc-mysql。

通常我們單獨使用Percona XtraDB Cluster也沒有任何問題的,如果使用通過結合harproxy,或者lvs+keepalived的方式來使用會更加的完美。



本文出自 “梁小明的部落格” 部落格,請務必保留此出處http://7038006.blog.51cto.com/7028006/1893619

mysql高可用之PXC(Percona XtraDB Cluster)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.