MySQL主從復制是MySQL數據庫的一個重要特性,允許將一臺MySQL服務器(稱為主服務器)的數據同步到另外一臺MySQL服務器(稱為從服務器)上。當主服務器上的數據發生變化時,這些變化會自動同步到從服務器上,從而保證數據的一致性。MySQL的主從復制是異步的,這意味著主服務器上的數據變化可能會有一定的延遲才會被從服務器接收到。
示例代碼: ###主機A的my.cnf配置文件 log-bin=mysql-bin server-id=1 ###主機B的my.cnf配置文件 server-id=2 ###在主機A上執行SQL語句 GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'192.168.1.%' IDENTIFIED BY 'password'; ###在主機B上執行SQL語句 Change master to master_host='192.168.1.1', master_user='slaveuser', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=0; start slave;
MySQL 8.0引入了MySQL遠程管理器(MySQL Group Replication,簡稱MySQL MGR),它是MySQL的一種高可用解決方案。與傳統的MySQL主從復制不同,MySQL MGR是基于組(group)的復制,這意味著一個MySQL MGR集群可以包含多個MySQL服務器作為節點,每個節點都可以承擔讀寫請求。當一個節點宕機時,其它節點可以接替它的工作,從而實現高可用。
示例代碼: ###創建MySQL MGR集群 mysql -u root -p -e "create user mgruser@'%' identified by 'password';grant all privileges on *.* to mgruser@'%' with grant option;CREATE DATABASE test;CREATE TABLE test.tb1 (id INT NOT NULL PRIMARY KEY, name VARCHAR(10) NOT NULL);INSERT INTO test.tb1 values(1, 'test1'),(2, 'test2');set global group_replication_bootstrap_group=ON;set global group_replication_start_on_boot=ON;START GROUP_REPLICATION;" ###在MySQL MGR集群中執行SQL語句 SELECT * FROM test.tb1; INSERT INTO test.tb1 values(3, 'test3'); SELECT * FROM test.tb1;