MySQL主從復(fù)制基于binlog與GTID詳解
一、基于binlog的主從復(fù)制搭建
1、準(zhǔn)備環(huán)境
提前準(zhǔn)備三臺搭建了MySQL以及關(guān)閉防火墻的linux,并保證三臺MySQL起始數(shù)據(jù)一致
實(shí)戰(zhàn)中最好是新的mysql,方便操作
如果無法新建需使用數(shù)據(jù)備份方式將數(shù)據(jù)庫數(shù)據(jù)恢復(fù)一致
2、數(shù)據(jù)庫中創(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)境中密碼采用高級別的密碼,實(shí)際生產(chǎn)環(huán)境中將'%'換成具體的ip #注意:該用戶理論上只需要主庫存在,從庫不需要創(chuàng)建,但在實(shí)戰(zhàn)中,由于各種突發(fā)情況從庫隨時有可能升級為主庫,所以所有從庫也要創(chuàng)建 replication slave:擁有此權(quán)限可以查看從服務(wù)器,從主服務(wù)器讀取二進(jìn)制日志。 super權(quán)限:允許用戶使用修改全局變量的SET語句以及CHANGE MASTER語句 reload權(quán)限:必須擁有reload權(quán)限,才可以執(zhí)行flush [tables | logs | privileges]
3、主庫的配置
修改數(shù)據(jù)庫配置文件 /etc/my.cnf 保證主庫以下兩點(diǎn) 1.binlog日志功能打開 2.擁有server-id,并且在該主從復(fù)制集群中唯一 log-bin=/opt/xiaolu/log/a.log (自己寫目錄) server-id=153 (要保持唯一) 重啟數(shù)據(jù)庫
#進(jìn)入主庫查看當(dāng)前主庫狀態(tài) mysql> show master status\G # 注意:此次查詢關(guān)注file和position兩條信息,從庫配置時使用
4、從庫的配置
修改數(shù)據(jù)庫配置文件 /etc/my.cnf 保證從庫有唯一的server-id 重啟數(shù)據(jù)庫
進(jìn)入從庫 #查看從庫當(dāng)前監(jiān)聽主庫狀態(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', #主庫ip MASTER_USER='testslave', #主庫用戶名(第二步創(chuàng)建的) MASTER_PASSWORD='123456', #主庫密碼(第二步創(chuàng)建的) MASTER_LOG_FILE='a.000002', #主庫配置文件(第三步主庫配置時截圖的參數(shù)) MASTER_LOG_POS=154; #主庫日志偏移量(第三步主庫配置時截圖的參數(shù)) # 開啟監(jiān)聽 mysql> start slave; #查看從庫當(dāng)前監(jiān)聽主庫狀態(tài) mysql> show slave status\G 如果報UUID錯誤信息就去/opt/xiaolu/data/mysql/auto.cnf文件去改UUID
提示:重置從庫的復(fù)制配置命令:RESET SLAVE ALL;
5、修改UUID
# vim /opt/xiaolu/data/mysql/auto.cnf [auto] server-uuid=e2ee6d4c-80c9-11ef-9bac-000c297e2bf5 隨便改個數(shù)字就可以 [root@localhost mysql]# service mysqld stop Shutting down MySQL.. SUCCESS! [root@localhost mysql]# service mysqld start Starting MySQL. SUCCESS! 重啟數(shù)據(jù)庫
6、查看從庫當(dāng)前監(jiān)聽主庫狀態(tài)
mysql> show slave status\G
7、其余從庫配置與以上相同
配置完成后查看主從復(fù)制是否實(shí)現(xiàn)
# 查看線程 mysql> SHOW PROCESSLIST\G
- 第 1 行 - 表示當(dāng)前有一個由
root
用戶在本地(localhost
)執(zhí)行的SHOW PROCESSLIST
查詢,狀態(tài)為 starting,說明該命令剛剛開始執(zhí)行,花費(fèi)的時間為 0。 - 第 2 行 和 第 3 行 - 這兩行顯示的是來自用戶
testslave
的兩個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,這意味著從庫正在等待來自主庫的新更新。
二、基于GTID的主從復(fù)制搭建
1、準(zhǔn)備三臺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)境中密碼采用高級別的密碼,實(shí)際生產(chǎn)環(huán)境中將'%'換成具體的ip #注意:該用戶理論上只需要主庫存在,從庫不需要創(chuàng)建,但在實(shí)戰(zhàn)中,由于各種突發(fā)情況從庫隨時有可能升級為主庫,所以所有從庫也要創(chuàng)建 replication slave:擁有此權(quán)限可以查看從服務(wù)器,從主服務(wù)器讀取二進(jìn)制日志。 super權(quán)限:允許用戶使用修改全局變量的SET語句以及CHANGE MASTER語句 reload權(quán)限:必須擁有reload權(quán)限,才可以執(zhí)行flush [tables | logs | privileges]
2、主庫配置
修改數(shù)據(jù)庫配置文件 /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ù)庫
3、從庫配置
修改數(shù)據(jù)庫配置文件 /etc/my.cnf server-id=154 gtid_mode=ON enforce_gtid_consistency=1 重啟數(shù)據(jù)庫
#進(jìn)入從庫 mysql> stop slave; #停止數(shù)據(jù)庫監(jiān)聽 Query OK, 0 rows affected (0.01 sec) #設(shè)置從庫監(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) # 查看從庫監(jiān)聽狀態(tài) mysql> show slave status\G
4、其余從庫做相同配置,查看主從復(fù)制狀態(tài)
# 查看線程 mysql> SHOW PROCESSLIST\G
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Windows下MySQL定時備份腳本的實(shí)現(xiàn)
這篇文章主要介紹了Windows下MySQL定時備份腳本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12MySQL與MSSQl使用While語句循環(huán)生成測試數(shù)據(jù)的代碼
有時候我們測試性能的時候經(jīng)常需要生產(chǎn)大量的測試數(shù)據(jù),用sql語句直接生成的數(shù)據(jù)更快,需要的朋友可以參考下。2010-12-12MySQL 有關(guān)MHA搭建與切換的幾個錯誤log匯總
這篇文章主要介紹了MySQL 有關(guān)MHA搭建與切換的幾個錯誤log匯總,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2020-12-12利用Prometheus與Grafana對Mysql服務(wù)器的性能監(jiān)控詳解
Prometheus是源于 Google Borgmon的一個開源監(jiān)控系統(tǒng),用 Golang開發(fā)。被很多人稱為下一代監(jiān)控系統(tǒng)。Grafana是一個開源的圖表可視化系統(tǒng),簡單說圖表配置比較方便、生成的圖表比較漂亮。下面就介紹了利用Prometheus與Grafana對Mysql服務(wù)器性能監(jiān)控的方法。2017-03-03MySQL安裝報錯找不到MSVCR120.dll文件丟失的解決方案
文章介紹了解決MSVCR120.dll丟失問題的幾種方法,包括重新安裝Microsoft Visual C++ Redistributable、手動下載DLL文件、運(yùn)行系統(tǒng)文件檢查工具、檢查系統(tǒng)更新以及卸載并重新安裝相關(guān)軟件2024-12-12mysql多行子查詢實(shí)戰(zhàn)案例(只包含不相關(guān)子查詢)
在MySQL中多行子查詢(也稱為 IN 子查詢)是指子查詢返回多行數(shù)據(jù),并且這些數(shù)據(jù)用于主查詢中的某個條件判斷,這篇文章主要介紹了mysql多行子查詢(只包含不相關(guān)子查詢)的相關(guān)資料,需要的朋友可以參考下2024-10-10