佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > MySQL之PXC集群搭建的方法步驟

MySQL之PXC集群搭建的方法步驟

熱門(mén)標(biāo)簽:呼叫中心市場(chǎng)需求 服務(wù)外包 地方門(mén)戶網(wǎng)站 百度競(jìng)價(jià)排名 鐵路電話系統(tǒng) Linux服務(wù)器 網(wǎng)站排名優(yōu)化 AI電銷

一、PXC 介紹

1.1 PXC 簡(jiǎn)介

PXC 是一套 MySQL 高可用集群解決方案,與傳統(tǒng)的基于主從復(fù)制模式的集群架構(gòu)相比 PXC 最突出特點(diǎn)就是解決了詬病已久的數(shù)據(jù)復(fù)制延遲問(wèn)題,基本上可以達(dá)到實(shí)時(shí)同步。而且節(jié)點(diǎn)與節(jié)點(diǎn)之間,他們相互的關(guān)系是對(duì)等的。PXC 最關(guān)注的是數(shù)據(jù)的一致性,對(duì)待事物的行為時(shí),要么在所有節(jié)點(diǎn)上執(zhí)行,要么都不執(zhí)行,它的實(shí)現(xiàn)機(jī)制決定了它對(duì)待一致性的行為非常嚴(yán)格,這也能非常完美的保證 MySQL 集群的數(shù)據(jù)一致性;

1.2 PXC特性和優(yōu)點(diǎn)

  • 完全兼容 MySQL。
  • 同步復(fù)制,事務(wù)要么在所有節(jié)點(diǎn)提交或不提交。
  • 多主復(fù)制,可以在任意節(jié)點(diǎn)進(jìn)行寫(xiě)操作。
  • 在從服務(wù)器上并行應(yīng)用事件,真正意義上的并行復(fù)制。
  • 節(jié)點(diǎn)自動(dòng)配置,數(shù)據(jù)一致性,不再是異步復(fù)制。
  • 故障切換:因?yàn)橹С侄帱c(diǎn)寫(xiě)入,所以在出現(xiàn)數(shù)據(jù)庫(kù)故障時(shí)可以很容易的進(jìn)行故障切換。
  • 自動(dòng)節(jié)點(diǎn)克?。涸谛略龉?jié)點(diǎn)或停機(jī)維護(hù)時(shí),增量數(shù)據(jù)或基礎(chǔ)數(shù)據(jù)不需要人工手動(dòng)備份提供,galera cluster會(huì)自動(dòng)拉取在線節(jié)點(diǎn)數(shù)據(jù),集群最終會(huì)變?yōu)橐恢拢?/li>

PXC最大的優(yōu)勢(shì):強(qiáng)一致性、無(wú)同步延遲

1.3 PXC的局限和劣勢(shì)

  • 復(fù)制只支持InnoDB 引擎,其他存儲(chǔ)引擎的更改不復(fù)制
  • 寫(xiě)入效率取決于節(jié)點(diǎn)中最慢的一臺(tái)

1.4 PXC與Replication的區(qū)別

Replication PXC
數(shù)據(jù)同步是單向的,master負(fù)責(zé)寫(xiě),然后異步復(fù)制給slave;如果slave寫(xiě)入數(shù)據(jù),不會(huì)復(fù)制給master。 數(shù)據(jù)同步時(shí)雙向的,任何一個(gè)mysql節(jié)點(diǎn)寫(xiě)入數(shù)據(jù),都會(huì)同步到集群中其它的節(jié)點(diǎn)。
異步復(fù)制,從和主無(wú)法保證數(shù)據(jù)的一致性 同步復(fù)制,事務(wù)在所有集群節(jié)點(diǎn)要么同時(shí)提交,要么同時(shí)不提交

1.5 PXC 常用端口

  • 3306:數(shù)據(jù)庫(kù)對(duì)外服務(wù)的端口號(hào)。
  • 4444:請(qǐng)求SST的端口。
  • 4567:組成員之間進(jìn)行溝通的一個(gè)端口號(hào)
  • 4568:用于傳輸IST。

名詞解釋:

  • SST(State Snapshot Transfer): 全量傳輸
  • IST(Incremental state Transfer):增量傳輸

二、實(shí)踐

2.1 搭建 PXC 集群

與 MySQL 不同的是 PXC 官方提供了 Docker 鏡像,所以我們可以很方便的搭建 PXC 集群。

1)下載 Docker 鏡像

docker pull percona/percona-xtradb-cluster:5.7

重命名鏡像名稱

docker tag percona/percona-xtradb-cluster:5.7 pxc:5.7

3)刪除原始鏡像

docker rmi percona/percona-xtradb-cluster:5.7

創(chuàng)建 Docker 網(wǎng)絡(luò),用于 PXC 集群獨(dú)立使用

docker network create pxc-network

創(chuàng)建數(shù)據(jù)卷用于之后掛載

docker volume create --name v1
docker volume create --name v2
docker volume create --name v3

注:PXC容器只支持?jǐn)?shù)據(jù)卷掛載方式,不支持目錄掛載

創(chuàng)建第一個(gè)節(jié)點(diǎn)

docker run -di --name=pn1 --net=pxc-network -p 9000:3306 -v v1:/var/lib/mysql --privileged -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=123456  pxc:5.7 

因?yàn)楹罄m(xù)節(jié)點(diǎn)的添加需要關(guān)聯(lián)到第一個(gè)節(jié)點(diǎn),所以需要等待數(shù)據(jù)庫(kù)啟動(dòng)完成。通過(guò) docker logs pn1 查看日志,如果出現(xiàn)下面的輸出,證明啟動(dòng)成功:

2019-09-04T06:27:30.085880Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190904  6:27:30

注:CLUSTER_NAME 名稱不要用關(guān)鍵字PXC,否則無(wú)法啟動(dòng)。

加入第二個(gè)節(jié)點(diǎn)

docker run -di --name=pn2 --net=pxc-network -p 9001:3306 -v v2:/var/lib/mysql --privileged -e MYSQL_ROOT_PASSWORD=123456  -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pn1 pxc:5.7  

需要注意是第二個(gè)節(jié)點(diǎn)開(kāi)始需要增加 e CLUSTER_JOIN=pn1 參數(shù),表示與 pn1 節(jié)點(diǎn)同步,否則 pn1 容器會(huì)自動(dòng)關(guān)閉。

當(dāng) PXC集群中存在兩個(gè)節(jié)點(diǎn)以上之后就沒(méi)有主節(jié)點(diǎn)的概念了。集群中最后一個(gè)退出的節(jié)點(diǎn)就會(huì)變?yōu)橹鞴?jié)點(diǎn),在 /var/lib/mysql/grastate.dat 文件中屬性 safe_to_bootstrap 的值 會(huì)從 0 被設(shè)置為 1 表示該節(jié)點(diǎn)是主節(jié)點(diǎn)。

8)加入第三個(gè)節(jié)點(diǎn)

docker run -di --name=pn3 --net=pxc-network -p 9002:3306 -v v3:/var/lib/mysql --privileged -e MYSQL_ROOT_PASSWORD=123456  -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pn2 pxc:5.7  

可以看到我們這次我們 CLUSTER_JOIN 的是 pn2 容器,可以證明我們剛剛說(shuō)的 當(dāng) PXC 集群存在兩個(gè)節(jié)點(diǎn)以上之后就沒(méi)有主節(jié)點(diǎn)的概念了 這個(gè)說(shuō)法是正確的。

9)進(jìn)入 pn1 節(jié)點(diǎn)

docker exec -it pn1 /usr/bin/mysql -uroot -p123456

查看狀態(tài)

mysql> show status like 'wsrep%';
+----------------------------------+-------------------------------------------------+
| Variable_name                    | Value                                           |
+----------------------------------+-------------------------------------------------+
| wsrep_local_state_uuid           | 068dd5e8-cedd-11e9-904d-466e75bd8fe1            |
| wsrep_protocol_version           | 9                                               |
| wsrep_last_applied               | 16                                              |
| wsrep_last_committed             | 16                                              |
| wsrep_replicated                 | 0                                               |
| wsrep_replicated_bytes           | 0                                               |
| wsrep_repl_keys                  | 0                                               |
| wsrep_repl_keys_bytes            | 0                                               |
| wsrep_repl_data_bytes            | 0                                               |
| wsrep_repl_other_bytes           | 0                                               |
| wsrep_received                   | 10                                              |
| wsrep_received_bytes             | 800                                             |
| wsrep_local_commits              | 0                                               |
| wsrep_local_cert_failures        | 0                                               |
| wsrep_local_replays              | 0                                               |
| wsrep_local_send_queue           | 0                                               |
| wsrep_local_send_queue_max       | 1                                               |
| wsrep_local_send_queue_min       | 0                                               |
| wsrep_local_send_queue_avg       | 0.000000                                        |
| wsrep_local_recv_queue           | 0                                               |
| wsrep_local_recv_queue_max       | 2                                               |
| wsrep_local_recv_queue_min       | 0                                               |
| wsrep_local_recv_queue_avg       | 0.100000                                        |
| wsrep_local_cached_downto        | 0                                               |
| wsrep_flow_control_paused_ns     | 0                                               |
| wsrep_flow_control_paused        | 0.000000                                        |
| wsrep_flow_control_sent          | 0                                               |
| wsrep_flow_control_recv          | 0                                               |
| wsrep_flow_control_interval      | [ 173, 173 ]                                    |
| wsrep_flow_control_interval_low  | 173                                             |
| wsrep_flow_control_interval_high | 173                                             |
| wsrep_flow_control_status        | OFF                                             |
| wsrep_cert_deps_distance         | 0.000000                                        |
| wsrep_apply_oooe                 | 0.000000                                        |
| wsrep_apply_oool                 | 0.000000                                        |
| wsrep_apply_window               | 0.000000                                        |
| wsrep_commit_oooe                | 0.000000                                        |
| wsrep_commit_oool                | 0.000000                                        |
| wsrep_commit_window              | 0.000000                                        |
| wsrep_local_state                | 4                                               |
| wsrep_local_state_comment        | Synced                                          |
| wsrep_cert_index_size            | 0                                               |
| wsrep_cert_bucket_count          | 22                                              |
| wsrep_gcache_pool_size           | 1592                                            |
| wsrep_causal_reads               | 0                                               |
| wsrep_cert_interval              | 0.000000                                        |
| wsrep_open_transactions          | 0                                               |
| wsrep_open_connections           | 0                                               |
| wsrep_ist_receive_status         |                                                 |
| wsrep_ist_receive_seqno_start    | 0                                               |
| wsrep_ist_receive_seqno_current  | 0                                               |
| wsrep_ist_receive_seqno_end      | 0                                               |
| wsrep_incoming_addresses         | 172.19.0.2:3306,172.19.0.3:3306,172.19.0.4:3306|
| wsrep_cluster_weight             | 3                                               |
| wsrep_desync_count               | 0                                               |
| wsrep_evs_delayed                |                                                 |
| wsrep_evs_evict_list             |                                                 |
| wsrep_evs_repl_latency           | 0/0/0/0/0                                       |
| wsrep_evs_state                  | OPERATIONAL                                     |
| wsrep_gcomm_uuid                 | 11ed51e2-cedd-11e9-b362-af453a7ac074            |
| wsrep_cluster_conf_id            | 3                                               |
| wsrep_cluster_size               | 3                                               |
| wsrep_cluster_state_uuid         | 068dd5e8-cedd-11e9-904d-466e75bd8fe1            |
| wsrep_cluster_status             | Primary                                         |
| wsrep_connected                  | ON                                              |
| wsrep_local_bf_aborts            | 0                                               |
| wsrep_local_index                | 0                                               |
| wsrep_provider_name              | Galera                                          |
| wsrep_provider_vendor            | Codership Oy info@codership.com>               |
| wsrep_provider_version           | 3.37(rff05089)                                  |
| wsrep_ready                      | ON                                              |
+----------------------------------+-------------------------------------------------+
71 rows in set (0.06 sec)

可以看到 wsrep_incoming_addresses 的值就是我們?nèi)齻€(gè)容器的IP地址

| wsrep_incoming_addresses         | 172.19.0.2:3306,172.19.0.3:3306,172.19.0.4:3306 |

集群完整性檢查:

屬性 含義
wsrep_cluster_state_uuid 在集群所有節(jié)點(diǎn)的值應(yīng)該是相同的,有不同值的節(jié)點(diǎn),說(shuō)明其沒(méi)有連接入集群.
wsrep_cluster_conf_id 正常情況下所有節(jié)點(diǎn)上該值是一樣的.如果值不同,說(shuō)明該節(jié)點(diǎn)被臨時(shí)”分區(qū)”了.當(dāng)節(jié)點(diǎn)之間網(wǎng)絡(luò)連接恢復(fù) 的時(shí)候應(yīng)該會(huì)恢復(fù)一樣的值.
wsrep_cluster_size 如果這個(gè)值跟預(yù)期的節(jié)點(diǎn)數(shù)一致,則所有的集群節(jié)點(diǎn)已經(jīng)連接.
wsrep_cluster_status 集群組成的狀態(tài).如果不為”P(pán)rimary”,說(shuō)明出現(xiàn)”分區(qū)”或是”split-brain”腦裂狀況.

節(jié)點(diǎn)狀態(tài)檢查:

屬性 含義
wsrep_ready 該值為 ON,則說(shuō)明可以接受 SQL 負(fù)載.如果為 Off,則需要檢查 wsrep_connected
wsrep_connected 如果該值為 Off,且 wsrep_ready 的值也為 Off,則說(shuō)明該節(jié)點(diǎn)沒(méi)有連接到集群.(可能是 wsrep_cluster_address 或 wsrep_cluster_name 等配置錯(cuò)造成的.具體錯(cuò)誤需要查看錯(cuò)誤日志)
wsrep_local_state_comment 如果 wsrep_connected 為 On,但 wsrep_ready 為 OFF,則可以從該項(xiàng)查看原因

復(fù)制健康檢查:

屬性 含義
wsrep_flow_control_paused 表示復(fù)制停止了多長(zhǎng)時(shí)間.即表明集群因?yàn)?Slave 延遲而慢的程度.值為 0~1,越靠近 0 越好,值為 1 表示 復(fù)制完全停止.可優(yōu)化 wsrep_slave_threads 的值來(lái)改善
wsrep_cert_deps_distance 有多少事務(wù)可以并行應(yīng)用處理.wsrep_slave_threads 設(shè)置的值不應(yīng)該高出該值太多
wsrep_flow_control_sent 表示該節(jié)點(diǎn)已經(jīng)停止復(fù)制了多少次
*wsrep_local_recv_queue_avg 表示 slave 事務(wù)隊(duì)列的平均長(zhǎng)度.slave 瓶頸的預(yù)兆. 最慢的節(jié)點(diǎn)的 wsrep_flow_control_sent 和 wsrep_local_recv_queue_avg 這兩個(gè)值最高.這兩個(gè)值較低的話,相對(duì)更好

檢測(cè)慢網(wǎng)絡(luò)問(wèn)題:

屬性 含義
wsrep_local_send_queue_avg 網(wǎng)絡(luò)瓶頸的預(yù)兆.如果這個(gè)值比較高的話,可能存在網(wǎng)絡(luò)瓶頸

沖突或死鎖的數(shù)目:

屬性 含義
wsrep_last_committed 最后提交的事務(wù)數(shù)目
wsrep_local_cert_failures 和 wsrep_local_bf_aborts 回滾,檢測(cè)到的沖突數(shù)目

2.2 集群同步驗(yàn)證

在節(jié)點(diǎn)一上創(chuàng)建數(shù)據(jù)庫(kù) test

mysql> create database test;
Query OK, 1 row affected (0.02 sec)

節(jié)點(diǎn)二上查看:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

在節(jié)點(diǎn)二上創(chuàng)建表

mysql> use test;
Database changed
mysql> create table sys_user(id int ,name varchar(30));
Query OK, 0 rows affected (0.11 sec)

4)在節(jié)點(diǎn)三上查看表結(jié)構(gòu)

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| sys_user       |
+----------------+
1 row in set (0.00 sec)

在節(jié)點(diǎn)三上插入數(shù)據(jù)

mysql> insert into sys_user values(1,'a');
ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of DML command on a table (test.sys_user) without an explicit primary key with pxc_strict_mode = ENFORCING or MASTER

看到?jīng)]有顯示的主鍵就無(wú)法插入數(shù)據(jù),我們修改下表結(jié)構(gòu):

alter table sys_user add primary key (id);

插入數(shù)據(jù):

mysql> insert into sys_user values(1,'a');
Query OK, 1 row affected (0.05 sec)

6)在節(jié)點(diǎn)一查看表數(shù)據(jù)

mysql> select * from sys_user;
+----+------+
| id | name |
+----+------+
|  1 | a    |
+----+------+
1 row in set (0.00 sec)

可以看到三個(gè)節(jié)點(diǎn)數(shù)據(jù)正常同步,并且都可讀可寫(xiě)。

2.3 新增數(shù)據(jù)庫(kù)節(jié)點(diǎn)操作

當(dāng)數(shù)據(jù)庫(kù)不夠用時(shí),我們通常需要增加數(shù)據(jù)庫(kù)節(jié)點(diǎn)來(lái)分擔(dān)壓力,我們來(lái)演示一下新增節(jié)點(diǎn)的操作。

創(chuàng)建數(shù)據(jù)卷

docker volume create --name v4

2)新增容器

docker run -di --name=pn4 --net=pxc-network -p 9003:3306 -v v4:/var/lib/mysql --privileged -e MYSQL_ROOT_PASSWORD=123456  -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pn3 pxc:5.7 

要注意的是,這次 CLUSTER_JOIN 連的是 pn3。

進(jìn)入節(jié)點(diǎn)4查看數(shù)據(jù)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| sys_user       |
+----------------+
1 row in set (0.00 sec)
mysql> select * from sys_user;
+----+------+
| id | name |
+----+------+
|  1 | a    |
+----+------+
1 row in set (0.00 sec)

可以看到之前的數(shù)據(jù)也自動(dòng)同步過(guò)來(lái)了。

2.4 宕機(jī)操作

將節(jié)點(diǎn)pn4容器關(guān)閉,造成宕機(jī)現(xiàn)象

docker stop pn4

在節(jié)點(diǎn) pn2 上做查看集群狀態(tài)

mysql> show status like 'wsrep%';
......
| wsrep_local_state                | 4                                               |
| wsrep_local_state_comment        | Synced                                          |
| wsrep_cert_index_size            | 3                                               |
......
| wsrep_incoming_addresses         | 172.19.0.4:3306,172.19.0.3:3306,172.19.0.2:3306 |

可以看到集群應(yīng)該有4個(gè)節(jié)點(diǎn),但是現(xiàn)在只有3個(gè)正常連接。

3)在節(jié)點(diǎn) pn2 上做修改操作

mysql> update sys_user set name='b' where id=1; 
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

將節(jié)點(diǎn) pn4 容器啟動(dòng)

[root@VM_0_15_centos ~]# docker start pn4

進(jìn)入容器 pn4 查看修改操作是否同步

docker exec -it pn4 /usr/bin/mysql -uroot -p123456
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from sys_user;
+----+------+
| id | name |
+----+------+
|  1 | b    |
+----+------+
1 row in set (0.00 sec)

可以看到節(jié)點(diǎn)正常加入集群,并且數(shù)據(jù)也同步了。

pn4 是以指定主節(jié)點(diǎn)形式進(jìn)入 PXC 集群創(chuàng)建的容器,那么 pn1直接以自身為主節(jié)點(diǎn)啟動(dòng)的容器會(huì)怎么樣呢?我們來(lái)演示一下:

關(guān)閉 pn1 節(jié)點(diǎn)

docker stop pn1

在 pn2 節(jié)點(diǎn)上插入一條數(shù)據(jù)

mysql> insert into sys_user values('2','c');
Query OK, 1 row affected (0.01 sec)

啟動(dòng) pn1節(jié)點(diǎn)

docker start pn1

等待一分鐘,查看容器啟動(dòng)列表

docker ps -a

發(fā)現(xiàn) pn1 節(jié)點(diǎn)并沒(méi)有啟動(dòng)

CONTAINER ID        IMAGE    ......   STATUS                           NAMES
fa123563e787        pxc:5.7  ......   Exited (1) About a minute ago    pn1               

查看下錯(cuò)誤日志:

docker logs pn1

異常信息如下:

2019-09-04T07:21:56.412918Z 0 [ERROR] WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 .
2019-09-04T07:21:56.412922Z 0 [ERROR] WSREP: Provider/Node (gcomm://) failed to establish connection with cluster (reason: 7)
2019-09-04T07:21:56.412929Z 0 [ERROR] Aborting

翻譯成中文:

2019-09-04T07:21:56.412918Z 0 [錯(cuò)誤] WSREP:從此節(jié)點(diǎn)引導(dǎo)群集可能不安全。 它不是離開(kāi)群集的最后一個(gè),可能不包含所有更新。 要使用此節(jié)點(diǎn)強(qiáng)制群集引導(dǎo),請(qǐng)手動(dòng)編輯grastate.dat文件并將safe_to_bootstrap設(shè)置為1。
2019-09-04T07:21:56.412922Z 0 [錯(cuò)誤] WSREP:提供者/節(jié)點(diǎn)(gcomm://)無(wú)法與群集建立連接(原因:7)
2019-09-04T07:21:56.412929Z 0 [錯(cuò)誤]中止

錯(cuò)誤提示很明顯了,因?yàn)?pn1 節(jié)點(diǎn)不是最后一個(gè)離開(kāi)集群的不能再以主節(jié)點(diǎn)的形式啟動(dòng)了,如果要以主節(jié)點(diǎn)的形式啟動(dòng)必須調(diào)整 grastate.dat文件中的 safe_to_bootstrap 參數(shù)為 1。

但是要注意的是因?yàn)榧褐衅渌?jié)點(diǎn)并沒(méi)有關(guān)閉,這樣啟動(dòng)的容器跟之前的集群就沒(méi)有關(guān)系了數(shù)據(jù)也不會(huì)同步,我們來(lái)驗(yàn)證下看看:

查看數(shù)據(jù)卷存放的路徑

docker volume inspect v1
[
    {
        "CreatedAt": "2019-09-05T09:22:22+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/v1/_data",
        "Name": "v1",
        "Options": {},
        "Scope": "local"
    }
]

進(jìn)入數(shù)據(jù)卷目錄,查看是否存在 grastate.dat文件

[root@VM_0_15_centos ~]# cd /var/lib/docker/volumes/v1/_data
[root@VM_0_15_centos _data]# ll
total 323444
-rw-r----- 1 1001 1001        56 Sep  5 08:34 auto.cnf
-rw------- 1 1001 1001      1680 Sep  5 08:34 ca-key.pem
-rw-r--r-- 1 1001 1001      1120 Sep  5 08:34 ca.pem
-rw-r--r-- 1 1001 1001      1120 Sep  5 08:34 client-cert.pem
-rw------- 1 1001 1001      1676 Sep  5 08:34 client-key.pem
-rw-r----- 1 1001 1001         2 Sep  5 08:34 fa123563e787.pid
-rw-r----- 1 1001 1001 134219048 Sep  5 09:22 galera.cache
-rw-r----- 1 1001 1001       113 Sep  5 09:21 grastate.dat
-rw-r----- 1 1001 1001      1300 Sep  5 08:34 ib_buffer_pool
-rw-r----- 1 1001 1001  79691776 Sep  5 09:15 ibdata1
-rw-r----- 1 1001 1001  50331648 Sep  5 09:15 ib_logfile0
-rw-r----- 1 1001 1001  50331648 Sep  5 08:34 ib_logfile1
-rw-r----- 1 1001 1001  12582912 Sep  5 08:38 ibtmp1
-rw-r----- 1 1001 1001     34751 Sep  5 08:38 innobackup.backup.log
drwxr-x--- 2 1001 1001      4096 Sep  5 08:34 mysql
drwxr-x--- 2 1001 1001      4096 Sep  5 08:34 performance_schema
-rw------- 1 1001 1001      1676 Sep  5 08:34 private_key.pem
-rw-r--r-- 1 1001 1001       452 Sep  5 08:34 public_key.pem
-rw-r--r-- 1 1001 1001      1120 Sep  5 08:34 server-cert.pem
-rw------- 1 1001 1001      1676 Sep  5 08:34 server-key.pem
drwxr-x--- 2 1001 1001     12288 Sep  5 08:34 sys
drwxr-x--- 2 1001 1001      4096 Sep  5 09:07 test
-rw-r--r-- 1 1001 1001       143 Sep  5 09:22 version_info
-rw-r----- 1 1001 1001   3932160 Sep  5 09:15 xb_doublewrite

編輯文件

vim grastate.dat

將 safe_to_bootstrap 參數(shù)值修改為1,保存退出

# GALERA saved state
version: 2.1
uuid:    068dd5e8-cedd-11e9-904d-466e75bd8fe1
seqno:   20
safe_to_bootstrap: 1

重啟 pn1 容器

docker start pn1

進(jìn)入容器,查看數(shù)據(jù)

docker exec -it pn1 /usr/bin/mysql -uroot -p123456
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from sys_user;
+----+------+
| id | name |
+----+------+
|  1 | b    |
+----+------+
1 row in set (0.01 sec)

發(fā)現(xiàn)數(shù)據(jù)并沒(méi)有同步,那么要怎么將 pn1 節(jié)點(diǎn)加入到集群中呢?

我們可以直接將 pn1 容器刪除,以加入節(jié)點(diǎn)的形式重新創(chuàng)建容器,并且因?yàn)槲覀冎耙呀?jīng)將容器的數(shù)據(jù)掛載到數(shù)據(jù)卷了,所以數(shù)據(jù)也不會(huì)存在丟失的風(fēng)險(xiǎn),我們來(lái)操作下:

刪除 pn1容器

docker stop pn1
docker rm pn1

以從節(jié)點(diǎn)方式加入集群

docker run -di --name=pn1 --net=pxc-network -p 9000:3306 -v v1:/var/lib/mysql --privileged -e MYSQL_ROOT_PASSWORD=123456  -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pn2 pxc:5.7  

等待容器初始化完畢

3)進(jìn)入容器,查看數(shù)據(jù)是否同步

docker exec -it pn1 /usr/bin/mysql -uroot -p123456
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from sys_user;
+----+------+
| id | name |
+----+------+
|  1 | b    |
|  2 | c    |
+----+------+
2 rows in set (0.00 sec)

發(fā)現(xiàn)數(shù)據(jù)已經(jīng)同步了。

到此這篇關(guān)于MySQL之PXC集群搭建的方法步驟的文章就介紹到這了,更多相關(guān)MySQL PXC集群搭建 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL之高可用集群部署及故障切換實(shí)現(xiàn)
  • MySQL5.7 集群配置的步驟
  • Docker部署Mysql集群的實(shí)現(xiàn)
  • 集群rpm安裝MySQL步驟詳解
  • 詳解mysql集群:一主多從架構(gòu)實(shí)現(xiàn)
  • 使用Docker部署MySQL 5.7&8.0主從集群的方法步驟
  • mysql的集群模式 galera-cluster部署詳解
  • docker 搭建Mysql集群的方法示例
  • MySQL Cluster集群的初級(jí)部署教程
  • 如何搭建 MySQL 高可用高性能集群

標(biāo)簽:湖南 崇左 銅川 黃山 湘潭 蘭州 衡水 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL之PXC集群搭建的方法步驟》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    志丹县| 唐海县| 台湾省| 金寨县| 佛山市| 沈丘县| 石狮市| 白玉县| 共和县| 苏州市| 新疆| 平定县| 赞皇县| 永定县| 赤城县| 荥经县| 甘德县| 富阳市| 云阳县| 忻城县| 建湖县| 洮南市| 新泰市| 芦山县| 蕉岭县| 巢湖市| 诸城市| 塔河县| 鹿泉市| 元朗区| 扎囊县| 新田县| 枞阳县| 武清区| 普定县| 岑溪市| 乌审旗| 湛江市| 金塔县| 清水河县| 修武县|