主从关系怎么配
主从关系配置命令让当前实例成为指定上游的从库,动态执行立即生效并触发一次数据同步;也支持断开关系让实例变回独立实例。用命令行动态配置在重启后会丢失,要长期保持必须写进配置文件。最需要记住的是方向与后果:从库执行该命令时会先清空自身数据再全量同步,误操作等于清库。
基本信息
| 语法 | 指定上游地址与端口 / 断开主从关系 |
|---|---|
| 旧名 | 早期写法为它的别名,功能相同 |
| 动态生效 | 执行后立即触发同步 |
| 持久化 | 需写入配置文件才能在重启后保留 |
| 查看命令 | 复制信息命令查看角色与链路状态 |
| 账号要求 | 上游设置了口令时必须给从库配置认证口令 |
典型使用场景
- 新从库接入:动态指定上游并开始同步
- 迁移切换:把从库重新指向新的上游
- 故障演练:临时断开主从验证业务降级行为
- 只读实例扩容:新增实例后接入复制链路
- 测试环境快速搭一套主从
- 上游下线前把从库重新指向新的主库
动态配置
动态配置
# 在从库上执行:指向上游实例
REPLICAOF 10.0.0.10 6379
INFO replication | grep role # 角色应显示为从库
INFO replication | grep master_link_status # 应为 up
# 断开主从关系,变回独立实例
REPLICAOF NO ONE
# 配置文件方式(重启后仍生效):replicaof 10.0.0.10 6379状态字段读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| role | 当前角色 | 从库显示为从角色 |
| master_link_status | 与上游的链路状态 | up 为正常,down 需要排查 |
| master_host 与端口 | 上游地址 | 确认指向的实例是否正确 |
| master_last_io_seconds_ago | 最近一次与上游交互距今时长 | 持续增大说明链路异常 |
| 复制偏移量 | 从库已同步的位置 | 与上游比较可判断落后程度 |
| 全量同步进行中标记 | 是否正在全量同步 | 为进行中时数据尚未追平 |
| 已连接从库数 | 在上游侧看到的从库数量 | 确认从库是否真的接上了 |
从库执行该命令指向新上游时会先清空自身数据再全量同步:执行前确认这个实例没有独有数据,别把缓存里的临时数据误当业务数据。
上游设置了访问口令却没有给从库配置认证口令,同步会直接失败并报认证错误,这是主从搭建里最常见的阻断点之一。
动态配置在重启后不保留:生产环境应把主从关系写进配置文件或由运维系统统一下发,避免一次重启就悄悄改变了拓扑。
主从配置检查清单
- 确认上游地址端口与认证口令都已配置
- 确认从库没有需要保留的独有数据
- 从库设置为只读,避免业务误写
- 检查复制状态字段,确认链路正常
- 观察偏移量推进,确认同步在进行
- 把拓扑关系固化到配置文件或运维系统
从库承担读流量时要注意数据可见性:同步是异步的,上游刚写入的数据在从库上可能短暂读不到,强一致要求的读请求应回到上游。
切换前先确认从库的偏移量已经追平上游:带着落后数据直接提升为主库,会丢掉这段时间内的写操作,切换窗口内最好先停写再提升。