溫馨提示×

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

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

【MySQL】主從異步復(fù)制配置

發(fā)布時(shí)間:2020-07-07 20:38:17 來(lái)源:網(wǎng)絡(luò) 閱讀:466 作者:wangkunj 欄目:MySQL數(shù)據(jù)庫(kù)

簡(jiǎn)介:

Mysql的 主從同步 是一個(gè)異步的復(fù)制過(guò)程,從一個(gè) Master復(fù)制到另一個(gè) Slave上。在 Master 與 Slave 之間的實(shí)現(xiàn)整個(gè)復(fù)制過(guò)程主要由三個(gè)線(xiàn)程來(lái)完成,其中兩個(gè)線(xiàn)程(Sql線(xiàn)程和IO線(xiàn)程)在 Slave 端,另外一個(gè)線(xiàn)程(IO線(xiàn)程)在 Master 端?!?br/>?要實(shí)現(xiàn) MySQL 的 主從同步 ,首先必須打開(kāi) Master 端的BinaryLog(mysql-bin)功能,否則無(wú)法實(shí)現(xiàn)。因?yàn)檎麄€(gè)復(fù)制過(guò)程實(shí)際上就是Slave從Master端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。打開(kāi) MySQL 的 Binary Log 可以通過(guò)在啟動(dòng) MySQL Server 的過(guò)程中使用 “—log-bin” 參數(shù)選項(xiàng),或者在 my.cnf 配置文件中的 mysqld 參數(shù)組([mysqld]標(biāo)識(shí)后的參數(shù)部分)增加 “l(fā)og-bin” 參數(shù)項(xiàng)。

原理:

(1)master將改變記錄到二進(jìn)制日志(binary log)中(這些記錄叫做二進(jìn)制日志事件,binary log events);
(2) slave將master的binary log events拷貝到它的中繼日志(relay log);
(3) slave重做中繼日志中的事件,將改變反映它自己的數(shù)據(jù)。

下圖描述了復(fù)制的過(guò)程:
【MySQL】主從異步復(fù)制配置

具體配置過(guò)程:

1.主庫(kù)配置:

用vi /etc/my.cnf打開(kāi)文件,對(duì)文件進(jìn)行修改,在[mysqld]下面進(jìn)行添加修改:

server-id = 1  # 這是數(shù)據(jù)庫(kù)ID,此ID是唯一的,主庫(kù)默認(rèn)為1,其他從庫(kù)以此ID進(jìn)行遞增,ID值不能重復(fù),否則會(huì)同步出錯(cuò);
log-bin = mysql-bin  # 二進(jìn)制日志文件,此項(xiàng)為必填項(xiàng),否則不能同步數(shù)據(jù);
binlog_format=row # bilog設(shè)置為row模式 防止復(fù)制出錯(cuò)
2.從庫(kù)配置:

用vi /etc/my.cnf打開(kāi)文件,對(duì)文件進(jìn)行修改,在[mysqld]下面進(jìn)行添加修改:

server_id = 2
log-bin=mysql-bin
relay_log=mysql-relay-bin
# 不指定以下參數(shù)則全庫(kù)同步
#replicate-do-table=test.test_tb 同步某張表
#binlog-do-db = testcreate  需要同步的數(shù)據(jù)庫(kù),如果需要同步多個(gè)數(shù)據(jù)庫(kù);則繼續(xù)添加此項(xiàng)。
#binlog-ignore-db = mysql 不需要同步的數(shù)據(jù)庫(kù);
3.配置完需要重啟主從庫(kù)
4.主庫(kù)創(chuàng)建同步賬號(hào):
create user 'replica'@'%' identified by '123456';
grant replication slave,replication client,reload,super on *.* to 'replica'@'%' identified by '123456';
5.進(jìn)入從庫(kù)開(kāi)啟同步

同步開(kāi)啟前需要保持主從要同步的數(shù)據(jù)庫(kù)數(shù)據(jù)一致。

# 從庫(kù)啟動(dòng)slave:
# (MASTER_LOG_FILE與MASTER_LOG_POS在主庫(kù)運(yùn)行SHOW MASTER STATUS;取得)
CHANGE MASTER TO MASTER_HOST='192.168.1.60',
    MASTER_USER='replica',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=875;

start slave;
show slave status \G; --查看slave狀態(tài) 確保Slave_IO_Running: Yes Slave_SQL_Running: Yes
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guā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