從庫轉換成PXC叢集的節點
環境介紹:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mongodb叢集節點故障的切換方法MongoDB
- 丐版pxc叢集
- centos 6.9搭建pxc叢集CentOS
- MySQL叢集搭建方案(PXC)MySql
- MySQL PXC叢集多個節點同時大量併發update同一行MySql
- consul 多節點/單節點叢集搭建
- 4.2 叢集節點初步搭建
- MongoDB叢集搭建(包括隱藏節點,仲裁節點)MongoDB
- Redis叢集的主從切換研究Redis
- PXC(Percona XtraDB Cluster)叢集的安裝
- HAC叢集更改IP(單節點更改、全部節點更改)
- 400+節點的 Elasticsearch 叢集運維Elasticsearch運維
- 400+ 節點的 Elasticsearch 叢集運維Elasticsearch運維
- Oracle叢集軟體管理-新增和刪除叢集節點Oracle
- linux搭建kafka叢集,多master節點叢集說明LinuxKafkaAST
- 如何將獨立例項轉換成叢集例項EU
- Redis服務之叢集節點管理Redis
- Redis Manager 叢集管理與節點管理Redis
- redhat安裝雙節點cassandra叢集Redhat
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- 【IT運維小知識】如何通俗理解節點、叢集以及主從?運維
- 在多節點的叢集上執行Cassandra
- 安裝配置PXC(Percona XtraDB Cluster)叢集
- Oracle RAC 10g叢集節點增加Oracle
- 【Mongodb】sharding 叢集Add/Remove 節點MongoDBREM
- multicast導致節點無法加入叢集AST
- 一個4節點Hadoop叢集的配置示例Hadoop
- 節點加入k8s 叢集的步驟K8S
- Redis哨兵叢集:哨兵掛了,主從庫還能切換嗎?Redis
- 轉換成浮點數
- kafka系列二:多節點分散式叢集搭建Kafka分散式
- CentOS7 上搭建多節點 Elasticsearch叢集CentOSElasticsearch
- hadoop叢集搭建——單節點(偽分散式)Hadoop分散式
- RAC修改叢集兩個節點public ip地址
- hadoop叢集多節點安裝詳解Hadoop
- 升級kubeadm 叢集(只有master單節點)AST
- Oracle資料庫從Linux x86單機遷移到Solaries雙節點RAC叢集經驗分享-生產環境切換Oracle資料庫Linux
- DKHhadoop叢集新增節點管理功能的操作步驟Hadoop