MySQL

实时同步线上mysql数据到本地mysql数据

智言 2026年04月12日 阅读(19) 0

第一步是开启 binlog 功能,并修改 MySQL 配置文件(my.cnf 或 my.ini),然后重启使配置生效

log-bin=mysql-bin
binlog-format=row
server-id = 123
expire_logs_days = 7
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""

第二步创建同步专用账号并授权

CREATE USER 'async_user'@'%' IDENTIFIED BY '你的密码';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'async_user'@'%';
FLUSH PRIVILEGES;

然后通过下面命令查询并记录一下我们需要用到的同步信息

SHOW MASTER STATUS;

会得到一个FilePosition的查询结果,需要记录下来,因为从库将从这里开始同步。

第三步就需要设置一下从库的MySQL配置,如下:

[mysqld]
server-id = 246
relay-log = mysql-relay-bin
read_only = 1

需要注意一下这里的server-id,不要和主数据库的重复,设置一个不一样的就行,必须唯一。

第四步就可以启动同步了,首先重启本地MySQL,执行以下SQL指定主库信息并启动同步。

--8.0.22以下版本
CHANGE MASTER TO
    MASTER_HOST='线上数据库IP',
    MASTER_USER='async_user',
    MASTER_PASSWORD='your_password',  -- 替换为实际密码
    MASTER_LOG_FILE='记录的File值mysql-bin.000001', -- 请替换为实际的二进制日志文件名
    MASTER_LOG_POS= 记录的Position值123456;            -- 请替换为实际的日志位置
START SLAVE;

如果你使用的MySQL版本在8.0.22 及以上版本,需要使用下面的代码

--8.0.22及以上版本
CHANGE REPLICATION SOURCE TO
    SOURCE_HOST = '线上数据库IP',
    SOURCE_USER = 'async_user',
    SOURCE_PASSWORD = 'your_password',  -- 替换为实际密码
    SOURCE_LOG_FILE = '记录的File值mysql-bin.000001', -- 请替换为实际的二进制日志文件名
    SOURCE_LOG_POS = 记录的Position值123456;            -- 请替换为实际的日志位置
START REPLICA;  -- 启动复制线程

第五步检查以下状态:运行 SHOW SLAVE STATUS;,若 Slave_IO_Running 和 Slave_SQL_Running 均为 Yes,则表示同步成功。

如果这2个状态有一个不是yes的情况下,需要查看对应的error字段进行查看并修复。

如果你需要同步部分数据库并且主从数据库的名字不一样,可以用下面代码操作

-- 先停止
STOP SLAVE;
-- 重新设置你需要的过滤和重写规则
CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((主数据库表, 从数据库表));
CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('从数据库表.%');
-- 启动
START SLAVE;

同样的,如果你使用的MySQL版本在8.0.22 及以上版本,使用的停止和启动命令需要更改一下,中间的重写设置不变。

智言

业务开发请联系QQ:5679361

评论 抢沙发

评论前必须登录!

 


如果你觉得本站内容对你有所帮助,比如提升你对编程方面的认识,你可以通过上面的二维码请博主喝杯咖啡,安好。

WEB前端开发部落(公众号:webapp_club)

群列表

前端初级学习群:初级Web前端学习群(后期为支付入群)
PHP初级学习群:PHP(MySQL)学习交流群
QQ群仅作为相关领域讨论平台,均提供高质量问题交流,禁止闲聊,无法接受的朋友请勿加群!
进群需要通过这里获取进群码才能进群哦!

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏