PXC是Percona XtraDB Cluster的縮寫,是 Percona 公司出品的免費(fèi)MySQL集群產(chǎn)品。PXC的作用是通過mysql自帶的Galera集群技術(shù),將不同的mysql實(shí)例連接起來,實(shí)現(xiàn)多主集群。在PXC集群中每個(gè)mysql節(jié)點(diǎn)都是可讀可寫的,也就是主從概念中的主節(jié)點(diǎn),不存在只讀的節(jié)點(diǎn)。
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)果洛州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
PXC實(shí)際上是基于Galera的面向OLTP的多主同步復(fù)制插件,PXC主要用于解決MySQL集群中數(shù)據(jù)同步強(qiáng)一性問題。PXC可以集群任何mysql的衍生版本,例如MariaDB和Percona Server。由于Percona Server的性能最接近于mysql企業(yè)版,性能相對(duì)于標(biāo)準(zhǔn)版的mysql有顯著的提升,并且對(duì)mysql基本兼容。所以在搭建PXC集群時(shí),通常建議基于Percona Server進(jìn)行搭建。
關(guān)于數(shù)據(jù)庫集群方案的選擇可以參考:
環(huán)境版本說明:
MySQL有幾個(gè)常見的衍生版,Percona Server就是其一。這里選擇Percona Server是因?yàn)樗亲罱咏谄髽I(yè)版的MySQL。各衍生版的對(duì)比圖如下:
本文的PXC集群設(shè)計(jì)如圖:
根據(jù)該圖,我們需要?jiǎng)?chuàng)建三個(gè)虛擬機(jī)來搭建一個(gè)三節(jié)點(diǎn)的PXC集群:
節(jié)點(diǎn)說明:
Node | Host | IP |
---|---|---|
Node1 | PXC-Node1 | 192.168.190.132 |
Node2 | PXC-Node2 | 192.168.190.133 |
Node3 | PXC-Node3 | 192.168.190.134 |
每個(gè)虛擬機(jī)的配置如下圖:
關(guān)于 PXC 集群是以犧牲性能來保證數(shù)據(jù)的強(qiáng)一致性問題。PXC 集群中的節(jié)點(diǎn)越多就意味著數(shù)據(jù)同步的時(shí)間就越長(zhǎng),那么應(yīng)該用幾臺(tái)數(shù)據(jù)庫服務(wù)器來做集群最合適,相對(duì)來說算是能達(dá)到一個(gè)性能上最優(yōu)的結(jié)果呢 ?
通常來說不超過15臺(tái)節(jié)點(diǎn)組成一個(gè)PXC集群,性能上很好,多了就不行。然后這個(gè)PXC集群作為一個(gè)分片,MyCat上多設(shè)置幾個(gè)分片,就能應(yīng)對(duì)數(shù)據(jù)切分和并發(fā)訪問了
有些 CentOS 版本默認(rèn)捆綁了mariadb-libs
,在安裝PXC之前需要先將其卸載:
[root@PXC-Node1 ~]# yum -y remove mari*
PXC集群要使用四個(gè)端口:
端口 | 描述 |
---|---|
3306 | MySQL服務(wù)端口 |
4444 | 請(qǐng)求全量同步(SST)端口 |
4567 | 數(shù)據(jù)庫節(jié)點(diǎn)之間的通信端口 |
4568 | 請(qǐng)求增量同步(IST)端口 |
所以如果系統(tǒng)啟用了防火墻則需要開放這些端口:
[root@PXC-Node1 ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@PXC-Node1 ~]# firewall-cmd --zone=public --add-port=4444/tcp --permanent
[root@PXC-Node1 ~]# firewall-cmd --zone=public --add-port=4567/tcp --permanent
[root@PXC-Node1 ~]# firewall-cmd --zone=public --add-port=4568/tcp --permanent
[root@PXC-Node1 ~]# firewall-cmd --reload
先上官方文檔:
PXC有兩種較為簡(jiǎn)單的安裝方式,一是到官網(wǎng)下載rpm
包到系統(tǒng)本地進(jìn)行安裝,二是使用官方提供的yum
倉庫進(jìn)行在線安裝。本文演示的是本地安裝這種方式,首先打開如下網(wǎng)址:
選擇相應(yīng)的版本后,復(fù)制下載鏈接:
然后到CentOS上使用wget
命令進(jìn)行下載,如下示例:
[root@PXC-Node1 ~]# cd /usr/local/src
[root@PXC-Node1 /usr/local/src]# wget https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/Percona-XtraDB-Cluster-5.7.28-31.41/binary/redhat/8/x86_64/Percona-XtraDB-Cluster-5.7.28-31.41-r514-el8-x86_64-bundle.tar
創(chuàng)建存放rpm
文件的目錄,并將下載好的PXC安裝包解壓縮到新建的目錄中:
[root@PXC-Node1 /usr/local/src]# mkdir pxc-rpms
[root@PXC-Node1 /usr/local/src]# tar -xvf Percona-XtraDB-Cluster-5.7.28-31.41-r514-el8-x86_64-bundle.tar -C pxc-rpms
[root@PXC-Node1 /usr/local/src]# ls pxc-rpms
Percona-XtraDB-Cluster-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-57-debuginfo-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-57-debugsource-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-client-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-client-57-debuginfo-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-devel-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-full-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-garbd-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-garbd-57-debuginfo-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-server-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-server-57-debuginfo-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-shared-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-shared-57-debuginfo-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-test-57-5.7.28-31.41.1.el8.x86_64.rpm
Percona-XtraDB-Cluster-test-57-debuginfo-5.7.28-31.41.1.el8.x86_64.rpm
另外,PXC的安裝需要依賴于qpress
和percona-xtrabackup-24
,可以在percona提供的倉庫中獲取到相應(yīng)的rpm
包下載鏈接。然后進(jìn)入pxc-rpms
目錄下載這兩個(gè)組件的rpm
包,如下:
[root@PXC-Node1 /usr/local/src]# cd pxc-rpms
[root@PXC-Node1 /usr/local/src/pxc-rpms]# wget https://repo.percona.com/release/8/RPMS/x86_64/qpress-11-1.el8.x86_64.rpm
[root@PXC-Node1 /usr/local/src/pxc-rpms]# wget https://repo.percona.com/release/8/RPMS/x86_64/percona-xtrabackup-24-2.4.18-1.el8.x86_64.rpm
完成以上步驟后,現(xiàn)在就可以通過yum
命令以本地形式安裝PXC了:
[root@PXC-Node1 /usr/local/src/pxc-rpms]# yum localinstall -y *.rpm
成功安裝后,系統(tǒng)中就會(huì)有mysql
的相關(guān)命令。如下,能正常查看到版本信息代表已安裝成功:
[root@PXC-Node1 /usr/local/src/pxc-rpms]# mysql --version
mysql Ver 14.14 Distrib 5.7.28-31, for Linux (x86_64) using 7.0
[root@PXC-Node1 /usr/local/src/pxc-rpms]#
安裝后需要進(jìn)行一些配置才能啟動(dòng)集群,PXC的配置文件默認(rèn)位于/etc/percona-xtradb-cluster.conf.d/
目錄下,/etc/my.cnf
文件只是對(duì)其引用:
[root@PXC-Node1 ~]# cd /etc/percona-xtradb-cluster.conf.d/
[root@PXC-Node1 /etc/percona-xtradb-cluster.conf.d]# ll
總用量 12
-rw-r--r-- 1 root root 381 12月 13 17:19 mysqld.cnf # mysql相關(guān)配置
-rw-r--r-- 1 root root 440 12月 13 17:19 mysqld_safe.cnf # mysqld_safe相關(guān)配置
-rw-r--r-- 1 root root 1066 12月 13 17:19 wsrep.cnf # PXC集群的相關(guān)配置
在mysqld.cnf
文件中添加一些字符集等基本配置:
[root@PXC-Node1 /etc/percona-xtradb-cluster.conf.d]# vim mysqld.cnf
[mysqld]
...
# 設(shè)置字符集
character_set_server=utf8
# 設(shè)置監(jiān)聽的ip
bind-address=0.0.0.0
# 跳過DNS解析
skip-name-resolve
然后是配置PXC集群,修改wsrep.cnf
文件中的如下配置項(xiàng):
[root@PXC-Node1 /etc/percona-xtradb-cluster.conf.d]# vim wsrep.cnf
[mysqld]
# PXC集群中MySQL實(shí)例的唯一ID,不能重復(fù),且必須是數(shù)字
server-id=1
# Galera庫文件的路徑
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
# PXC集群的名稱
wsrep_cluster_name=pxc-cluster
# 集群中所有節(jié)點(diǎn)的ip
wsrep_cluster_address=gcomm://192.168.190.132,192.168.190.133,192.168.190.134
# 當(dāng)前節(jié)點(diǎn)的名稱
wsrep_node_name=pxc-node-01
# 當(dāng)前節(jié)點(diǎn)的IP
wsrep_node_address=192.168.190.132
# 同步方法(mysqldump、 rsync、 xtrabackup)
wsrep_sst_method=xtrabackup-v2
# 同步時(shí)使用的帳戶密碼
wsrep_sst_auth=admin:Abc_123456
# 采用嚴(yán)格的同步模式
pxc_strict_mode=ENFORCING
# 基于ROW復(fù)制(安全可靠)
binlog_format=ROW
# 默認(rèn)引擎
default_storage_engine=InnoDB
# 主鍵自增長(zhǎng)不鎖表
innodb_autoinc_lock_mode=2
到此為止,我們?cè)?code>PXC-Node1這臺(tái)虛擬機(jī)上完成了PXC的安裝及配置。然后到其他兩個(gè)節(jié)點(diǎn)上完成同樣的步驟即可,這里就不再重復(fù)了。
當(dāng)所有的節(jié)點(diǎn)都準(zhǔn)備完成后,使用如下命令啟動(dòng)PXC集群。注意這條的命令是用于啟動(dòng)首節(jié)點(diǎn)的,初次啟動(dòng)集群時(shí)首節(jié)點(diǎn)可以是這三個(gè)節(jié)點(diǎn)中的任意一個(gè),這里我采用PXC-Node1
作為首節(jié)點(diǎn)。故在該虛擬機(jī)下執(zhí)行這條命令:
[root@PXC-Node1 ~]# systemctl start mysql@bootstrap.service
而其他節(jié)點(diǎn)只需要正常啟動(dòng)MySQL服務(wù)即可,啟動(dòng)之后會(huì)根據(jù)wsrep.cnf
文件中的配置自動(dòng)加入集群中:
[root@PXC-Node2 ~]# systemctl start mysqld
禁用Percona Server的開機(jī)自啟動(dòng):
[root@localhost ~]# systemctl disable mysqld
Removed /etc/systemd/system/multi-user.target.wants/mysqld.service.
Removed /etc/systemd/system/mysql.service.
[root@localhost ~]#
接著修改root賬戶的默認(rèn)密碼。我們可以在mysql的日志文件中找到初始的默認(rèn)密碼。下圖紅框標(biāo)注的就是默認(rèn)密碼:
復(fù)制默認(rèn)密碼,然后使用mysql_secure_installation
命令修改root賬戶的密碼:
[root@localhost ~]# mysql_secure_installation
為了安全起見,root賬戶一般是不允許遠(yuǎn)程登錄的,所以我們需要單獨(dú)創(chuàng)建一個(gè)用于遠(yuǎn)程訪問的數(shù)據(jù)庫賬戶。這個(gè)賬戶也是用于PXC集群同步數(shù)據(jù)的賬戶,與wsrep.cnf
文件中的wsrep_sst_auth
配置項(xiàng)所對(duì)應(yīng):
[root@localhost ~]# mysql -uroot -p
mysql> create user 'admin'@'%' identified by 'Abc_123456';
mysql> grant all privileges on *.* to 'admin'@'%';
mysql> flush privileges;
創(chuàng)建完賬戶后,使用客戶端工具進(jìn)行遠(yuǎn)程連接測(cè)試看看是否能正常連接成功:
到此為止,我們就算是完成PXC集群的搭建了?,F(xiàn)在應(yīng)該是已經(jīng)可以看到PXC集群的同步效果的,因?yàn)樯厦嫘薷膔oot密碼以及新建賬戶的操作都會(huì)被同步到其他兩個(gè)節(jié)點(diǎn)上。也就是說,此時(shí)其他兩個(gè)節(jié)點(diǎn)的root賬戶密碼已經(jīng)是修改后的密碼,并且也會(huì)有一個(gè)admin賬戶。關(guān)于這一點(diǎn)可以自行驗(yàn)證一下。
除此之外,我們也可以使用如下語句來確認(rèn)集群的狀態(tài)信息:
show status like 'wsrep_cluster%';
執(zhí)行結(jié)果:
變量說明:
wsrep_cluster_weight
:該節(jié)點(diǎn)在集群中的權(quán)重值wsrep_cluster_conf_id
:集群節(jié)點(diǎn)關(guān)系改變的次數(shù)(每次增加/刪除都會(huì)+1)wsrep_cluster_size
:集群中的節(jié)點(diǎn)個(gè)數(shù)wsrep_cluster_state_uuid
:集群當(dāng)前狀態(tài)的UUID,這是集群當(dāng)前狀態(tài)及其所經(jīng)歷的更改序列的唯一標(biāo)識(shí)符。也用于比較兩個(gè)或多個(gè)節(jié)點(diǎn)是否處于同一集群,若兩個(gè)節(jié)點(diǎn)的該變量值一致就代表處于一個(gè)集群,如果該值不一致則表示不處于同一集群wsrep_cluster_status
:集群的目前狀態(tài)1、驗(yàn)證創(chuàng)建數(shù)據(jù)庫是否能同步
在節(jié)點(diǎn)1中創(chuàng)建一個(gè)test
庫:
創(chuàng)建完成后,點(diǎn)擊其他節(jié)點(diǎn)也應(yīng)能看到test
這個(gè)庫:
2、驗(yàn)證創(chuàng)建數(shù)據(jù)表是否能同步
在節(jié)點(diǎn)1中的test
庫里創(chuàng)建一張student
表:
創(chuàng)建完成后,在其他節(jié)點(diǎn)也應(yīng)能看到這張student
表:
3、驗(yàn)證表數(shù)據(jù)是否能同步
往節(jié)點(diǎn)1中的student
表里插入一條數(shù)據(jù):
此時(shí)其他節(jié)點(diǎn)中也應(yīng)能看到這條數(shù)據(jù):
集群的狀態(tài)參數(shù)可以通過SQL語句進(jìn)行查詢的,如下:
show status like '%wsrep%';
由于查詢出來的狀態(tài)參數(shù)變量非常的多,這里針對(duì)一些常用的進(jìn)行說明。PXC集群參數(shù)可以分為以下幾類:
wsrep_local_send_queue
:發(fā)送隊(duì)列的長(zhǎng)度wsrep_local_send_queue_max
:發(fā)送隊(duì)列的最大長(zhǎng)度wsrep_local_send_queue_min
:發(fā)送隊(duì)列的最小長(zhǎng)度wsrep_local_send_queue_avg
:發(fā)送隊(duì)列的平均長(zhǎng)度wsrep_local_recv_queue
:接收隊(duì)列的長(zhǎng)度wsrep_local_recv_queue_max
:接收隊(duì)列的最大長(zhǎng)度wsrep_local_recv_queue_min
:接收隊(duì)列的最小長(zhǎng)度wsrep_local_recv_queue_avg
:接收隊(duì)列的平均長(zhǎng)度wsrep_replicated
:同步數(shù)據(jù)到其他節(jié)點(diǎn)的次數(shù)wsrep_replicated_bytes
:同步到其他節(jié)點(diǎn)的數(shù)據(jù)總量,單位字節(jié)wsrep_received
:接收到其他節(jié)點(diǎn)同步請(qǐng)求的次數(shù)wsrep_received_bytes
:接收到其他節(jié)點(diǎn)的同步數(shù)據(jù)總量,單位字節(jié)wsrep_last_applied
:同步應(yīng)用次數(shù)wsrep_last_committed
:事務(wù)提交次數(shù)wsrep_flow_control_paused_ns
:流控暫停狀態(tài)下花費(fèi)的總時(shí)間(納秒)wsrep_flow_control_paused
:流控暫停時(shí)間的占比(0 ~ 1)wsrep_flow_control_sent
:發(fā)送的流控暫停事件的數(shù)量,即當(dāng)前節(jié)點(diǎn)觸發(fā)流控的次數(shù)wsrep_flow_control_recv
:接收的流控暫停事件的數(shù)量wsrep_flow_control_interval
:流控的下限和上限。上限是隊(duì)列中允許的最大請(qǐng)求數(shù)。如果隊(duì)列達(dá)到上限,則拒絕新的請(qǐng)求,即觸發(fā)流控。當(dāng)處理現(xiàn)有請(qǐng)求時(shí),隊(duì)列會(huì)減少,一旦到達(dá)下限,將再次允許新的請(qǐng)求,即解除流控wsrep_flow_control_status
:流控的開關(guān)狀態(tài)(開啟:ON,關(guān)閉:OFF)wsrep_cert_deps_distance
:事務(wù)執(zhí)行的并發(fā)數(shù)wsrep_apply_oooe
:接收隊(duì)列中事務(wù)的占比wsrep_apply_oool
:接收隊(duì)列中事務(wù)亂序執(zhí)行的頻率wsrep_apply_window
:接收隊(duì)列中事務(wù)的平均數(shù)量wsrep_commit_oooe
:發(fā)送隊(duì)列中事務(wù)的占比wsrep_commit_oool
:無任何意義(不存在本地亂序提交)wsrep_commit_window
:發(fā)送隊(duì)列中事務(wù)的平均數(shù)量wsrep_local_state_comment
:節(jié)點(diǎn)的當(dāng)前狀態(tài)wsrep_cluster_status
:集群的當(dāng)前狀態(tài)wsrep_connected
:節(jié)點(diǎn)是否連接到集群wsrep_ready
集群是否正常工作wsrep_cluster_size
:集群中的節(jié)點(diǎn)個(gè)數(shù)wsrep_desync_count
:延時(shí)節(jié)點(diǎn)的數(shù)量wsrep_incoming_addresses
:集群中所有節(jié)點(diǎn)的IP地址PXC節(jié)點(diǎn)狀態(tài)圖:
OPEN
:節(jié)點(diǎn)啟動(dòng)成功PRIMARY
:節(jié)點(diǎn)成功加入集群JOINER
:與其他節(jié)點(diǎn)同步數(shù)據(jù)JOINED
:與其他節(jié)點(diǎn)同步數(shù)據(jù)成功SYNCED
:與集群同步完成,可以對(duì)外提供服務(wù)DONER
:接收其他節(jié)點(diǎn)的全量數(shù)據(jù)同步,處于不可用PXC集群狀態(tài)圖:
PRIMARY
:正常狀態(tài)NON_PRIMARY
:集群發(fā)生腦裂DISCONNECTED
:集群處于無法連接狀態(tài)官方文檔:
1、PXC節(jié)點(diǎn)的安全下線姿勢(shì)
節(jié)點(diǎn)是怎么啟動(dòng)的,就使用對(duì)應(yīng)的命令去關(guān)閉即可
systemctl start mysql@bootstrap.service
systemctl stop mysql@bootstrap.service
systemctl start mysqld
systemctl stop mysqld
2、如果所有PXC節(jié)點(diǎn)都是安全下線的,那么在啟動(dòng)集群時(shí),就需要先啟動(dòng)最后下線的節(jié)點(diǎn)
初次啟動(dòng)集群時(shí)可以將任意一個(gè)節(jié)點(diǎn)作為首節(jié)點(diǎn)啟動(dòng)。但如果是一個(gè)已經(jīng)啟動(dòng)過的集群,那么當(dāng)該集群下線再上線時(shí),就需要將最后下線的節(jié)點(diǎn)作為首節(jié)點(diǎn)來啟動(dòng)。其實(shí)關(guān)于某個(gè)節(jié)點(diǎn)是否能作為首節(jié)點(diǎn)啟動(dòng),可以通過查看 grastate.dat
文件得知:
[root@PXC-Node1 ~]# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 2c915504-39ac-11ea-bba7-a294386c4285
seqno: -1
safe_to_bootstrap: 0
[root@PXC-Node1 ~]#
safe_to_bootstrap
的值為0
時(shí)表示不能作為首節(jié)點(diǎn)啟動(dòng),為1
時(shí)表示可以作為首節(jié)點(diǎn)啟動(dòng)。PXC集群中最后一個(gè)下線的節(jié)點(diǎn)就會(huì)將safe_to_bootstrap
的值改為1
,下次啟動(dòng)集群時(shí)就需要將該節(jié)點(diǎn)作為首節(jié)點(diǎn)啟動(dòng)。這是因?yàn)樽詈笠粋€(gè)下線的節(jié)點(diǎn)數(shù)據(jù)是最新的。將其作為首節(jié)點(diǎn)啟動(dòng),然后讓其他節(jié)點(diǎn)與該節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步,這樣才能保證集群中的數(shù)據(jù)是最新的。否則,可能會(huì)導(dǎo)致集群中的數(shù)據(jù)是某個(gè)時(shí)間點(diǎn)之前的舊數(shù)據(jù)。3、如果PXC節(jié)點(diǎn)都是意外退出的,而且不是在同一時(shí)間退出的情況
在本文開頭提到過,PXC集群中一半以上的節(jié)點(diǎn)因意外宕機(jī)而無法訪問時(shí),PXC集群就會(huì)停止運(yùn)行。但如果這些PXC節(jié)點(diǎn)是以安全下線的方式退出,則不會(huì)引發(fā)集群自動(dòng)停止運(yùn)行的問題,只會(huì)縮小集群的規(guī)模。只有意外下線一半以上節(jié)點(diǎn)時(shí)集群才會(huì)自動(dòng)停止,意外下線的情況包括:
只要PXC集群中的節(jié)點(diǎn)不是同時(shí)意外退出的,那么當(dāng)集群還剩一個(gè)節(jié)點(diǎn)時(shí),該節(jié)點(diǎn)就會(huì)自動(dòng)將grastate.dat
文件中的safe_to_bootstrap
值改為1
。所以在重啟集群時(shí),也是先啟動(dòng)最后一個(gè)退出的節(jié)點(diǎn)。
4、如果PXC節(jié)點(diǎn)都是同時(shí)意外退出的,則需要修改grastate.dat
文件
當(dāng)集群中所有節(jié)點(diǎn)都是在同一時(shí)間因意外情況而退出,那么此時(shí)所有節(jié)點(diǎn)的safe_to_bootstrap
都為0
,因?yàn)闆]有一個(gè)節(jié)點(diǎn)來得及去修改safe_to_bootstrap
的值。當(dāng)所有節(jié)點(diǎn)的safe_to_bootstrap
均為0
時(shí),PXC集群是無法啟動(dòng)的。
在這種情況下我們就只能手動(dòng)選擇一個(gè)節(jié)點(diǎn),將safe_to_bootstrap
修改為1
,然后將該節(jié)點(diǎn)作為首節(jié)點(diǎn)進(jìn)行啟動(dòng):
[root@PXC-Node1 ~]# vim /var/lib/mysql/grastate.dat
...
safe_to_bootstrap: 1
[root@PXC-Node1 ~]# systemctl start mysql@bootstrap.service
接著再依次啟動(dòng)其他節(jié)點(diǎn)即可:
[root@PXC-Node2 ~]# systemctl start mysqld
5、如果集群中還有可運(yùn)行的節(jié)點(diǎn),那么其他下線的節(jié)點(diǎn)只需要按普通節(jié)點(diǎn)上線即可
[root@PXC-Node2 ~]# systemctl start mysqld