mysql 多项式_mysql主从复制原理及实现
一.主從復制原理
利用MySQL提供的Replication,其實就是Slave從Master獲取Binary log文件,然后再本地鏡像的執行日志中記錄的操作。由于主從復制的過程是異步的,因此Slave和Master之間的數據有可能存在延遲的現象,此時只能保證數據最終的一致性。
在master與slave之間實現整個復制過程主要由三個線程來完成:
1.Slave SQL thread線程,在slave端
2.Slave I/O thread線程,在slave端
3.Binlog dump thread線程(也可稱為IO線程),在master端
注意:如果一臺主服務器配兩臺從服務器那主服務器上就會有兩個Binlog dump 線程,而每個從服務器上各自有兩個線程。
網絡上找的一張很清晰的交互圖,流程可以詳細描述為:
1、slave端的IO線程連接上master端,并請求從指定binlog日志文件的指定pos節點位置(或者從最開始的日志)開始復制之后的日志內容。
2、master端在接收到來自slave端的IO線程請求后,通知負責復制進程的IO線程,根據slave端IO線程的請求信息,讀取指定binlog日志指定pos節點位置之后的日志信息,然后返回給slave端的IO線程。該返回信息中除了binlog日志所包含的信息之外,還包括本次返回的信息在master端的binlog文件名以及在該binlog日志中的pos節點位置。
3、slave端的IO線程在接收到master端IO返回的信息后,將接收到的binlog日志內容依次寫入到slave端的relaylog文件(mysql-relay-bin.xxxxxx)的最末端,并將讀取到的master端的binlog文件名和pos節點位置記錄到master-info(該文件存slave端)文件中,以便在下一次讀取的時候能夠清楚的告訴master“我需要從哪個binlog文件的哪個pos節點位置開始,請把此節點以后的日志內容發給我”。
4、slave端的SQL線程在檢測到relaylog文件中新增內容后,會馬上解析該log文件中的內容。然后還原成在master端真實執行的那些SQL語句,并在自身按順豐依次執行這些SQL語句。這樣,實際上就是在master端和slave端執行了同樣的SQL語句,所以master端和slave端的數據完全一樣的。
二.如何實現?
這里在本地虛擬機模擬演示:
準備工作:兩個虛擬機:我這里用的是CentOS5.5,IP地址分別是192.168.1.101 和192.168.1.105;
步驟:1.修改mysql的配置文件,打開二進制日志功能。? 命令:# vi /etc/my.cnf 增加以下三行配置
log-bin=mysql-bin //將mysql二進制日志取名為mysql-bin
binlog_format=mixed //二進制日志的格式,有三種:statement/row/mixed,具體分別不多做解釋,這里使用mixed
server-id=101 //為服務器設置一個獨一無二的id便于區分,這里使用ip地址的最后一位充當server-id
然后修改從服務器的my.cnf文件,也添加以上內容,不過server-id的值為從服務器的標識。然后分別重啟主、從mysql。
2.在主服務器為從服務器分配用戶。命令:GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111';
3.查看主服務器BIN日志的信息(執行完之后記錄下這兩值,然后在配置完從服務器之前不要對主服務器進行任何操作,因為每次操作數據庫時這兩值會發生改變)。命令:show master status;
4.進入從服務器,執行以下命令設置master。
MASTER_HOST : 設置要連接的主服務器的ip地址
MASTER_USER : 設置要連接的主服務器的用戶名
MASTER_PASSWORD : 設置要連接的主服務器的密碼
MASTER_LOG_FILE : 設置要連接的主服務器的bin日志的日志名稱,即第3步得到的信息
MASTER_LOG_POS : 設置要連接的主服務器的bin日志的記錄位置,即第3步得到的信息,(這里注意,最后一項不需要加引號。否則配置失敗)
然后執行start slave;命令啟動從服務器。
5.查看是否配置成功。命令:show slave status;
上面兩項為Yes說明配置成功。可以在主庫更新數據測試從庫是否會同步。
總結
以上是生活随笔為你收集整理的mysql 多项式_mysql主从复制原理及实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab multithreadin
- 下一篇: 计算机管理内默认共享,关于Windows