mysql8主从复制主从切换(switchover)

2026-08-15 阅读:12 分类: 数据库 专题: Linux小主机实践 标签: mysql

mysql8主从复制主从切换(switchover)

2026-08-15调换主从复制的主从身份。

原本家用小主机作为主库,云主机作为从库,但是考虑到小主机可能有关机停电等风险,顾切换云主机为主,小主机为从。如果后续更换云厂商的话,重新更换新的云主机为主即可。

当前:

  • A = Master
  • B = Slave

目标:

  • B = Master
  • A = Slave

1. 确认从库已经追平

B上(原 Slave):

复制代码
SHOW SLAVE STATUS;
--  确保是0
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

2. 停止业务写入

先停止应用。

否则切换过程中:

A 还有新的写入,B 没同步完,会丢数据。

3. 在 B 上停止复制

复制代码
STOP REPLICA;

查看当前复制点:

复制代码
SHOW MASTER STATUS;

记录 File 和 Position

  • binlog.000224 1721787

4. 把 B 设置成新主库

/etc/mysql/mysql.conf.d/ mysqld.cnf

复制代码
server-id=2
# enable bin log
log-bin=bin-log
# which database will be replication (default is all)
#binlog-do-db=qiudong
binlog-do-db=lcxm_backend
# 2592000 = 30days
binlog_expire_logs_seconds=2592000
binlog_format=MIXED

重启systemctl restart mysql

SHOW MASTER STATUS;

  • bin-log.000001 157

5. 清理 B 的只读状态

如果有read-only, 可以去掉

SHOW VARIABLES LIKE 'read_only';

复制代码
#[可选] 0(默认)表示读写(主机),1表示只读(从机)
 #read-only=0

6. 配置 A 作为 B 的从库

此时也可以按需关闭到A的bin-log

停止原来的主库状态:RESET MASTER;

复制代码
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='B的IP',
SOURCE_USER='repl',
SOURCE_PASSWORD='密码',
SOURCE_LOG_FILE='bin-log.000001',
SOURCE_LOG_POS=157;

启动: START REPLICA;

复制代码
SHOW SLAVE STATUS;

Master_Host: B
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

测试略。

评论区

avatar
未登录

暂无评论,来发表第一条评论吧~