標籤:主從複製原理 主從複製過程
一、主從複製的工作原理Mysql在Master與slave之間實現整個複製的過程由3個線程來完成的,其中兩個線程(SQL線程和IO線程)在Slave端,另外一個線程(IO)在Master端 要實現Mysql的複製必須首先開啟Master端的binary log(也就是二進位日誌)否則無法實現. Mysql複製基本過程如下: (1)Slave上面的IO 線程連結上Master,並且請求指定記錄檔的位置(或者 從開始的日誌之後的日誌內容) (2)Master接收到來自Slave的IO線程請求後,通過負責複製的IO線程根據這個請求資訊指定日誌的位置後,把這個資訊返回給Slave的IO線程(返回的信心當中除了日誌所包含的資訊外,還包括了Master端的二進位檔案名稱和 二進檔案的位置) (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語句. 優點:如果主伺服器出現問題,可以快速切換到從伺服器提供的服務 可以在從伺服器上執行查詢操作,降低主伺服器的訪問壓力 可以在從伺服器上執行備份,以避免備份期間影響主伺服器的服務。 缺點:根基目前業界的備份資料發送方式來看,當第一台伺服器崩潰後,仍會有少量的新資料沒來的及送到第二台伺服器,這部分資料會丟失。讀寫分離優點:增加了第二台伺服器的壓力,也就是增加了不穩定性。讀寫分離是在一個資金比較缺乏,又需保證資料安全的前提下,在雙機熱備的方案上作出的一種折中方案。 二、主從的環境Master IP:10.0.0.201Slave IP:10.0.0.202(1)在Master上操作首先將log-bin日誌開啟其次將server-id設定為1將log-slave-updates給關閉掉建立一個內部複製通訊使用者>grant replication slave on *.* to ‘admin‘@‘10.0.0.202‘ identified by ‘123456‘;flush privileges;show master status\G;(2)在Slave上操作首先將log-bin日誌開啟其次將server-id設定為2將log-slave-updates開啟/etc/init.d/mysqld restart>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;進行測試