主從同步圖:
主服務器一般稱為master服務器,從服務器稱為slave服務器,本例演示一臺master和一臺slave進行主從同步。
從圖中可以看出,master上所執行的sql語句會寫入到binary log文件中,slave上開啟兩個線程,一個IO線程定時向master發送同步消息,master收到后會把新增的sql發送到slave,slave收到后寫入到relay log中,另一個線程SQL線程會從Realy log中讀取sql語句 并執行,這樣就完成了主從同步。
主服務和從服務器在兩臺物理機上,首先配置master服務器:
查看配置文件,確保log-bin和server-id是開啟的,如圖
如果進行了配置文件的修改,修改后要重啟mysql,
操作完成后,進入mysql,查看master狀態:show master status;
這里的file是稍后slave配置時需要同步的文件名稱,Position是開始同步的位置。
配置后master后,開始配置slave,此時如果master上有執行的新的語句,則Position會發生變化,配置slave時確保此數值是最新的。
slave上更改master 命令:
change master to master_host='192.168.1.1',master_port =3306,master_log_file='mysql-bin.000002',master_log_pos=502,master_user='replication',master_password='123456';
這里需要配置master服務器的ip地址,port 和使用的用戶名,密碼以及同步的bin-log文件和位置。
配置好之后 開啟slave:start slave;
查看slave狀態信息:show slave status;
顯示兩個線程都是出于運行狀態,則證明slave開啟成功。
測試:在master執行相應的語句,查看slave是否有相同操作的結果(比如在master創建新的數據庫1a,slave查看也會出現新的數據庫1a).