Linux中MySQL 雙主復(fù)制的配置指南
前言
在數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,數(shù)據(jù)庫(kù)的高可用性和數(shù)據(jù)一致性是每個(gè)企業(yè)必須考慮的重要問(wèn)題。MySQL 雙主復(fù)制(Master-Master Replication)提供了一種有效的解決方案,通過(guò)配置兩臺(tái)服務(wù)器互為主從,保證數(shù)據(jù)的實(shí)時(shí)同步和高可用性。本文將詳細(xì)介紹如何配置基于 GTID 的 MySQL 雙主復(fù)制,并進(jìn)行測(cè)試驗(yàn)證。
配置基于GTID的復(fù)制模式
GTID(全局事務(wù)標(biāo)識(shí)符)是 MySQL 提供的一種新型復(fù)制方式,它簡(jiǎn)化了主從復(fù)制的配置和管理,確保數(shù)據(jù)的一致性和完整性。在配置 MySQL 雙主復(fù)制之前,我們需要確保兩臺(tái)主服務(wù)器都啟用了 GTID 模式。
第一臺(tái)主服務(wù)器配置
主服務(wù)器配置
首先,我們需要修改第一臺(tái)主服務(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)識(shí)符。log_bin:?jiǎn)⒂枚M(jìn)制日志記錄。gtid_mode:?jiǎn)⒂?GTID 模式。enforce_gtid_consistency:強(qiáng)制 GTID 一致性。
修改完配置文件后,重啟 MySQL 服務(wù)使配置生效:
systemctl restart mysqld
創(chuàng)建具有復(fù)制權(quán)限的用戶
接下來(lái),我們需要?jiǎng)?chuàng)建一個(gè)具有復(fù)制權(quán)限的用戶,用于兩臺(tái)服務(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)。
啟動(dòng)從服務(wù)
在創(chuàng)建好用戶之后,進(jìn)入 MySQL 數(shù)據(jù)庫(kù)執(zhí)行以下命令,將另一臺(tái)主服務(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;
啟動(dòng)從服務(wù):
start slave;
第二臺(tái)主服務(wù)器配置
主服務(wù)器配置
在第二臺(tái)主服務(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;
啟動(dòng)從服務(wù)
進(jìn)入 MySQL 數(shù)據(jù)庫(kù)執(zhí)行以下命令,將第一臺(tái)主服務(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;
啟動(dòng)從服務(wù):
start slave;


測(cè)試雙主復(fù)制配置
第一臺(tái)主服務(wù)器測(cè)試
在第一臺(tái)主服務(wù)器上,向 hello 數(shù)據(jù)庫(kù)的 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)
第二臺(tái)主服務(wù)器測(cè)試
在第二臺(tái)主服務(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é)
通過(guò)以上配置和測(cè)試,我們成功地實(shí)現(xiàn)了 MySQL 雙主復(fù)制。此配置不僅提高了數(shù)據(jù)庫(kù)的可用性,還確保了數(shù)據(jù)的一致性。在實(shí)際生產(chǎn)環(huán)境中,這種配置可以極大地減少數(shù)據(jù)丟失的風(fēng)險(xiǎn),提升系統(tǒng)的容災(zāi)能力。希望本文對(duì)您在 MySQL 雙主復(fù)制的配置上有所幫助。如果有任何問(wèn)題或建議,歡迎留言討論。
以上就是Linux中MySQL 雙主復(fù)制的配置指南的詳細(xì)內(nèi)容,更多關(guān)于Linux MySQL雙主復(fù)制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL如何更改數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)目錄詳解
這篇文章主要給大家介紹了關(guān)于MySQL如何更改數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)目錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
mysql 數(shù)據(jù)庫(kù)備份和還原方法集錦 推薦
優(yōu)化 MySQL 3 個(gè)簡(jiǎn)單的小調(diào)整
Mysql優(yōu)化之Zabbix分區(qū)優(yōu)化
navicat如何利用sql語(yǔ)句查詢表所有字段的字段名、類型及長(zhǎng)度
MySQL中CONCAT和GROUP_CONCAT方法的區(qū)別詳解
MySQL與PHP的基礎(chǔ)與應(yīng)用專題之?dāng)?shù)據(jù)完整性

