溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL主從復(fù)制的實(shí)現(xiàn)方法

發(fā)布時(shí)間:2020-09-01 15:41:23 來(lái)源:億速云 閱讀:159 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章給大家分享的是有關(guān)MySQL主從復(fù)制的實(shí)現(xiàn)方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

                                                           MySQL主從復(fù)制的實(shí)現(xiàn)方法

測(cè)試服務(wù)器使用centos7.2進(jìn)行相關(guān)配置

文章內(nèi)容參考mysql數(shù)據(jù)庫(kù)的主從同步,實(shí)現(xiàn)讀寫分離

概敘

大型網(wǎng)站為了軟解大量的并發(fā)訪問(wèn),除了在網(wǎng)站實(shí)現(xiàn)分布式負(fù)載均衡,遠(yuǎn)遠(yuǎn)不夠。到了數(shù)據(jù)業(yè)務(wù)層、數(shù)據(jù)訪問(wèn)層,如果還是傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu),或者只是單單靠一臺(tái)服務(wù)器來(lái)處理如此多的數(shù)據(jù)庫(kù)連接操作,數(shù)據(jù)庫(kù)必然會(huì)崩潰,特別是數(shù)據(jù)丟失的話,后果更是不堪設(shè)想。這時(shí)候,我們會(huì)考慮如何減少數(shù)據(jù)庫(kù)的連接,下面就進(jìn)入我們今天的主題。

利用主從數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)讀寫分離,從而分擔(dān)主數(shù)據(jù)庫(kù)的壓力。在多個(gè)服務(wù)器上部署mysql,將其中一臺(tái)認(rèn)為主數(shù)據(jù)庫(kù),而其他為從數(shù)據(jù)庫(kù),實(shí)現(xiàn)主從同步。其中主數(shù)據(jù)庫(kù)負(fù)責(zé)主動(dòng)寫的操作,而從數(shù)據(jù)庫(kù)則只負(fù)責(zé)主動(dòng)讀的操作(slave從數(shù)據(jù)庫(kù)仍然會(huì)被動(dòng)的進(jìn)行寫操作,為了保持?jǐn)?shù)據(jù)一致性),這樣就可以很大程度上的避免數(shù)據(jù)丟失的問(wèn)題,同時(shí)也可減少數(shù)據(jù)庫(kù)的連接,減輕主數(shù)據(jù)庫(kù)的負(fù)載。

安裝mysql

服務(wù)器安裝mysql我參考了以下兩篇文章

Centos7.2安裝Mysql5.7(阿里云)

Centos7 遠(yuǎn)程無(wú)法連接mysql數(shù)據(jù)庫(kù)

在安裝數(shù)據(jù)庫(kù)過(guò)程中,由于遠(yuǎn)程無(wú)法連接踩了一些坑,首先在配置完成數(shù)據(jù)庫(kù)后,需要數(shù)據(jù)庫(kù)授權(quán)允許訪問(wèn),然后打開(kāi)防火墻設(shè)置,將3306端口打開(kāi),允許通過(guò)數(shù)據(jù)庫(kù)管理工具通過(guò)端口訪問(wèn)數(shù)據(jù)庫(kù),我就是在沒(méi)有設(shè)置打開(kāi)防火墻這塊一直踩坑。

在測(cè)試的兩臺(tái)服務(wù)器都分別安裝了mysql,并同時(shí)導(dǎo)入測(cè)試數(shù)據(jù)庫(kù)

主從復(fù)制配置

主服務(wù)器配置

修改主服務(wù)器mysql配置,文件位于/etc/my.cnf

#在[mysqld]中添加:
server-id=1log_bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=master

#server-id 服務(wù)器唯一標(biāo)識(shí)。
#log_bin 啟動(dòng)MySQL二進(jìn)制日志,即數(shù)據(jù)同步語(yǔ)句,從數(shù)據(jù)庫(kù)會(huì)一條一條的執(zhí)行這些語(yǔ)句。
#binlog_do_db 指定記錄二進(jìn)制日志的數(shù)據(jù)庫(kù),即需要復(fù)制的數(shù)據(jù)庫(kù)名,如果復(fù)制多個(gè)數(shù)據(jù)庫(kù),重復(fù)設(shè)置這個(gè)選項(xiàng)即可。
#binlog_ignore_db 指定不記錄二進(jìn)制日志的數(shù)據(jù)庫(kù),即不需要復(fù)制的數(shù)據(jù)庫(kù)名,如果有多個(gè)數(shù)據(jù)庫(kù),重復(fù)設(shè)置這個(gè)選項(xiàng)即可。
#其中需要注意的是,binlog_do_db和binlog_ignore_db為互斥選項(xiàng),一般只需要一個(gè)即可。

創(chuàng)建用戶和權(quán)限

grant replication slave on . to masterbackup@’%’ identified by ‘123456’;

%通配符,表示任意IP都可訪問(wèn)主服務(wù)器,正式環(huán)境請(qǐng)配置指定從服務(wù)器IP

創(chuàng)建完成后,通過(guò)命令重啟mysql服務(wù)

service mysql restart

通過(guò)命令show master status查看狀態(tài)

MySQL主從復(fù)制的實(shí)現(xiàn)方法

slave從服務(wù)器的配置

同樣修改位于/etc/my.cnf目錄下的配置

#在[mysqld]中添加:
server-id=2relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
#replicate-do-db=master


#server-id 服務(wù)器唯一標(biāo)識(shí),如果有多個(gè)從服務(wù)器,每個(gè)服務(wù)器的server-id不能重復(fù),跟IP一樣是唯一標(biāo)識(shí),如果你沒(méi)設(shè)置server-id或者設(shè)置為0,則從服務(wù)器不會(huì)連接到主服務(wù)器。
#relay-log 啟動(dòng)MySQL二進(jìn)制日志,可以用來(lái)做數(shù)據(jù)備份和崩潰恢復(fù),或主服務(wù)器掛掉了,將此從服務(wù)器作為其他從服務(wù)器的主服務(wù)器。
#replicate-do-db 指定同步的數(shù)據(jù)庫(kù),如果復(fù)制多個(gè)數(shù)據(jù)庫(kù),重復(fù)設(shè)置這個(gè)選項(xiàng)即可。若在master端不指定binlog-do-db,則在slave端可用replication-do-db來(lái)過(guò)濾。
#replicate-ignore-db 不需要同步的數(shù)據(jù)庫(kù),如果有多個(gè)數(shù)據(jù)庫(kù),重復(fù)設(shè)置這個(gè)選項(xiàng)即可。
#其中需要注意的是,replicate-do-db和replicate-ignore-db為互斥選項(xiàng),一般只需要一個(gè)即可。

通過(guò)命令重啟mysql服務(wù)

service mysql restart

連接主數(shù)據(jù)庫(kù)

#連接master主服務(wù)器
mysql> change master to master_host='103.246.246.225',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',master_log_pos=120;#master_host對(duì)應(yīng)主服務(wù)器的IP地址。
#master_port對(duì)應(yīng)主服務(wù)器的端口。
#master_log_file對(duì)應(yīng)show master status顯示的File列:master-bin.000001。
#master_log_pos對(duì)應(yīng)show master status顯示的Position列:120。

啟用slave同步數(shù)據(jù)

#啟動(dòng)slave數(shù)據(jù)同步
mysql> start slave;#停止slave數(shù)據(jù)同步(若有需要)
mysql> stop slave;

查看slave信息

通過(guò)命令show slave status\G;查看slave信息

MySQL主從復(fù)制的實(shí)現(xiàn)方法

Slave_IO_Running和Slave_SQL_Running都為yes,則表示同步成功。

測(cè)試

MySQL主從復(fù)制的實(shí)現(xiàn)方法

在隨便一張數(shù)據(jù)表中插入一筆數(shù)據(jù)

MySQL主從復(fù)制的實(shí)現(xiàn)方法

查看從數(shù)據(jù)庫(kù)相應(yīng)表

MySQL主從復(fù)制的實(shí)現(xiàn)方法

可以查看到,從數(shù)據(jù)庫(kù)已成功同步相應(yīng)數(shù)據(jù)??!

感謝各位的閱讀!關(guān)于MySQL主從復(fù)制的實(shí)現(xiàn)方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI