溫馨提示×

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

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

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

發(fā)布時(shí)間:2020-06-05 14:26:34 來(lái)源:億速云 閱讀:283 作者:Leah 欄目:編程語(yǔ)言

本文以MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制為例,為大家分析MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制的基本原理和相關(guān)配置,閱讀完整文相信大家對(duì)MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制有了一定的認(rèn)識(shí)。

一、基本原理

MySQL復(fù)制過(guò)程分成三步:

  • 1)、master將改變記錄到二進(jìn)制日志(binary log)。這些記錄過(guò)程叫做二進(jìn)制日志事件,binary log events
  • 2)、slave將master的binary log events拷貝到它的中繼日志(relay log);
  • 3)、slave重做中繼日志中的事件,將改變應(yīng)用到自己的數(shù)據(jù)庫(kù)中。 MySQL復(fù)制是異步的且串行化的。

簡(jiǎn)單來(lái)說(shuō): slave會(huì)從master讀取binlog來(lái)進(jìn)行數(shù)據(jù)同步

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

Mysql的復(fù)制(replication)是一個(gè)異步的復(fù)制。

實(shí)現(xiàn)整個(gè)復(fù)制操作主要由三個(gè)進(jìn)程完成的,其中兩個(gè)進(jìn)程在Slave(Sql進(jìn)程和IO進(jìn)程),另外一個(gè)進(jìn)程在 Master(IO進(jìn)程)上。

要實(shí)施復(fù)制,首先必須打開Master端的binary log(bin-log)功能,否則無(wú)法實(shí)現(xiàn)。

因?yàn)檎麄€(gè)復(fù)制過(guò)程實(shí)際上就是Slave從Master端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。

復(fù)制的詳細(xì)過(guò)程:

(1)Slave上面的IO進(jìn)程連接上Master,并請(qǐng)求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容;

(2)Master接收到來(lái)自Slave的IO進(jìn)程的請(qǐng)求后,通過(guò)負(fù)責(zé)復(fù)制的IO進(jìn)程根據(jù)請(qǐng)求信息讀取制定日志指定位置之后的日志信息,返回給Slave 的IO進(jìn)程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經(jīng)到Master端的bin-log文件的名稱以及bin-log的位置;

(3)Slave的IO進(jìn)程接收到信息后,將接收到的日志內(nèi)容依次添加到Slave端的relay-log文件的最末端,并將讀取到的Master端的 bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時(shí)候能夠清楚的高速M(fèi)aster“我需要從某個(gè)bin-log的哪個(gè)位置開始往后的日志內(nèi)容,請(qǐng)發(fā)給我”;

(4)Slave的Sql進(jìn)程檢測(cè)到relay-log中新增加了內(nèi)容后,會(huì)馬上解析relay-log的內(nèi)容成為在Master端真實(shí)執(zhí)行時(shí)候的那些可執(zhí)行的內(nèi)容,并在自身執(zhí)行。

原則:

  • 每個(gè)slave只有一個(gè)master;
  • 每個(gè)slave只能有一個(gè)唯一的服務(wù)器ID;
  • 每個(gè)master可以有多個(gè)salve;

二、一主一從相關(guān)配置

演示主機(jī)為Windows (配置文件為my.ini文件),從機(jī)為Linux(配置文件為my.cnf

1、主機(jī)配置(windows的my.ini)

  • 1)、[必須]主服務(wù)器唯一ID;
  • 2)、[必須]啟用二進(jìn)制日志;
    • log-bin=自己本地的路徑/data/mysqlbin
    • log-bin=D:/devSoft/MySQLServer5.5/data/mysqlbin。
  • 3)、[可選]啟用錯(cuò)誤日志
    • log-err=自己本地的路徑/data/mysqlerr。
    • log-err=D:/devSoft/MySQLServer5.5/data/mysqlerr
  • 4)、[可選]根目錄
    • basedir="自己本地路徑"
    • basedir="D:/devSoft/MySQLServer5.5/"。
  • 5)、[可選]臨時(shí)目錄
    • tmpdir="自己本地路徑"。
    • tmpdir="D:/devSoft/MySQLServer5.5/"
  • 6)、[可選]數(shù)據(jù)目錄
    • datadir="自己本地路徑/Data/"。
    • datadir="D:/devSoft/MySQLServer5.5/Data/"
  • 7)、[可選]設(shè)置不要復(fù)制的數(shù)據(jù)庫(kù)
    • binlog-ignore-db=mysql
  • 8)、[可選]設(shè)置需要復(fù)制的數(shù)據(jù)庫(kù)
    • binlog-do-db=需要復(fù)制的主數(shù)據(jù)庫(kù)名字

2、從機(jī)配置(linux的my.cnf)

  • [必須]從服務(wù)器唯一ID;
  • [可選]啟用二進(jìn)制日志;

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

3、因修改過(guò)配置文件,請(qǐng)主機(jī)+從機(jī)都重啟后臺(tái)mysql服務(wù)

4、主從機(jī)都關(guān)閉linux防火墻

  • windows手動(dòng)關(guān)閉;
  • 關(guān)閉虛擬機(jī)linux防火墻 service iptables stop

5、在Windows主機(jī)上建立帳戶并授權(quán)slave

  • GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'從機(jī)器數(shù)據(jù)庫(kù)IP' IDENTIFIED BY '123456';。
  • 刷新一下配置flush privileges;
  • 查詢master的狀態(tài)。
    • show master status;
    • 記錄下File和Position的值;
  • 執(zhí)行完此步驟后不要再操作主服務(wù)器MYSQL,防止主服務(wù)器狀態(tài)值變化。

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

6、在Linux從機(jī)上配置需要復(fù)制的主機(jī)

  • 配置
CHANGE MASTER TO MASTER_HOST='主機(jī)IP',MASTER_USER='zhangsan',MASTER_PASSWORD='123456',MASTER_LOG_FILE='File名字',MASTER_LOG_POS=Position數(shù)字;
  • 啟動(dòng)從服務(wù)器復(fù)制功能,start slave;
  • 查看配置
    • 下面兩個(gè)參數(shù)都是Yes,則說(shuō)明主從配置成功!
    • Slave_IO_Running: Yes。
    • Slave_SQL_Running: Yes
CHANGE MASTER TO MASTER_HOST='192.168.124.3',
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.具體數(shù)字',MASTER_LOG_POS=具體值;

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制原理是什么

7、主機(jī)鍵表,看從機(jī)有沒(méi)有

8、如何停止主從服務(wù)復(fù)制功能

linux下面輸入stop slave;。

看完上述內(nèi)容,你們對(duì)MYSQL數(shù)據(jù)庫(kù)的主從復(fù)制有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。

向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