一、主從複製的工作原理
mysql在master與slave之間實現整個複製的過程是由3個線程來完成的,其中兩個線程(SQL線程和IO線程)在slave端,另外一個線程(IO線程)在master端
注:要實現mysql的複製必須首先打開master端的binary log(也就是二進制日誌),否則無法實現
mysql複製的基本過程如下:
(1)slave上面的IO線程發起連接,並請求指定日誌文件的位置
(2)master接收到來自slaveIO線程的請求後,通過負責複製的IO線程(即masterIO線程)根據這個請求信息指定日誌的位置,把這個信息返回給slave的IO線程(返回信息)
(3)slave的IO線程接收到master端的返回信息之後,將日誌內容依次寫入slave端的relay log文件(mysql-relay-bin.xxx)當中,並且讀取到master端的bin-log文件和位置,記錄到master=info文件中,以便下一次能夠清楚地告訴master從哪個位置開始傳bin-log的內容
(4)slave的SQL線程檢測:relay log增加內容後,馬上解析master二進制文件中的內容,並且執行裏面的query語句
二、具體操作
(1)在Master上操作 首先將bin-log日誌打開 其次將server-id設置爲1 將log-slave-updates給關閉掉 建立一個內部複製通信用戶 grant replication slave on *.* to 'admin'@'10.0.0.202' identified by '123456'; flush privileges; (2)在Slave上操作 首先將bin-log日誌打開 其次將server-id設置爲2 將log-slave-updates打開 >stop slave; >change master to master_host='10.0.0.201', master_user='admin', master_password='123456', master_log_file='mysql-bin.000005', master_log_pos=578; >start slave; >show slave status\G;