Mysql主從數(shù)據(jù)庫(kù)(Master/Slave)同步配置與常見(jiàn)錯(cuò)誤
隨著訪問(wèn)量的增加,對(duì)于一些比較耗時(shí)的數(shù)據(jù)庫(kù)讀取操作,一般采用將寫(xiě)入與讀取操作分開(kāi)來(lái)緩解數(shù)據(jù)庫(kù)的壓力,數(shù)據(jù)庫(kù)引擎一般采用Master/Slave架構(gòu)。實(shí)現(xiàn)mysql服務(wù)器的主從配置,可以實(shí)現(xiàn)讀寫(xiě)分離,另外在主數(shù)據(jù)庫(kù)崩潰后可以從備用數(shù)據(jù)庫(kù)中恢復(fù)數(shù)據(jù)以不至于網(wǎng)站中斷訪問(wèn)。下面簡(jiǎn)單說(shuō)下mysql主從服務(wù)器配置的過(guò)程。
首先需要在同一個(gè)局域網(wǎng)內(nèi)的兩臺(tái)機(jī)器(當(dāng)然也可以用一臺(tái)機(jī)器虛擬兩臺(tái)機(jī)器出來(lái)),都安裝上mysql服務(wù)。
主機(jī)A: 192.168.1.100
從機(jī)B: 192.168.1.101
可以有多臺(tái)從機(jī)。
1、先登錄主機(jī) A,執(zhí)行如下命令賦予從機(jī)權(quán)限,如果有多臺(tái)叢機(jī),就執(zhí)行多次:
mysql>GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.1.101' IDENTIFIED BY '123456';
2、 打開(kāi)主機(jī)A的my.cnf,輸入如下配置參數(shù):
server-id = 1 #主機(jī)標(biāo)示,整數(shù) log_bin = /var/log/mysql/mysql-bin.log #確保此文件可寫(xiě) read-only =0 #主機(jī),讀寫(xiě)都可以 binlog-do-db =test #需要備份數(shù)據(jù),多個(gè)寫(xiě)多行 binlog-ignore-db =mysql #不需要備份的數(shù)據(jù)庫(kù),多個(gè)寫(xiě)多行
3、打開(kāi)從機(jī)B的my.cnf,輸入如下配置參數(shù):
server-id = 2 log_bin = /var/log/mysql/mysql-bin.log master-host =192.168.1.100 master-user =backup master-pass =123456 master-port =3306 master-connect-retry=60 #如果從服務(wù)器發(fā)現(xiàn)主服務(wù)器斷掉,重新連接的時(shí)間差(秒) replicate-do-db =test #只復(fù)制某個(gè)庫(kù) replicate-ignore-db=mysql #不復(fù)制某個(gè)庫(kù)
4、同步數(shù)據(jù)庫(kù)
進(jìn)過(guò)以上的配置,分別重啟主機(jī)A和從機(jī)B,即可自動(dòng)實(shí)現(xiàn)同步。
5、驗(yàn)證
在主機(jī)A中,mysql>show master status\G;
能看到大致這些內(nèi)容
File: mysql-bin.000001
Position: 1374
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
在從機(jī)B中,mysql>show slave status\G;
顯示內(nèi)容如下圖所示:
可以看到Slave_IO_State項(xiàng)為Waiting for master to send event且紅圈中兩項(xiàng)皆為Yes,那么基本上可以確定是配置成功了
另外可以在主機(jī)A中,做一些INSERT
, UPDATE
, DELETE
操作,看看主機(jī)B中,是否已經(jīng)被修改。
常見(jiàn)錯(cuò)誤
1、master發(fā)生故障,經(jīng)修復(fù)后啟動(dòng)后,slave無(wú)法與master同步
報(bào)錯(cuò):Got fatal error 1236 from master when reading data from binary log
原因:master重啟后,mysql的binlog會(huì)重新生成,相應(yīng)的記錄位置會(huì)改變
解決方法:
-master:
mysql > flush logs; mysql > show master status;
記錄下File和Position值
-slave:
mysql > stop slave; mysql > CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000049',MASTER_LOG_POS=1359; mysql > start slave; mysql > show slave status\G;
2、slave發(fā)生故障,設(shè)置正確,但是無(wú)法初始化
報(bào)錯(cuò):ERROR 1201 (HY000): Could not initialize master
解決方法:
-master:
mysql > flush logs; mysql > show master status;
記錄下File和Position值
-slave:
mysql > reset slave; mysql > change master to master_host='192.168.10.100',master_user='test',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=106; mysql > start slave; mysql > show slave status\G;
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
mysql 8.0 Windows zip包版本安裝詳細(xì)過(guò)程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0 Windows zip包版本安裝詳細(xì)過(guò)程,以及密碼認(rèn)證插件修改,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05MySQL數(shù)據(jù)庫(kù)高可用HA實(shí)現(xiàn)小結(jié)
MySQL數(shù)據(jù)庫(kù)是目前開(kāi)源應(yīng)用最大的關(guān)系型數(shù)據(jù)庫(kù),有海量的應(yīng)用將數(shù)據(jù)存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)中,這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)高可用HA實(shí)現(xiàn),需要的朋友可以參考下2022-01-01mysql中刪除數(shù)據(jù)的幾種方法(最新推薦)
在MySQL數(shù)據(jù)庫(kù)中,刪除數(shù)據(jù)是一個(gè)常見(jiàn)的操作,它允許從表中移除不再需要的數(shù)據(jù),在執(zhí)行刪除操作時(shí),需要謹(jǐn)慎,以免誤刪重要數(shù)據(jù),本文給大家介紹mysql中刪除數(shù)據(jù)的幾種方法,感興趣的朋友一起看看吧2023-11-11使用Shell腳本進(jìn)行MySql權(quán)限修改的實(shí)現(xiàn)教程
原先數(shù)據(jù)配置文件中有bind-address=127.0.0.1,注釋掉此配置后,原數(shù)據(jù)庫(kù)中默認(rèn)帶%root的權(quán)限,現(xiàn)在需要通過(guò)腳本實(shí)現(xiàn)白名單列表中的ip添加權(quán)限允許訪問(wèn)數(shù)據(jù)庫(kù),本文給大家介紹了使用Shell腳本進(jìn)行MySql權(quán)限修改的實(shí)現(xiàn)教程,需要的朋友可以參考下2024-03-03