
image.png
MySQL復(fù)制機制原理
1,MySQL的復(fù)制是異步執(zhí)行的,因為MySQL的特殊機制,讓復(fù)制的延遲控制較??;
2,MySQL的復(fù)制是從一個MySQL進程復(fù)制到另一個MySQL進程,被復(fù)制方我們稱為Master;復(fù)制方我們稱為Slave;
3,MySQL的復(fù)制依賴一種叫做bin-log的日志文件,bin-log記錄了所有在Master端執(zhí)行的DDL/DML/事務(wù)操作序列,并同步到Slave端,Slave根據(jù)日志復(fù)現(xiàn)操作序列,即完成同步;
4,復(fù)制流程:
1,Slave 上面的IO 線程連接上Master,并請求從指定日志文件的指定位置之后的日志內(nèi)容;
2,Master 接收到來自Slave 的IO 線程的請求后,通過負責(zé)復(fù)制的IO線程根據(jù)請求信息讀取指定日志指定位置之后的日志信息,返回給Slave 端的IO線程;
3,Slave 的IO 線程接收到信息后,將接收到的日志內(nèi)容依次寫入到Slave 端的Relay Log 文件(mysql-relay-bin.xxxxxx)的最末端;
4,Slave 的SQL 線程檢測到Relay Log 中新增加了內(nèi)容后,會馬上解析該Log 文件中的內(nèi)容成為在Master 端真實執(zhí)行時候的那些可執(zhí)行的Query 語句,并在自身執(zhí)行這些Query;
5,復(fù)制一定會存在延遲和數(shù)據(jù)丟失的風(fēng)險;