MySQL 主從架構是一種常見的數據庫架構,通常用于高可用或容災方案。該架構包括一個主數據庫(master)和一個或多個從數據庫(slave)。主數據庫用于寫入、更新數據,從數據庫通過復制主數據庫的數據來提供讀取服務。
示例配置: 主數據庫: server-id=1 log-bin=mysql-bin binlog-do-db=test 從數據庫: server-id=2 relay-log=mysql-relay-bin log-slave-updates=1 read-only=1
在主數據庫中,需要設置一個server-id參數用于唯一標識該數據庫,并且需要開啟二進制日志(binlog)以記錄所有的語句和事務。只有在設定binlog-do-db參數指定數據庫名稱之后,該數據庫修改操作才會被寫入二進制日志。從數據庫需要一個relay-log參數來指定中繼日志的存儲位置,并設置server-id為另一個值以與主數據庫區分開來。需要設置log-slave-updates參數來允許從數據庫記錄主數據庫執行的所有修改,以便其他從數據庫可以獲取這些更新結果。read-only參數必須設置為1,確保該數據庫只能用于讀取操作。
啟動同步: 從數據庫: CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='replication_user', MASTER_PASSWORD='replication_pass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; 啟動主數據庫: mysql>FLUSH TABLES WITH READ LOCK; mysql>SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 120 | test | | +------------------+----------+--------------+------------------+ 解鎖從數據庫: mysql>UNLOCK TABLES;
在從數據庫中,需要通過CHANGE MASTER TO語句來指定主數據庫的位置和認證信息。MySQL會使用主數據庫的二進制日志文件名和位置來獲取更新數據。從數據庫會不斷地從該位置開始獲取新記錄,并將其存儲在中繼日志中。在啟動主數據庫時,需要通過FLUSH TABLES WITH READ LOCK語句來鎖定所有表格,以便確保在獲取主數據庫狀態時不會發生更改。SHOW MASTER STATUS語句將顯示當前主數據庫的二進制日志文件名和位置。一旦獲取到該信息后,就可以通過UNLOCK TABLES語句解鎖所有鎖定表格,以便繼續正常操作。
上一篇mysql 主備原理
下一篇mysql 主從架構