mysql8主从复制新增从库操作过程

原创 临窗旋墨 2026-07-23 阅读:0 分类: 专题: Linux小主机实践 标签: mysql

mysql主从配置新增从库

背景:
因本博客V3版本升级需要迁移库

环境:

  • 操作系统:Ubuntu Server
  • MySQL:8.x
  • 已存在主从复制
  • 当前已有数据库 qiudong 正在同步
  • 现在新增数据库 lcxm_backend,并且主库已经存在数据
  • 目标:让 lcxm_backend 加入主从复制

一、主库配置修改

1. 修改 MySQL 配置

主库执行:

sh 复制代码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

增加数据库复制规则:

复制代码
server-id=1

log-bin=mysql-bin

binlog-do-db=qiudong
binlog-do-db=lcxm_backend

保存。


2. 重启 MySQL

Ubuntu:

复制代码
sudo systemctl restart mysql

查看状态:

复制代码
sudo systemctl status mysql

确认:

复制代码
active (running)

3. 检查 binlog

进入 MySQL:

复制代码
mysql -uroot -p

检查:

复制代码
SHOW VARIABLES LIKE 'log_bin';

结果:

复制代码
log_bin ON

检查复制过滤:

复制代码
SHOW VARIABLES LIKE 'binlog_do_db';

应该包含:

复制代码
qiudong,lcxm_backend

但是其实查不到:grep -r "binlog-do-db" /etc/mysql/

二、获取主库当前 binlog 位点

主库执行:

复制代码
FLUSH TABLES WITH READ LOCK;

不要退出当前连接。

执行:

复制代码
SHOW MASTER STATUS;

记录:

qiudong,lcxm_backend

File Position
bin-log.000924 157

记录:

复制代码
SOURCE_LOG_FILE=bin-log.000924

SOURCE_LOG_POS=157

三、导出新增数据库

保持上面的锁。

打开新的 SSH 窗口。

执行:

复制代码
mysqldump \
-uroot -p \
--single-transaction \
--databases lcxm_backend \
> /tmp/lcxm_backend.sql

四、解除主库锁

回到第一个 MySQL 会话:

执行:

复制代码
UNLOCK TABLES;

主库恢复正常。


五、复制 SQL 到从库

主库执行:

复制代码
scp /tmp/lcxm_backend.sql 用户名@从库IP:/tmp/

例如:

复制代码
scp /tmp/lcxm_backend.sql ubuntu@192.168.1.20:/tmp/

六、从库导入数据库

登录从库:

复制代码
ssh ubuntu@从库IP

导入:

复制代码
mysql -uroot -p < /tmp/lcxm_backend.sql

检查:

复制代码
SHOW DATABASES;

应该存在:

复制代码
lcxm_backend

七、重新设置复制起点

从库进入 MySQL:

复制代码
mysql -uroot -p

停止复制:

复制代码
STOP REPLICA;

设置新的复制位置:

复制代码
CHANGE REPLICATION SOURCE TO
SOURCE_LOG_FILE='bin-log.000924',
SOURCE_LOG_POS=157;

替换成第二步记录的值。


八、启动复制

复制代码
START REPLICA;

查看状态:

复制代码
SHOW REPLICA STATUS\G

重点:

复制代码
Replica_IO_Running: Yes
Replica_SQL_Running: Yes

如果:

复制代码
Last_IO_Error:
Last_SQL_Error:

为空。

说明成功。


九、验证同步

主库:

复制代码
USE lcxm_backend;

CREATE TABLE test_sync(
    id bigint primary key,
    name varchar(50)
);


INSERT INTO test_sync VALUES(1,'hello');

从库:

复制代码
USE lcxm_backend;

SELECT * FROM test_sync;

结果:

复制代码
1 hello

说明新增数据库复制成功。


完整流程简版

复制代码
主库:

修改 /etc/mysql/mysql.conf.d/mysqld.cnf
        |
        |
systemctl restart mysql
        |
        |
FLUSH TABLES WITH READ LOCK
        |
        |
SHOW MASTER STATUS
记录 File / Position
        |
        |
mysqldump lcxm_backend
        |
        |
UNLOCK TABLES


从库:

导入 lcxm_backend.sql
        |
        |
STOP REPLICA
        |
        |
CHANGE REPLICATION SOURCE TO
        |
        |
START REPLICA
        |
        |
SHOW REPLICA STATUS

评论区

avatar
未登录

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