從庫轉換成PXC叢集的節點

賀子_DBA時代發表於2019-10-26

環境介紹:

mysql 5.7版本

PXC叢集兩個節點:

10.9.21.179

10.9.21.178

從節點:

10.9.21.115(普通主從,資料庫軟體為普通版本,非叢集版本)

現在的目的是要把10.9.21.115轉換成PXC叢集的節點,採用IST增量同步的方式來減小對PXC主庫的影響;

疑問:

1.PXC 物理備份,可以直接使用普通的資料庫軟體載入開啟嗎?

可以,我從PXC使用innobackex備份,然後使用不同版本的mysql可以開啟

2.PXC軟體可以作為從庫來執行嗎,也就是說pxc叢集軟體可以作為單點的資料庫執行嗎?

可以,安裝pxc軟體,可以作為單點的模式執行!所以再向已有PXC叢集新增節點的時候,可以

直接安裝PXC的軟體作為從庫,然後直接修改配置檔案進行IST即可!

3.普通版本資料庫物理備份,可以被PXC叢集載入嗎?

可以,沒試驗,但是肯定可以;因為pxc軟體可以作為單點的普通的資料庫來執行!

4.給叢集新增節點,新加的節點的資料庫軟體必要要版本一模一樣嗎?比如說主庫5.7.27

那麼新加的 必須是5.7.27?小版本號可以不一樣嗎?

小版本號沒要求(5.7即可),但是建議保持一樣!

整體思路:

首先找個相對空閒的時間點(因為如果比較繁忙的話,gcache中可能無法保留IST需要所有binlog

+key 的寫集,進而不能進行增量同步),然後stop slave,然後由於從庫是普通的版本資料庫,所以需要先把從庫資料庫軟體解除安裝,然後安裝上對應主庫版本的PXC軟體,然後根據從庫應用到的gtid點中的xid,寫進從庫的grastate.dat中,然後啟動從庫,自動進行IST加入到叢集中;

(如果是就是為了增加節點,可以直接給從庫安裝PXC軟體,然後修改my.cnf,進行IST,來實現增加節點的目的)

具體操作:

1.選擇空閒的時間,停掉主從複製;

stop slave ,

2.確認從庫已經應用完了reley log,這個很關鍵,必須要準確!

多次執行show master status;看看是否還在變化如果不變化了,如果不變化了,那麼執行

使用mysqlbinlog工具格式化下最後一個reley log,看看最後的xid是不是show master status

中的最大的,具體如下所示,reley log中的最後一個xid為24,show master status 顯示的從庫應用到的最大的xid也是24 ,說明從庫確實把reley log應用完了;

[root@beijing-fuli-hadoop-04 mysqldata]# mysqlbinlog -vv relay-log.000002 >relay-log2

[root@beijing-fuli-hadoop-04 mysqldata]# tail -n 20 relay-log2

# at 4071897

#191023 21:43:37 server id 10921178 end_log_pos 4073716 CRC32 0x4346f78f Query thread_id=7 exec_time=0 error_code=0

SET TIMESTAMP=1571838217/*!*/;

/*!40000 ALTER TABLE `lam_case_customer_tel` ENABLE KEYS */

/*!*/;

# at 4072048

#191023 21:45:20 server id 10921178 end_log_pos 4073781 CRC32 0x135eee62 GTID last_committed=20 sequence_number=21 rbr_only=no

SET @@SESSION.GTID_NEXT= ' 103581fc-0aa3-ee16-5dcf-a9ba4a682594:24'/*!*/;

# at 4072113

#191023 21:45:20 server id 10921178 end_log_pos 4073933 CRC32 0x7ed4c26b Query thread_id=7 exec_time=0 error_code=0

SET TIMESTAMP=1571838320/*!*/;

SET @@session.foreign_key_checks=1, @@session.unique_checks=1/*!*/;

SET @@session.sql_mode=1411383296/*!*/;

DROP TABLE `lam_case_customer_tel` /* generated by server */

/*!*/;

SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;

DELIMITER ;

# End of log file

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

root@localhost : (none) 22:11:29>show master status;

+------------------+----------+--------------+------------------+-------------------------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------------------------------+

| mysql-bin.000001 | 4072005 | | | 103581fc-0aa3-ee16-5dcf-a9ba4a682594:1-24 |

+------------------+----------+--------------+------------------+-------------------------------------------+

注意:一定要在relay-log檔案中找到最後一個xid,因為只有relay-log才是原汁原味的主庫的binlog,

才能找到最後執行的xid(gtid)值,因為透過主從非同步複製同步過來的事務,在從庫binlog檔案中的xid值

是按著從庫自己的事務ID來計算,所以一般是都是不一樣的(99.9%情況下不一樣)

3.關閉從庫,解除安裝mysql軟體,安裝相應的PXC軟體

3.1:關閉

[root@beijing-fuli-hadoop-04 mysqldata]# /etc/init.d/mysql stop

Stopping mysqld: [ OK ]

3.2:備份配置檔案,也可以不用備份,因為當你解除安裝的時候,會自動備份成

my.cnf_backup-20191023-2226這樣的命名規範的檔案!

[root@beijing-fuli-hadoop-04 mysqldata]# cp /etc/my.cnf /etc/my.cnf_bak

3.3:解除安裝mysql軟體

[root@beijing-fuli-hadoop-04 mysqldata]# yum remove Percona*

如果解除安裝PXC 使用:yum remove Percona-XtraDB*

3.4:安裝PXC軟體:

[root@beijing-fuli-hadoop-04 mysqldata]#yum install -y Percona-XtraDB-Cluster-server-56

4.編輯從庫的grastate.dat檔案

將uuid修改成主PXC叢集的wsrep_cluster_state_uuid引數的值,seqno修改為前面從庫relay-log中的最後一個XId的值;

root@localhost : share_cuishou 22:31:37>show status like 'wsrep_cluster_state_uuid';

+--------------------------+--------------------------------------+

| Variable_name | Value |

+--------------------------+--------------------------------------+

| wsrep_cluster_state_uuid | efca7e03-f55c-11e9-a230-5645b597da6b |

+--------------------------+--------------------------------------+

1 row in set (0.00 sec)

[root@beijing-fuli-hadoop-01 mysqldata]# cat grastate.dat

# GALERA saved state

version: 2.1

uuid: efca7e03-f55c-11e9-a230-5645b597da6b

seqno: 24

safe_to_bootstrap: 0

5.編輯從庫的配置檔案(my.cnf),新增上必要的PXC叢集的引數

需要注意的是:

1).wsrep_cluster_address 寫上主叢集中的某個節點的地址(我習慣把叢集上節點都寫上)

2).wsrep_cluster_name 寫上叢集的名字

3)wsrep_sst_donor 為主PXC叢集的某一個讀節點(儘量減少對線上的影響)

6.啟動資料庫

[root@beijing-fuli-hadoop-04 mysqldata]# /etc/init.d/mysql start

7.驗證資料庫是否正常:

至此新增節點完成

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2661553/,如需轉載,請註明出處,否則將追究法律責任。

相關文章