在同一个城市的两个数据中心(中心A和中心B)配置两个MySQL实例为双主复制模式是常见的设计。
MySQL双主复制的配置涉及到许多步骤,以下是一个基本的步骤指南:
1. 修改MySQL配置:你需要在每台MySQL服务器上的my.cnf文件中添加或修改一些配置选项。其中,最重要的配置选项可能是server-id,每台服务器的server-id必须是唯一的。例如:
代码语言:javascript复制 [mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = yourdatabase
在另一台服务器上,使用不同的server-id:
代码语言:javascript复制[mysqld]
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = yourdatabase
然后,重启每台服务器上的MySQL服务。
2. 设置复制用户:在每台MySQL服务器上,你需要创建一个用于复制的用户,并授予REPLICATION SLAVE权限。例如:
代码语言:javascript复制 CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
3. 配置主主复制:在服务器1上,查看二进制日志文件的状态:
代码语言:javascript复制 SHOW MASTER STATUS;
记录下File和Position的值。然后在服务器2上,执行以下命令:
代码语言:javascript复制CHANGE MASTER TO MASTER_HOST='IP_of_server1', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='File', MASTER_LOG_POS=Position;
在服务器2上重复这个过程,但是这次要将服务器1配置为服务器2的复制服务器。
代码语言:javascript复制CHANGE MASTER TO MASTER_HOST='IP_of_server2', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='File', MASTER_LOG_POS=Position;
4. 启动复制:在每台服务器上,使用以下命令启动复制:
代码语言:javascript复制 START SLAVE;
这样就完成了MySQL双主复制的配置。你可以通过在一个服务器上修改数据,然后在另一个服务器上查看这个修改是否被复制,来测试复制是否成功。
请注意,在生产环境中使用双主复制需要特别注意数据一致性问题。为了避免冲突,你可能需要使用某种方式将写操作分区,例如,让一部分应用只写入一台主机,另一部分应用只写入另一台主机。