mysql主从复制显示正常,数据没同步现象。

本文记录了一次MySQL主从复制出现故障的情况,通过调整server-id解决了问题。文章详细介绍了故障现象、排查过程及最终解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当时在一个服务器上开启了多实例,主从复制结构图如下:

 

当时在192.168.10.3的服务器上用show slave status;显示的是正常的复制的,两个线程都为yes,并且读与写的pos也一直在增加,但是主库上的任何的改动并没有被复制到从库上。

用pt-table-checksum 检查主从一致性时,一直被在卡住,有如下的提示信息:

Waiting to check replicas for differences: xx% 00:12 remain

Waiting to check replicas for differences: xx% 00:24 remain

Waiting to check replicas for differences: xx% 00:36 remain

一直卡住走不下去。

 

 

后来再看配置文件才知道原来是server-id重复了,把从库中一个实例的id改成21,重启,正常了!!!

总结: server-id不同实例一定要不相同,要不出现的问题现象会很奇怪。

 

### MySQL 主从复制下的数据迁移最佳实践 #### 配置环境准备 为了确保MySQL主从复制能够顺利进行,需先确认版本兼容性和网络连通性。对于MySQL 8及以上版本,创建用于复制的用户时需要注意权限分配的变化[^2]。 #### 创建同步账户 针对新版本MySQL(如MySQL 8),应分两步来设置复制所需的账号: ```sql CREATE USER `repl_user`@`%` IDENTIFIED WITH caching_sha2_password BY 'your_secure_password'; GRANT REPLICATION SLAVE ON *.* TO `repl_user`@`%`; ``` 此操作会建立一个名为`repl_user`的新用户,并赋予其必要的复制权限。 #### 同步现有数据至从库 一种方法是在不影响业务运行的情况下通过物理备份的方式传输表空间文件(*.ibd),这适用于InnoDB存储引擎。具体命令如下所示: ```bash scp -r /path/to/mysql/data/databasename/*.ibd user@remote_host:/path/to/mysql/data/databasename/ ``` 上述指令可以将指定数据库的所有*.ibd文件安全地转移到目标机器上的相应位置[^3]。 #### 设置主库配置参数 编辑my.cnf(my.ini)文件以启用binlog记录以及定义server-id: ```ini [mysqld] server-id=1 log-bin=mysql-bin.log ``` 重启MySQL服务使更改生效。 #### 初始化从库状态 登录到Slave端执行CHANGE MASTER语句连接Master节点并启动IO线程和SQL线程: ```sql CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl_user', MASTER_PASSWORD='your_secure_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=log_position; START SLAVE; ``` 这里需要填写实际的日志文件名及其偏移量,这些信息可以在Master端SHOW MASTER STATUS;查询获得[^1]。 #### 检查复制链路健康状况 最后定期监控两个实例之间的延迟情况,可通过SHOW SLAVE STATUS\G查看Seconds_Behind_Master字段值判断是否存在滞后现象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值