mysql主從復(fù)制的實(shí)現(xiàn)步驟
mysql主從復(fù)制
本來(lái)是在做sharding的,可是做好之后發(fā)現(xiàn)數(shù)據(jù)庫(kù)的主從復(fù)制還沒(méi)有做,所以在配置好了之后做了些記錄:
mysql主從復(fù)制的方式
mysql主從復(fù)制有兩種方式:基于日志(binlog)、基于GTID(全局事物標(biāo)示符)本博文用的是基于日志(binlog)的復(fù)制。
mysql主從復(fù)制的原理
1、 Master將數(shù)據(jù)記錄到二進(jìn)制日志中,也就是mysql配置文件my.cnf的log-bin指定的文件,這些記錄叫做二進(jìn)制日志事件。
2、 Slave有兩個(gè)線程,一個(gè)I/O線程,一個(gè)SQL線程。I/O線程請(qǐng)求Master,將得到的binlog日志寫到relay log(中繼日志) 文件中。
3、 SQL 線程,會(huì)讀取relay log文件中的日志,并解析成具體操作,來(lái)實(shí)現(xiàn)主從的操作一致,而最終數(shù)據(jù)一致。

mysql的主從配置的具體實(shí)現(xiàn)方式
1、 Master配置
(1) 修改mysql的my.cnf配置文件,這里比較坑爹的是我用的mysql版本沒(méi)有my.cnf 配置文件,連my-default.cnf都沒(méi)有,一般來(lái)說(shuō)my.cnf在/etc目錄下, my-default.cnf在/usr/local/mysql/support-files中。最終我在網(wǎng)上復(fù)制了一份my.cnf文件放在了/etc中(朋友們可以自己去網(wǎng)上找,有很多的)。
(2) my.cnf中需要修改的配置主要有開啟日志功能,設(shè)置server_id保證其唯一性(不能跟從庫(kù)一樣),過(guò)濾需備份的數(shù)據(jù)庫(kù)。
bash-3.2# vim /etc/my.cnf # 設(shè)置server_id,不能重復(fù),一般可以設(shè)置為主庫(kù)的IP server_id=81 # 備份過(guò)濾:需要備份的數(shù)據(jù)庫(kù),輸出binlog binlog-do-db=demo_ds_master # 備份過(guò)濾:不需要備份的數(shù)據(jù)庫(kù),不輸出 binlog-ignore-db=mysql # 開啟二進(jìn)制日志,將主庫(kù)數(shù)據(jù)記錄到mysql-bin開頭的日志文件中(可自定義) log-bin=mysql-bin # 配置每個(gè)session的內(nèi)存,在事物過(guò)程中用來(lái)存儲(chǔ)二進(jìn)制日志的緩存 binlog_cache_size=1M # 主從復(fù)制的格式(mixed,statement,row 默認(rèn)的是statement) binlog_format=mixed # 二進(jìn)制日志自動(dòng)刪除/過(guò)期的天數(shù),默認(rèn)為0,不自動(dòng)刪除 expire_logs_days=7 # 用于跳過(guò)主從復(fù)制中遇到的所有錯(cuò)誤或指定的錯(cuò)誤類型,避免slave端的終端 # 1062:主鍵沖突(具體的參數(shù)可以去網(wǎng)上查詢) slave_skip_errors=1062
(3) 啟動(dòng)/重啟Master數(shù)據(jù)庫(kù)服務(wù),登錄數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)同步用戶,并授權(quán)
#授權(quán)這個(gè)機(jī)器可以備份主數(shù)據(jù)庫(kù)的數(shù)據(jù) mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'192.168.31.60' identified by 'password'; #然后刷新權(quán)限 mysql> flush privileges; #查看配置的主庫(kù)信息 mysql> show master status;
(4) 主庫(kù)數(shù)據(jù)備份,確保主從庫(kù)的數(shù)據(jù)一致性
# 臨時(shí)鎖住表,設(shè)置只讀權(quán)限 mysql> flush tables with read lock; # 備份數(shù)據(jù)庫(kù) bash-3.2# mysqldump -uroot -p --add-drop-table demo_ds_master_1 > /tmp/demo_ds_master_1.sql; # 解鎖表 mysql> unlock table;
2、 Slave配置
(1) 修改從數(shù)據(jù)庫(kù)mysql的my.cnf配置文件,添加從數(shù)據(jù)庫(kù)的中繼日志配置
[root@develop etc]# vim my.cnf # 設(shè)置server_id,不能重復(fù),這里設(shè)置的是從庫(kù)的IP server-id=60 # 開啟從數(shù)據(jù)庫(kù)中繼日志,將主數(shù)據(jù)庫(kù)的binlog寫到relay log中,中繼日志以hehe-mysql-relay-bin開頭(可自定義) relay_log=hehe-mysql-relay-bin # 設(shè)置從數(shù)據(jù)庫(kù)為只讀權(quán)限,防止主從數(shù)據(jù)不一致 read_only=1
(2) 如果從庫(kù)需要作為另一個(gè)庫(kù)的主庫(kù)的話,需要加上Master上的配置信息,并且加上log_slave_updates=1將Master的binlog記錄到自己的binlog日志中。
(3) 重啟從庫(kù)數(shù)據(jù)庫(kù),同步主庫(kù)數(shù)據(jù)
# 運(yùn)行主數(shù)據(jù)庫(kù)的備份數(shù)據(jù)庫(kù) [root@develop etc]# mysql -uroot -p demo_ds_master_1 < /tmp/demo_ds_master_1.sql # 登錄從數(shù)據(jù)庫(kù) [root@develop etc]# mysql -uroot -p # 設(shè)置該從節(jié)點(diǎn)的主節(jié)點(diǎn) mysql> change master to master_host='192.168.31.80', master_user='root',master_password='password', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=154; # 開啟主從同步 mysql> start slave; # 查看主從同步狀態(tài) mysql> show slave status\G; # 查看主從線程狀態(tài) mysql> show processlist\G;
圖片中顯示如下,說(shuō)明主從復(fù)制已經(jīng)配置好了,下面主庫(kù)插入數(shù)據(jù)就可以實(shí)現(xiàn)從庫(kù)自動(dòng)復(fù)制主庫(kù)數(shù)據(jù)了。
- Slave_IO_State: Waiting for master to send event
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
到此這篇關(guān)于mysql主從復(fù)制的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)mysql主從復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Window系統(tǒng)下自動(dòng)備份MySql數(shù)據(jù)庫(kù)方法
Window下可以使用Bat批處理文件來(lái)對(duì)MySql進(jìn)行備份操作,備份時(shí)一般數(shù)據(jù)量較大的情況可以使用復(fù)制文件的方式,但是這種方式要求服務(wù)器停機(jī)或者停止寫入命令,不大使用2012-11-11
mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測(cè)安裝有效)
這篇文章主要介紹了mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測(cè)安裝有效),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
mysql服務(wù)設(shè)置遠(yuǎn)程連接如何解決1251 client does not su
文章介紹了如何在遠(yuǎn)程主機(jī)上配置MySQL環(huán)境,并使用Navicat連接遠(yuǎn)程MySQL數(shù)據(jù)庫(kù)的步驟,包括前期準(zhǔn)備、mysql配置以及使用Navicat連接的過(guò)程2024-12-12
MySQL 搭建雙主復(fù)制服務(wù)并通過(guò) HAProxy 負(fù)載均衡的過(guò)程詳解
在數(shù)據(jù)庫(kù)管理中,數(shù)據(jù)的備份和同步是至關(guān)重要的環(huán)節(jié),而雙主復(fù)制(Dual Master Replication)作為一種高可用性和數(shù)據(jù)同步的解決方案,本文將介紹MySQL雙主復(fù)制的配置過(guò)程并通過(guò) HAProxy 負(fù)載均衡,感興趣的朋友一起看看吧2024-03-03
系統(tǒng)高吞吐量下的數(shù)據(jù)庫(kù)重復(fù)寫入問(wèn)題分析解決
這篇文章主要介紹了系統(tǒng)高吞吐量下的數(shù)據(jù)庫(kù)重復(fù)寫入問(wèn)題分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
pymysql操作mysql數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了pymysql簡(jiǎn)單操作mysql數(shù)據(jù)庫(kù)的方法,主要講的是一些基礎(chǔ)的pymysql操作mysql數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2023-04-04
MYSQL如何查詢成績(jī)?yōu)榍?名的學(xué)生
這篇文章主要介紹了MYSQL如何查詢成績(jī)?yōu)榍?名的學(xué)生問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
mysql設(shè)置默認(rèn)值無(wú)效問(wèn)題及解決
這篇文章主要介紹了mysql設(shè)置默認(rèn)值無(wú)效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
MAC下MYSQL5.7.17連接不上的問(wèn)題及解決辦法
MAC下MYSQL5.7.17無(wú)法連接的問(wèn)題,下載安裝完SQLBench_community 6.3.9后新建MYSQL CONNECTIONS根本連接不上,提示為密碼錯(cuò),什么原因如何解決呢?今天小編給大家解答下2017-02-02

