MySQL主從復(fù)制與主主復(fù)制

MySQL主從復(fù)制與主主復(fù)制

主從復(fù)制:

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、武江網(wǎng)絡(luò)推廣、成都小程序開發(fā)、武江網(wǎng)絡(luò)營銷、武江企業(yè)策劃、武江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供武江建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn

1.環(huán)境說明:

準(zhǔn)備兩臺linux虛擬主機(jī)
Linux版本CentOS7、MySQL 5.7.17
ip:192.168.1.1、192.168.1.2

2.創(chuàng)建復(fù)制賬號

mysql會賦予一些特殊的權(quán)限給復(fù)制線程,在備庫運行的I/O線程會建立一個到主庫TCP/IP連接,這意味著必須在主庫創(chuàng)建一個用戶,并賦予其合適的權(quán)限,備庫I/O線程以該用戶名連接到主庫并取其二進(jìn)制日志;(摘自:高性能mysql => 復(fù)制)

在192.168.1.1 中創(chuàng)建一個192.168.1.2主機(jī)中可以登錄的MySQL用戶
//192.168.1.1 : 主數(shù)據(jù)庫服務(wù)器:

mysql>GRANT REPLICATION SLAVE ON *.* TO \'tongbu\'@\'192.168.1.2\' IDENTIFIED BY \'tongbu\'; mysql>FLUSH PRIVILEGES;

注意1:這里我把這個賬號限制在本地并且只有192.168.1.2這個主機(jī)可以訪問,因為這是一個特殊權(quán)限的賬號(盡管這個賬號無法執(zhí)行select或者update),但是任然能從二進(jìn)制日志中獲取一些數(shù)據(jù)(摘自:高性能mysql => 復(fù)制)

3.配置主庫和備庫

MySQL配置文件都在: /etc/my.cnf

1.在主庫的my.cnf文件的[mysqld]下添加:log-bin,server_id(具體如下:)

log-bin=mysql-bin # 開啟二進(jìn)制日志 server_id=10 # 0-232任取 但必須和其他數(shù)據(jù)庫中的不同 (必須唯一)!

注意:二進(jìn)制日志必須開啟,因為數(shù)據(jù)的同步實質(zhì)上就是其他的MySQL數(shù)據(jù)庫服務(wù)器將這個數(shù)據(jù)變更的二進(jìn)制日志在本機(jī)上再執(zhí)行一遍。

2.保存后重啟mysql 3.查看主庫中MySQL服務(wù)器二進(jìn)制文件名與位置

mysql>SHOW MASTER STATUS;

注意:這里重點關(guān)注File和Position這兩項;

4.告知二進(jìn)制文件名與位置

在備庫中執(zhí)行:

mysql>CHANGE MASTER TO >MASTER_HOST=\'192.168.1.1\', >MASTER_USER=\'tongbu\', >MASTER_PASSWORD=\'tongbu\', >MASTER_LOG_FILE=\'mysql-bin.000001\', >MASTER_LOG_POS=98;

完成主從復(fù)制配置

5.開啟并查看

在備庫中執(zhí)行:

mysql>START SLAVE; #開啟復(fù)制 mysql>SHOW SLAVE STATUSG #查看主從復(fù)制是否配置成功

注意:當(dāng)看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態(tài)正常(如有異常請看3.關(guān)于報錯中提供的解決方案!)


主主復(fù)制:

1.設(shè)置配置文件(參考上面)

–192.168.1.1

server-id=11 #任意自然數(shù)n,只要保證兩臺MySQL主機(jī)不重復(fù)就可以了。 log-bin=mysql-bin #開啟二進(jìn)制日志 auto_increment_increment=2 #步進(jìn)值auto_imcrement。一般有n臺主MySQL就填n auto_increment_offset=1 #起始值。一般填第n臺主MySQL。此時為第一臺主MySQL binlog-ignore=mysql #忽略mysql庫【我一般都不寫】 binlog-ignore=information_schema #忽略information_schema庫【我一般都不寫】 replicate-do-db=aa #要同步的數(shù)據(jù)庫,默認(rèn)所有庫

–192.168.1.2

server-id=12 log-bin=mysql-bin auto_increment_increment=2 auto_increment_offset=2 replicate-do-db=aa

配置好后重啟MySQL

2.創(chuàng)建復(fù)制賬號并配置二進(jìn)制文件名與位置

第一步:
在192.168.1.1中創(chuàng)建一個192.168.1.2主機(jī)中可以登錄的MySQL用戶

mysql>GRANT REPLICATION SLAVE ON *.* TO \'root\'@\'192.168.1.2\' IDENTIFIED BY \'root\'; mysql>FLUSH PRIVILEGES;

第二步:
在192.168.1.1查看二進(jìn)制日志名和位置

mysql>show master status;

在192.168.1.2中執(zhí)行:

mysql>CHANGE MASTER TO >MASTER_HOST=\'192.168.1.1\', >MASTER_USER=\'root\', >MASTER_PASSWORD=\'root\', >MASTER_LOG_FILE=\'mysql-bin.000001\', >MASTER_LOG_POS=98;

第三步:
在192.168.1.2中創(chuàng)建一個192.168.1.1主機(jī)中可以登錄的MySQL用戶

mysql>GRANT REPLICATION SLAVE ON *.* TO \'root\'@\'192.168.1.1\' IDENTIFIED BY \'root\'; mysql>FLUSH PRIVILEGES;

第四步:
在192.168.1.2查看二進(jìn)制日志名和位置

mysql>show master status;

在192.168.1.1中執(zhí)行:

mysql>CHANGE MASTER TO >MASTER_HOST=\'192.168.1.2\', >MASTER_USER=\'root\', >MASTER_PASSWORD=\'root\', >MASTER_LOG_FILE=\'mysql-bin.000001\', >MASTER_LOG_POS=98; 3.完成mysql主主復(fù)制

分別開啟START SLAVE;

mysql>START SLAVE; #開啟復(fù)制 mysql>SHOW SLAVE STATUSG #查看主從復(fù)制是否配置成功

注意:當(dāng)看到兩臺主機(jī)的Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態(tài)正常

3.關(guān)于報錯

1.主從同步報錯Fatal error: The slave I/O thread stops because master and slave have equal MySQL server
原因分析:
mysql 5.6的復(fù)制引入了uuid的概念,各個復(fù)制結(jié)構(gòu)中的server_uuid得保證不一樣,但是查看到直接copy data文件夾后server_uuid是相同的,show variables like ‘%server_uuid%’;
解決方法:
找到data文件夾下的auto.cnf文件,修改里面的uuid值,保證各個db的uuid不一樣,重啟db即可

場景二:創(chuàng)建主從關(guān)系時copy了同樣的my.cnf文件,報錯
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
原因分析:
和server_uuid類似,servier_id也得保證不一樣
解決方法:
找到my.cnf配置文件中的server_id,修改從庫的server_id保證和復(fù)制結(jié)構(gòu)中的其他db不一樣,重啟db即可

1、主主復(fù)制配置文件中auto_increment_increment和auto_increment_offset只能保證主鍵不重復(fù),卻不能保證主鍵有序。

2、當(dāng)配置完成Slave_IO_Running、Slave_SQL_Running不全為YES時,show slave statusG信息中有錯誤提示,可根據(jù)錯誤提示進(jìn)行更正。

3、Slave_IO_Running、Slave_SQL_Running不全為YES時,大多數(shù)問題都是數(shù)據(jù)不統(tǒng)一導(dǎo)致。

常見出錯點:

1、兩臺數(shù)據(jù)庫都存在db數(shù)據(jù)庫,而第一臺MySQL db中有tab1,第二臺MySQL db中沒有tab1,那肯定不能成功。

2、已經(jīng)獲取了數(shù)據(jù)的二進(jìn)制日志名和位置,又進(jìn)行了數(shù)據(jù)操作,導(dǎo)致POS發(fā)生變更。在配置CHANGE MASTER時還是用到之前的POS。

3、stop slave后,數(shù)據(jù)變更,再start slave。出錯。

終極更正法:重新執(zhí)行一遍CHANGE MASTER就好了。

本文標(biāo)題:MySQL主從復(fù)制與主主復(fù)制
文章起源:http://muchs.cn/article4/cheeie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、動態(tài)網(wǎng)站、營銷型網(wǎng)站建設(shè)、云服務(wù)器、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)