MySQL是一個開放源代碼的關系型數據庫管理系統,廣泛應用于網站和各種應用程序的數據存儲。MySQL 5.7版本引入了雙主雙從(Master-Master Replication)的特性,這個特性可以在不同的服務器之間實現數據同步和復制。下面我們來講解一下如何在MySQL 5.7上實現雙主雙從的設置。
首先,在Linux系統上安裝MySQL 5.7。安裝完成之后,我們需要edit /etc/my.cnf文件進行配置:
[mysqld] server-id = 1 log-bin = mysql-bin #主庫開啟二進制日志 binlog-format=ROW #選擇ROW模式 enforce_gtid_consistency #開啟GTID模式 gtid-mode=ON master-info-repository=TABLE relay-log-info-repository=TABLE relay-log=relay-bin #從庫中繼日志的位置 relay-log-index=relay-bin.index auto-increment-increment=2 auto-increment-offset=1
完成主庫1的配置,我們需要將配置文件拷貝到另一臺主機上,并將server-id設置為2。然后,我們需要在兩個主機上創建一個復制賬戶(replication user),并授予復制權限:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
接下來,我們需要在主機1上執行以下命令,記錄二進制文件名和文件指針(position)信息,以備從機復制使用:
FLUSH TABLES WITH READ LOCK; #鎖住所有表,使得快照不被更改 SHOW MASTER STATUS; #記錄二進制文件名,文件指針
執行完以上命令后,我們需要在主庫1上解鎖所有表:
UNLOCK TABLES; #解鎖表
然后,我們需要在從機上修改配置文件/etc/my.cnf,將server-id設置為3,并配置復制的相關參數:
[mysqld] server-id = 3 log-bin = mysql-bin #從庫開啟二進制日志 binlog-format=ROW #選擇ROW模式 enforce_gtid_consistency gtid-mode=ON master_info_repository=TABLE relay_log_info_repository=TABLE relay-log=relay-bin #從庫中繼日志的位置 relay-log-index=relay-bin.index auto-increment-increment=2 auto-increment-offset=2
接下來,在從機上啟動MySQL,并執行以下語句,連接主機1并復制數據:
CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_AUTO_POSITION=1; #開啟自動同步 START SLAVE; #啟動從機復制
最后,在主機2上重復以上步驟進行配置和連接,實現主主互備和從從互備。