Linux中MySQL 雙主復(fù)制的配置指南
前言
在數(shù)據(jù)驅(qū)動的時代,數(shù)據(jù)庫的高可用性和數(shù)據(jù)一致性是每個企業(yè)必須考慮的重要問題。MySQL 雙主復(fù)制(Master-Master Replication)提供了一種有效的解決方案,通過配置兩臺服務(wù)器互為主從,保證數(shù)據(jù)的實(shí)時同步和高可用性。本文將詳細(xì)介紹如何配置基于 GTID 的 MySQL 雙主復(fù)制,并進(jìn)行測試驗(yàn)證。
配置基于GTID的復(fù)制模式
GTID(全局事務(wù)標(biāo)識符)是 MySQL 提供的一種新型復(fù)制方式,它簡化了主從復(fù)制的配置和管理,確保數(shù)據(jù)的一致性和完整性。在配置 MySQL 雙主復(fù)制之前,我們需要確保兩臺主服務(wù)器都啟用了 GTID 模式。
第一臺主服務(wù)器配置
主服務(wù)器配置
首先,我們需要修改第一臺主服務(wù)器的配置文件 /etc/my.cnf,添加以下內(nèi)容:
server-id = 100 log_bin = mysql-bin gtid_mode = ON enforce_gtid_consistency = true
這些配置項(xiàng)的作用如下:
server-id:設(shè)置服務(wù)器的唯一標(biāo)識符。log_bin:啟用二進(jìn)制日志記錄。gtid_mode:啟用 GTID 模式。enforce_gtid_consistency:強(qiáng)制 GTID 一致性。
修改完配置文件后,重啟 MySQL 服務(wù)使配置生效:
systemctl restart mysqld
創(chuàng)建具有復(fù)制權(quán)限的用戶
接下來,我們需要創(chuàng)建一個具有復(fù)制權(quán)限的用戶,用于兩臺服務(wù)器之間的同步:
grant replication slave on *.* to 'repluser'@'192.168.192.%' identified by 'Abc-1234'; flush privileges; show master status\G;
這些 SQL 命令的作用如下:
grant replication slave:授予用戶復(fù)制權(quán)限。flush privileges:刷新權(quán)限,使之生效。show master status:查看主服務(wù)器的狀態(tài)。
啟動從服務(wù)
在創(chuàng)建好用戶之后,進(jìn)入 MySQL 數(shù)據(jù)庫執(zhí)行以下命令,將另一臺主服務(wù)器配置為從服務(wù)器:
mysql -uroot -pABCabc-123
change master to master_host="192.168.192.111", master_user="repluser", master_password="Abc-1234", master_auto_position=1;
啟動從服務(wù):
start slave;
第二臺主服務(wù)器配置
主服務(wù)器配置
在第二臺主服務(wù)器上,同樣需要修改配置文件 /etc/my.cnf,添加以下內(nèi)容:
server-id = 101 log_bin = mysql-bin gtid_mode = ON enforce_gtid_consistency = true
重啟 MySQL 服務(wù):
systemctl restart mysqld
創(chuàng)建具有復(fù)制權(quán)限的用戶
創(chuàng)建具有復(fù)制權(quán)限的用戶:
grant replication slave on *.* to 'repluser'@'192.168.192.%' identified by 'Abc-1234'; flush privileges; show master status\G;
啟動從服務(wù)
進(jìn)入 MySQL 數(shù)據(jù)庫執(zhí)行以下命令,將第一臺主服務(wù)器配置為從服務(wù)器:
mysql -uroot -pABCabc-123
change master to master_host="192.168.192.100", master_user="repluser", master_password="Abc-1234", master_auto_position=1;
啟動從服務(wù):
start slave;


測試雙主復(fù)制配置
第一臺主服務(wù)器測試
在第一臺主服務(wù)器上,向 hello 數(shù)據(jù)庫的 test 表插入數(shù)據(jù),并查看數(shù)據(jù)同步情況:
mysql> insert into hello.test values(2222); Query OK, 1 row affected (0.01 sec) mysql> select * from hello.test; +--------+ | num | +--------+ | 111111 | | 2222 | +--------+ 2 rows in set (0.00 sec) mysql> select * from hello.test; +---------+ | num | +---------+ | 111111 | | 2222 | | 3333333 | +---------+ 3 rows in set (0.01 sec)
第二臺主服務(wù)器測試
在第二臺主服務(wù)器上,查看剛剛插入的數(shù)據(jù),并插入新的數(shù)據(jù):
mysql> select * from hello.test; +--------+ | num | +--------+ | 111111 | | 2222 | +--------+ 2 rows in set (0.00 sec) mysql> insert into hello.test values(3333333); Query OK, 1 row affected (0.02 sec) mysql> select * from hello.test; +---------+ | num | +---------+ | 111111 | | 2222 | | 3333333 | +---------+ 3 rows in set (0.00 sec)
總結(jié)
通過以上配置和測試,我們成功地實(shí)現(xiàn)了 MySQL 雙主復(fù)制。此配置不僅提高了數(shù)據(jù)庫的可用性,還確保了數(shù)據(jù)的一致性。在實(shí)際生產(chǎn)環(huán)境中,這種配置可以極大地減少數(shù)據(jù)丟失的風(fēng)險,提升系統(tǒng)的容災(zāi)能力。希望本文對您在 MySQL 雙主復(fù)制的配置上有所幫助。如果有任何問題或建議,歡迎留言討論。
以上就是Linux中MySQL 雙主復(fù)制的配置指南的詳細(xì)內(nèi)容,更多關(guān)于Linux MySQL雙主復(fù)制的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL高效可靠處理持久化數(shù)據(jù)的教程指南
這篇文章主要給大家詳細(xì)介紹了 MySQL 如何高效可靠處理持久化數(shù)據(jù),文中有詳細(xì)的流程步驟和代碼示例,對我們的學(xué)習(xí)有一定的幫助,需要的朋友可以參考下2023-07-07
MySQL OOM 系統(tǒng)二 OOM Killer
前面一節(jié)重點(diǎn)分享了Linux的內(nèi)存分配策略,基于上述的分配策略,為了規(guī)避超售的風(fēng)險,Linux采了一種OOM Killer的機(jī)制,即系統(tǒng)可用內(nèi)存(包括Swap)即將使用完之前,選擇性的Kill掉一些進(jìn)程以求釋放一些內(nèi)存2016-07-07
linux CentOS 7.4下 mysql5.7.20 密碼改回來的處理方法
這篇文章主要介紹了linux CentOS 7.4下 mysql5.7.20 密碼改回來的處理方法,需要的朋友可以參考下2018-11-11
MySQL?INSERT?導(dǎo)致的死鎖問題分析及解決方案
本文分析MySQL8.4.6中并發(fā)INSERT導(dǎo)致的死鎖,指出因間隙鎖(由外鍵約束和主鍵UUID引發(fā))及頁分裂操作形成循環(huán)等待,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2025-08-08
Ubuntu10下如何搭建MySQL Proxy讀寫分離探討
MySQL Proxy是一個處于你的Client端和MySQL server端之間的簡單程序,它可以監(jiān)測、分析或改變它們的通信2012-11-11
MySQL json相關(guān)函數(shù)及功能詳解
MySQL提供了一系列的JSON函數(shù),用于解析、提取、修改和操作JSON數(shù)據(jù),以下是一些常用的JSON函數(shù)及其功能,需要的朋友可以參考下2023-11-11
MYSQL Left Join優(yōu)化(10秒優(yōu)化到20毫秒內(nèi))
在實(shí)際開發(fā)中,相信大多數(shù)人都會用到j(luò)oin進(jìn)行連表查詢,但是有些人發(fā)現(xiàn),用join好像效率很低,而且驅(qū)動表不同,執(zhí)行時間也不同。那么join到底是如何執(zhí)行的呢,本文就詳細(xì)的介紹一下2021-12-12

