在MySQL中,雙主模式也被稱為雙主復制或雙向復制,它可以實現數據庫的讀寫分離和高可用性。在雙主模式下,兩個MySQL服務器都可以接受讀寫請求,并且彼此之間進行數據同步。
要配置MySQL雙主模式,需要執行以下步驟:
配置主服務器A:
在主服務器A的配置文件(一般是my.cnf)中增加以下配置項:
server-id=1
log-bin=mysql-bin
binlog-do-db=database_name
其中,server-id
是服務器的唯一標識,可以是任意整數;log-bin
指定二進制日志的名稱;binlog-do-db
指定要復制的數據庫名稱。
重啟主服務器A,使配置生效。
配置主服務器B:
在主服務器B的配置文件中增加以下配置項:
server-id=2
log-bin=mysql-bin
binlog-do-db=database_name
同樣地,配置server-id
、log-bin
和binlog-do-db
。
重啟主服務器B。
配置主從復制:
登錄到主服務器A的MySQL命令行界面,執行以下命令創建一個用于復制的用戶:
CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;
其中,replication
是用戶名,password
是密碼。
在主服務器A上執行以下命令獲取二進制日志的位置信息:
SHOW MASTER STATUS;
記下File和Position的值。
登錄到主服務器B的MySQL命令行界面,執行以下命令配置主從關系:
CHANGE MASTER TO
MASTER_HOST='master_server_ip',
MASTER_USER='replication',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='master_log_file_name',
MASTER_LOG_POS=master_log_position;
其中,master_server_ip
是主服務器A的IP地址,master_log_file_name
和master_log_position
是在主服務器A上獲取到的File和Position的值。
啟動主從復制:
START SLAVE;
可以使用以下命令檢查復制狀態:
SHOW SLAVE STATUS\G;
如果Slave_IO_Running和Slave_SQL_Running的值都為Yes,說明復制已經啟動成功。
配置讀寫分離:
配置完成后,主服務器A和主服務器B就可以互為主服務器和從服務器,實現雙主復制。當其中一個服務器發生故障時,另一個服務器可以繼續提供服務,確保數據庫的高可用性。同時,讀寫操作可以分散到不同的服務器上,提高數據庫的性能。