MySQL主從復(fù)制基于binlog與GTID詳解
一、基于binlog的主從復(fù)制搭建
1、準(zhǔn)備環(huán)境
提前準(zhǔn)備三臺(tái)搭建了MySQL以及關(guān)閉防火墻的linux,并保證三臺(tái)MySQL起始數(shù)據(jù)一致
實(shí)戰(zhàn)中最好是新的mysql,方便操作
如果無(wú)法新建需使用數(shù)據(jù)備份方式將數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)一致
2、數(shù)據(jù)庫(kù)中創(chuàng)建并授權(quán)有主從復(fù)制權(quán)限賬戶
mysql> grant replication slave,reload,super on *.* to 'testslave'@'%' identified by '123456'; mysql> flush privileges; #注意:生產(chǎn)環(huán)境中密碼采用高級(jí)別的密碼,實(shí)際生產(chǎn)環(huán)境中將'%'換成具體的ip #注意:該用戶理論上只需要主庫(kù)存在,從庫(kù)不需要?jiǎng)?chuàng)建,但在實(shí)戰(zhàn)中,由于各種突發(fā)情況從庫(kù)隨時(shí)有可能升級(jí)為主庫(kù),所以所有從庫(kù)也要?jiǎng)?chuàng)建 replication slave:擁有此權(quán)限可以查看從服務(wù)器,從主服務(wù)器讀取二進(jìn)制日志。 super權(quán)限:允許用戶使用修改全局變量的SET語(yǔ)句以及CHANGE MASTER語(yǔ)句 reload權(quán)限:必須擁有reload權(quán)限,才可以執(zhí)行flush [tables | logs | privileges]
3、主庫(kù)的配置
修改數(shù)據(jù)庫(kù)配置文件 /etc/my.cnf 保證主庫(kù)以下兩點(diǎn) 1.binlog日志功能打開 2.擁有server-id,并且在該主從復(fù)制集群中唯一 log-bin=/opt/xiaolu/log/a.log (自己寫目錄) server-id=153 (要保持唯一) 重啟數(shù)據(jù)庫(kù)

#進(jìn)入主庫(kù)查看當(dāng)前主庫(kù)狀態(tài) mysql> show master status\G # 注意:此次查詢關(guān)注file和position兩條信息,從庫(kù)配置時(shí)使用

4、從庫(kù)的配置
修改數(shù)據(jù)庫(kù)配置文件 /etc/my.cnf 保證從庫(kù)有唯一的server-id 重啟數(shù)據(jù)庫(kù)

進(jìn)入從庫(kù)
#查看從庫(kù)當(dāng)前監(jiān)聽主庫(kù)狀態(tài)
mysql> show slave status\G
Empty set (0.00 sec) #默認(rèn)未開啟監(jiān)聽
# 執(zhí)行如下命令
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.37.153', #主庫(kù)ip
MASTER_USER='testslave', #主庫(kù)用戶名(第二步創(chuàng)建的)
MASTER_PASSWORD='123456', #主庫(kù)密碼(第二步創(chuàng)建的)
MASTER_LOG_FILE='a.000002', #主庫(kù)配置文件(第三步主庫(kù)配置時(shí)截圖的參數(shù))
MASTER_LOG_POS=154; #主庫(kù)日志偏移量(第三步主庫(kù)配置時(shí)截圖的參數(shù))
# 開啟監(jiān)聽
mysql> start slave;
#查看從庫(kù)當(dāng)前監(jiān)聽主庫(kù)狀態(tài)
mysql> show slave status\G
如果報(bào)UUID錯(cuò)誤信息就去/opt/xiaolu/data/mysql/auto.cnf文件去改UUID提示:重置從庫(kù)的復(fù)制配置命令:RESET SLAVE ALL;

5、修改UUID
# vim /opt/xiaolu/data/mysql/auto.cnf [auto] server-uuid=e2ee6d4c-80c9-11ef-9bac-000c297e2bf5 隨便改個(gè)數(shù)字就可以 [root@localhost mysql]# service mysqld stop Shutting down MySQL.. SUCCESS! [root@localhost mysql]# service mysqld start Starting MySQL. SUCCESS! 重啟數(shù)據(jù)庫(kù)


6、查看從庫(kù)當(dāng)前監(jiān)聽主庫(kù)狀態(tài)
mysql> show slave status\G

7、其余從庫(kù)配置與以上相同
配置完成后查看主從復(fù)制是否實(shí)現(xiàn)
# 查看線程 mysql> SHOW PROCESSLIST\G

- 第 1 行 - 表示當(dāng)前有一個(gè)由
root用戶在本地(localhost)執(zhí)行的SHOW PROCESSLIST查詢,狀態(tài)為 starting,說(shuō)明該命令剛剛開始執(zhí)行,花費(fèi)的時(shí)間為 0。 - 第 2 行 和 第 3 行 - 這兩行顯示的是來(lái)自用戶
testslave的兩個(gè)Binlog Dump進(jìn)程,其主機(jī)分別為192.168.37.154和192.168.37.155。它們的狀態(tài)均為 Master has sent all binlog to slave; waiting for more updates,這意味著從庫(kù)正在等待來(lái)自主庫(kù)的新更新。
二、基于GTID的主從復(fù)制搭建
1、準(zhǔn)備三臺(tái)mysql機(jī)器環(huán)境,并且創(chuàng)建mysql并賦予權(quán)限,同上
mysql> grant replication slave,reload,super on *.* to 'testslave'@'%' identified by '123456'; mysql> flush privileges; #注意:生產(chǎn)環(huán)境中密碼采用高級(jí)別的密碼,實(shí)際生產(chǎn)環(huán)境中將'%'換成具體的ip #注意:該用戶理論上只需要主庫(kù)存在,從庫(kù)不需要?jiǎng)?chuàng)建,但在實(shí)戰(zhàn)中,由于各種突發(fā)情況從庫(kù)隨時(shí)有可能升級(jí)為主庫(kù),所以所有從庫(kù)也要?jiǎng)?chuàng)建 replication slave:擁有此權(quán)限可以查看從服務(wù)器,從主服務(wù)器讀取二進(jìn)制日志。 super權(quán)限:允許用戶使用修改全局變量的SET語(yǔ)句以及CHANGE MASTER語(yǔ)句 reload權(quán)限:必須擁有reload權(quán)限,才可以執(zhí)行flush [tables | logs | privileges]
2、主庫(kù)配置
修改數(shù)據(jù)庫(kù)配置文件 /etc/my.cnf 保證以下四點(diǎn) log-bin=/opt/xiaolu/log/a.log #開啟binlog日志,master必寫 server-id=153 #定義server id master必寫 并保持唯一 gtid_mode=ON #開啟gtid enforce_gtid_consistency=1 #強(qiáng)制gtid 重啟數(shù)據(jù)庫(kù)

3、從庫(kù)配置
修改數(shù)據(jù)庫(kù)配置文件 /etc/my.cnf server-id=154 gtid_mode=ON enforce_gtid_consistency=1 重啟數(shù)據(jù)庫(kù)

#進(jìn)入從庫(kù) mysql> stop slave; #停止數(shù)據(jù)庫(kù)監(jiān)聽 Query OK, 0 rows affected (0.01 sec) #設(shè)置從庫(kù)監(jiān)聽信息 mysql> change master to master_host='192.168.37.153', #主ip 地址 最好用域名 master_user='testslave', #主服務(wù)上面創(chuàng)建的用戶 master_password='111111', master_auto_position=1; Query OK, 0 rows affected, 2 warnings (0.00 sec) # 開啟監(jiān)聽 mysql> start slave; Query OK, 0 rows affected (0.00 sec) # 查看從庫(kù)監(jiān)聽狀態(tài) mysql> show slave status\G
4、其余從庫(kù)做相同配置,查看主從復(fù)制狀態(tài)
# 查看線程 mysql> SHOW PROCESSLIST\G
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MySQL gtid的具體使用
- MySQL基于GTID主從搭建
- MySQL復(fù)制之GTID復(fù)制的具體使用
- MySQL主從復(fù)制之GTID模式詳細(xì)介紹?
- MySQL在線開啟或禁用GTID模式
- MySQL GTID全面總結(jié)
- MYSQL數(shù)據(jù)庫(kù)GTID實(shí)現(xiàn)主從復(fù)制實(shí)現(xiàn)(超級(jí)方便)
- Mysql GTID Mha配置方法
- 詳解MySQL主從復(fù)制實(shí)戰(zhàn) - 基于GTID的復(fù)制
- MySQL9.1.0實(shí)現(xiàn)GTID模式的項(xiàng)目實(shí)踐
相關(guān)文章
Windows下MySQL定時(shí)備份腳本的實(shí)現(xiàn)
這篇文章主要介紹了Windows下MySQL定時(shí)備份腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
MySQL與MSSQl使用While語(yǔ)句循環(huán)生成測(cè)試數(shù)據(jù)的代碼
有時(shí)候我們測(cè)試性能的時(shí)候經(jīng)常需要生產(chǎn)大量的測(cè)試數(shù)據(jù),用sql語(yǔ)句直接生成的數(shù)據(jù)更快,需要的朋友可以參考下。2010-12-12
MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總
這篇文章主要介紹了MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2020-12-12
利用Prometheus與Grafana對(duì)Mysql服務(wù)器的性能監(jiān)控詳解
Prometheus是源于 Google Borgmon的一個(gè)開源監(jiān)控系統(tǒng),用 Golang開發(fā)。被很多人稱為下一代監(jiān)控系統(tǒng)。Grafana是一個(gè)開源的圖表可視化系統(tǒng),簡(jiǎn)單說(shuō)圖表配置比較方便、生成的圖表比較漂亮。下面就介紹了利用Prometheus與Grafana對(duì)Mysql服務(wù)器性能監(jiān)控的方法。2017-03-03
關(guān)于mysql基礎(chǔ)知識(shí)的介紹
本篇文章是對(duì)mysql的基礎(chǔ)知識(shí)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
MySQL安裝報(bào)錯(cuò)找不到MSVCR120.dll文件丟失的解決方案
文章介紹了解決MSVCR120.dll丟失問(wèn)題的幾種方法,包括重新安裝Microsoft Visual C++ Redistributable、手動(dòng)下載DLL文件、運(yùn)行系統(tǒng)文件檢查工具、檢查系統(tǒng)更新以及卸載并重新安裝相關(guān)軟件2024-12-12
mysql多行子查詢實(shí)戰(zhàn)案例(只包含不相關(guān)子查詢)
在MySQL中多行子查詢(也稱為 IN 子查詢)是指子查詢返回多行數(shù)據(jù),并且這些數(shù)據(jù)用于主查詢中的某個(gè)條件判斷,這篇文章主要介紹了mysql多行子查詢(只包含不相關(guān)子查詢)的相關(guān)資料,需要的朋友可以參考下2024-10-10

