共計 2415 個字符,預計需要花費 7 分鐘才能閱讀完成。
這期內容當中丸趣 TV 小編將會給大家帶來有關 MySQL 主從復制的原理分析是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一、基本原理
MySQL 復制過程分成三步:
1)、master 將改變記錄到二進制日志(binary log)。這些記錄過程叫做二進制日志事件,binary log events;
2)、slave 將 master 的 binary log events 拷貝到它的中繼日志(relay log);
3)、slave 重做中繼日志中的事件,將改變應用到自己的數據庫中。MySQL 復制是異步的且串行化的。
簡單來說: slave 會從 master 讀取 binlog 來進行數據同步
MySQL 的復制(replication)是一個異步的復制。
實現整個復制操作主要由三個進程完成的,其中兩個進程在 Slave(Sql 進程和 IO 進程),另外一個進程在 Master(IO 進程)上。
要實施復制,首先必須打開 Master 端的 binary log(bin-log)功能,否則無法實現。
因為整個復制過程實際上就是 Slave 從 Master 端獲取該日志然后再在自己身上完全順序的執行日志中所記錄的各種操作。
復制的詳細過程:
(1)Slave 上面的 IO 進程連接上 Master,并請求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內容;
(2)Master 接收到來自 Slave 的 IO 進程的請求后,通過負責復制的 IO 進程根據請求信息讀取制定日志指定位置之后的日志信息,返回給 Slave 的 IO 進程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經到 Master 端的 bin-log 文件的名稱以及 bin-log 的位置;
(3)Slave 的 IO 進程接收到信息后,將接收到的日志內容依次添加到 Slave 端的 relay-log 文件的最末端,并將讀取到的 Master 端的 bin-log 的文件名和位置記錄到 master-info 文件中,以便在下一次讀取的時候能夠清楚的高速 Master“我需要從某個 bin-log 的哪個位置開始往后的日志內容,請發給我”;
(4)Slave 的 Sql 進程檢測到 relay-log 中新增加了內容后,會馬上解析 relay-log 的內容成為在 Master 端真實執行時候的那些可執行的內容,并在自身執行。
原則:
每個 slave 只有一個 master;
每個 slave 只能有一個唯一的服務器 ID;
每個 master 可以有多個 salve;
二、一主一從相關配置
演示主機為 Windows (配置文件為 my.ini 文件),從機為 Linux(配置文件為 my.cnf)
1、主機配置(windows 的 my.ini)
1)、[必須]主服務器唯一 ID;
2)、[必須]啟用二進制日志;log-bin= 自己本地的路徑 /data/mysqlbin。log-bin=D:/devSoft/MySQLServer5.5/data/mysqlbin。
3)、[可選]啟用錯誤日志 log-err= 自己本地的路徑 /data/mysqlerr。log-err=D:/devSoft/MySQLServer5.5/data/mysqlerr。
4)、[可選]根目錄 basedir= 自己本地路徑。basedir= D:/devSoft/MySQLServer5.5/。
5)、[可選]臨時目錄 tmpdir= 自己本地路徑。tmpdir= D:/devSoft/MySQLServer5.5/。
6)、[可選]數據目錄 datadir= 自己本地路徑 /Data/。datadir= D:/devSoft/MySQLServer5.5/Data/。
7)、[可選]設置不要復制的數據庫 binlog-ignore-db=mysql。
8)、[可選]設置需要復制的數據庫 binlog-do-db= 需要復制的主數據庫名字。
2、從機配置 (linux 的 my.cnf)[必須] 從服務器唯一 ID;
[可選]啟用二進制日志;
3、因修改過配置文件,請主機 + 從機都重啟后臺 mysql 服務 4、主從機都關閉 linux 防火墻
windows 手動關閉;
關閉虛擬機 linux 防火墻 service iptables stop;
5、在 Windows 主機上建立帳戶并授權 slave
GRANT REPLICATION SLAVE ON *.* TO zhangsan @ 從機器數據庫 IP IDENTIFIED BY 123456。
刷新一下配置 flush privileges;。
查詢 master 的狀態。show master status; 記錄下 File 和 Position 的值;
執行完此步驟后不要再操作主服務器 MYSQL,防止主服務器狀態值變化。
6、在 Linux 從機上配置需要復制的主機
配置
CHANGE MASTER TO MASTER_HOST= 主機 IP ,MASTER_USER= zhangsan ,MASTER_PASSWORD= 123456 ,MASTER_LOG_FILE= File 名字 ,MASTER_LOG_POS=Position 數字;
啟動從服務器復制功能,start slave;。
查看配置下面兩個參數都是 Yes,則說明主從配置成功!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. 具體數字 ,MASTER_LOG_POS= 具體值;
7、主機鍵表,看從機有沒有 8、如何停止主從服務復制功能
在 linux 下面輸入 stop slave;。
上述就是丸趣 TV 小編為大家分享的 MySQL 主從復制的原理分析是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。