MySQL是一種流行的數據庫管理系統,它可以運行多個實例。多實例配置可以使多個數據庫互相分離,以便在不同的應用程序方面使用。其中一個常見的用例是在主機上運行多個MySQL實例,每個實例有其自己的數據和配置。
通過將多個MySQL實例配置為主從復制,您可以創建高可用性環境,其中如果一個實例出現故障,客戶端可以自動轉向另一個實例。在主從復制中,有幾個重點概念:
- 主庫(Master):主庫是一個可寫的MySQL實例,它處理所有的寫請求,并維護一個二進制日志,它記錄了庫中的所有更改。
- 從庫(Slave):從庫是一個可讀的MySQL實例,它從主庫中獲取日志,并應用到它自己的數據庫中。
- 復制日志(Replication log):也稱為二進制日志(Binary log),是主庫用于日志記錄的機制,它包含了影響庫狀態的每一個寫操作。
下面的代碼是在Linux系統上,創建主從復制的示例。在這個示例中,我們將創建兩個數據庫實例,一個實例作為主庫,另一個作為從庫。請確保您安裝了mysql二進制文件。
#啟動主庫的mysql實例 $ /usr/bin/mysqld_safe --defaults-file=/etc/mysql/my01.cnf & #將從庫配置為主庫的從服務器 mysql >GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave_password'; mysql >FLUSH PRIVILEGES; mysql >FLUSH TABLES WITH READ LOCK; mysql >SHOW MASTER STATUS; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 107 | | | | +------------------+----------+--------------+------------------+-------------------+ mysql >UNLOCK TABLES; #在從庫上啟動mysql實例 $ /usr/bin/mysqld_safe --defaults-file=/etc/mysql/my02.cnf & #將從庫連接到主庫上 mysql >CHANGE MASTER TO MASTER_HOST='master_server_ip', MASTER_USER='slave', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; #啟動從庫讀取主庫的二進制日志 mysql >START SLAVE;
當您完成上面的步驟后,在主庫上執行INSERT、UPDATE或DELETE語句,這些語句將被寫入二進制日志中。在從庫上查看數據庫時,你可以看到主庫的更新被同步到從庫中。