復制方式
通過主庫上記錄二進制日志,在備庫重放日志的方式來實現異步的數據復制。
- 基于行的復制
- 基于語句的復制
復制步驟
20160914112042547.png
在主庫上把數據更改記錄到二進制日志。
每次準備提交事務完成數據跟新之前,把數據跟新事件記錄到二進制文件中,也就是說是按照事務提交順序來記錄二進制文件,而不是按照每條語句來記錄。記錄完,主庫會告訴存儲引擎可以提交事務了。-
備庫把主庫的二進制文件復制到本地中繼日志
- 啟動復制
CHANGE MASTER TO MASTER_HOST = '10.*.*.36', MASTER_USER = 'repl', MASTER_PASSWORD = 'replpassword', MASTER_PORT = 3306, MASTER_AUTO_POSITION = 1, MASTER_RETRY_COUNT = 0, MASTER_HEARTBEAT_PERIOD = 10000;
- 從庫啟動一個IO線程和SQL線程,IO線程會跟主庫建立一個普通的客戶端長連接,并為主庫開啟特殊的二進制轉儲(binlog dump)線程。
- 從庫把自己的read_master_log_pos的值告訴主庫,主庫會自從庫告知自己pos開始把事件推送給從庫,當沒有事件發生時,主從庫的IO都會進行睡眠狀態。
- 當主庫有事件發生時,主庫IO線程被激活,并把事件推送給從庫,并通知從庫IO線程進入工作狀態。
- 從庫SQL線程執行二進制日志。
主庫能并行執行SQL,在從庫上只能串行執行。
- 啟動復制