在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。
配置完成后,主服务器A和主服务器B就可以互为主服务器和从服务器,实现双主复制。当其中一个服务器发生故障时,另一个服务器可以继续提供服务,确保数据库的高可用性。同时,读写操作可以分散到不同的服务器上,提高数据库的性能。