MySQL主主复制

2023-08-16 20:07:23 浏览数 (1)

在同一个城市的两个数据中心(中心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双主复制的配置。你可以通过在一个服务器上修改数据,然后在另一个服务器上查看这个修改是否被复制,来测试复制是否成功。

请注意,在生产环境中使用双主复制需要特别注意数据一致性问题。为了避免冲突,你可能需要使用某种方式将写操作分区,例如,让一部分应用只写入一台主机,另一部分应用只写入另一台主机。

0 人点赞