MySQL完全同步復(fù)制的幾種實(shí)現(xiàn)方法
引言
完全同步復(fù)制(Fully Synchronous Replication)確保主庫(kù)上的事務(wù)只有在所有從庫(kù)都確認(rèn)接收并應(yīng)用后才會(huì)向客戶端返回成功響應(yīng)。以下是幾種實(shí)現(xiàn)完全同步復(fù)制的方法:
1. 使用MySQL Group Replication (推薦)
MySQL Group Replication提供了真正的同步復(fù)制能力,是官方推薦的完全同步解決方案。
配置步驟
所有節(jié)點(diǎn)配置 (my.cnf):
[mysqld] # 通用配置 server_id = [唯一ID] gtid_mode = ON enforce_gtid_consistency = ON binlog_format = ROW # Group Replication配置 plugin_load_add = 'group_replication.so' transaction_write_set_extraction = XXHASH64 group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # 唯一UUID group_replication_start_on_boot = OFF group_replication_local_address = "節(jié)點(diǎn)IP:33061" group_replication_group_seeds = "節(jié)點(diǎn)1IP:33061,節(jié)點(diǎn)2IP:33061,節(jié)點(diǎn)3IP:33061" group_replication_bootstrap_group = OFF group_replication_consistency = BEFORE_AND_AFTER # 完全同步關(guān)鍵參數(shù)
初始化集群:
-- 在第一個(gè)節(jié)點(diǎn)執(zhí)行 SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF; -- 在其他節(jié)點(diǎn)執(zhí)行 START GROUP_REPLICATION;
2. 使用Galera Cluster (適用于MariaDB/Percona XtraDB Cluster)
Galera提供同步多主復(fù)制方案。
配置步驟
所有節(jié)點(diǎn)配置:
[mysqld] wsrep_on = ON wsrep_provider = /usr/lib/galera/libgalera_smm.so wsrep_cluster_name = "my_cluster" wsrep_cluster_address = "gcomm://node1_ip,node2_ip,node3_ip" wsrep_node_name = "node1" wsrep_node_address = "當(dāng)前節(jié)點(diǎn)IP" wsrep_sst_method = rsync binlog_format = ROW default_storage_engine = InnoDB
啟動(dòng)集群:
# 第一個(gè)節(jié)點(diǎn) systemctl start mysql --wsrep-new-cluster # 其他節(jié)點(diǎn) systemctl start mysql
3. 使用半同步復(fù)制的嚴(yán)格模式
雖然不是真正的完全同步,但可以配置為接近完全同步的行為。
強(qiáng)化配置
[mysqld] # 主庫(kù)配置 rpl_semi_sync_master_enabled = 1 rpl_semi_sync_master_wait_for_slave_count = [從庫(kù)數(shù)量] rpl_semi_sync_master_wait_point = AFTER_SYNC rpl_semi_sync_master_timeout = 18446744073709551615 # 最大可能值,幾乎不超時(shí) # 從庫(kù)配置 rpl_semi_sync_slave_enabled = 1
4. 使用MySQL NDB Cluster (適用于特定場(chǎng)景)
NDB Cluster提供同步復(fù)制但使用不同的存儲(chǔ)引擎。
完全同步復(fù)制的關(guān)鍵考量
- 性能影響:完全同步會(huì)顯著增加事務(wù)延遲
- 可用性:任何從庫(kù)故障都會(huì)導(dǎo)致整個(gè)系統(tǒng)不可用
- 網(wǎng)絡(luò)要求:需要低延遲、高可靠的網(wǎng)絡(luò)環(huán)境
- 最少節(jié)點(diǎn)數(shù):推薦至少3個(gè)節(jié)點(diǎn)以避免腦裂問(wèn)題
生產(chǎn)環(huán)境建議
Group Replication是最佳選擇,提供:
- 自動(dòng)故障檢測(cè)和恢復(fù)
- 真正的同步復(fù)制
- 官方支持
對(duì)于金融級(jí)應(yīng)用,考慮:
SET GLOBAL group_replication_consistency = BEFORE;
這確保讀取操作也能獲得最新的集群一致?tīng)顟B(tài)
監(jiān)控關(guān)鍵指標(biāo):
SELECT * FROM performance_schema.replication_group_members; SELECT * FROM performance_schema.replication_group_member_stats;
完全同步復(fù)制會(huì)顯著影響性能,只應(yīng)在確實(shí)需要最高級(jí)別數(shù)據(jù)一致性的場(chǎng)景中使用。
到此這篇關(guān)于MySQL完全同步復(fù)制的幾種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)MySQL完全同步復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份
備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)集合從應(yīng)用主機(jī)的硬盤或陣列復(fù)制到其它的存儲(chǔ)介質(zhì)的過(guò)程,本文將給大家介紹了在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下2023-12-12
解決mysql報(bào)錯(cuò)You must reset your password&nb
文章介紹了在Linux系統(tǒng)中解決MySQL 5.7及以上版本root用戶密碼過(guò)期無(wú)法登錄的問(wèn)題方法,以及如何處理系統(tǒng)權(quán)限表mysql.user結(jié)構(gòu)錯(cuò)誤的問(wèn)題2024-11-11
在windows環(huán)境下配置并隨意切換兩種mysql版本的方法
這篇文章主要介紹了mysql:如何在windows環(huán)境下配置并隨意切換兩種mysql版本,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
Navicat for MySQL 11注冊(cè)碼\激活碼匯總
Navicat for MySQL注冊(cè)碼用來(lái)激活 Navicat for MySQL 軟件,只要擁有 Navicat 注冊(cè)碼就能激活相應(yīng)的 Navicat 產(chǎn)品。這篇文章主要介紹了Navicat for MySQL 11注冊(cè)碼\激活碼匯總,需要的朋友可以參考下2020-11-11
MYSQL初始化數(shù)據(jù)目錄的實(shí)現(xiàn)步驟
本文主要介紹了MYSQL初始化數(shù)據(jù)目錄的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
MySQL中datetime和timestamp的區(qū)別及使用詳解
這篇文章主要介紹了MySQL中datetime和timestamp的區(qū)別及使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
MySQL數(shù)據(jù)庫(kù)備份和還原的常用命令小結(jié)
MySQL數(shù)據(jù)庫(kù)備份和還原的常用命令小結(jié),學(xué)習(xí)mysql的朋友可以參考下2012-03-03

