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
GitHub 登录
Gitee 登录
QQ 登录