本文共 1760 字,大约阅读时间需要 5 分钟。
在配置两个主机的 MySQL 主主复制时,可以按照以下步骤进行设置:
在两个 MySQL 服务器中分别修改 my.ini
文件,添加以下配置:
[mysqld]server-id=1 # 每台服务器唯一 ID,需确保不同log-bin=mysql-bin # 启用二进制日志文件binlog_format=mixed # 启用混合日志模式expire-logs-days=14 # 二进制日志过期时间(单位:天)sync-binlog=1 # 每提交一次事务将二进制日志刷盘binlog-do-db=test,androidpnserver # 需要复制的数据库列表binlog-ignore-db=mysql,information_schema,performance_schema # 需要忽略的数据库auto-increment-increment=10 # 主键自增范围(根据需求调整)auto-increment-offset=1 # 自增开始号(从 1 开始)
注意:server-id
需要在两台服务器上设置不同的 ID,auto-increment-offset
决定主键自增的起始值,auto-increment-increment
决定自增的最大值。
在两台服务器上执行以下命令:
net stop mysqlnet start mysql
在两台服务器上执行以下命令重置复制:
STOP SLAVE;RESET SLAVE;FLUSH PRIVILEGES;
在两台服务器上为对方创建 replication 账号。根据需要设置账号权限(默认为 root
,此处示例):
GRANT REPLICATION SLAVE ON *.* TO 'username'@'hostip' IDENTIFIED BY 'password';
在两台服务器上查看目前的主服务器状态:
SHOW MASTER STATUS\G;
重点关注 File
和 Position
字段,这些参数用于后续配置。
在目标服务器上,根据主服务器的状态更换复制位置。例如:
CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_PORT=3306, MASTER_USER='账户', MASTER_PASSWORD='密码', MASTER_LOG_FILE='主服务器的binlog文件', MASTER_LOG_POS=主服务器的position值;
确保 MASTER_LOG_FILE
和 MASTER_LOG_POS
是从主服务器获取的最新状态。
在目标服务器上启动复制:
START SLAVE;
在两台服务器上检查复制状态:
SHOW SLAVE STATUS\G;
确认 Slave_IO_Running
和 Slave_SQL_Running
都为 Yes
,表示复制已成功启动。
在 my.ini
中添加忽略错误的配置:
[mysqld]slave-skip-errors=1062,1053,1146 # 忽略特定错误代码# 或者slave-skip-errors=all # 忽略所有错误
常见错误包括:
服务器 UUID 冲突
查看 UUID 状态:
SHOW VARIABLES LIKE 'server_uuid';
如果 UUID 冲突,删除 auto.cnf
文件或重启 MySQL。
跳过事务错误
使用以下命令跳过特定事务错误:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
然后重新启动复制:
STOP SLAVE;START SLave;
这个步骤注重实际操作细节,重点突出关键配置项和常见问题处理方法,旨在帮助您顺利实现主主复制功能。
转载地址:http://pjgqz.baihongyu.com/