MySQL 全量同步增量同步 免费开源 DBSyncer 一主一备
在这里主要讲的是mysql 一主一备 实现全量同步增量同步,主从要求更高自己决定
用到的软件是 DBSyncer 确保服务器已安装 JDK 1.8 或更高版本(DBSyncer依赖Java环境)
一.YUM安装java 如已安装可跳过
查找可用版本
Bashyum -y list java* # 查看可安装的JDK版本
安装OpenJDK 1.8
Bashyum install -y java-1.8.0-openjdk-devel.x86_64 # 安装带开发工具包的JDK 具体看上一命令结果
验证安装
Bashjava -version # 应显示"openjdk version 1.8.0_XXX"javac -version # 验证编译器是否安装成功 [object Object]
二、DBSyncer部署
1. 通过Docker部署(如果已安装Docker推荐)
Bash# 创建数据目录并启动容器mkdir -p /data/dbsyncer
docker run -d \ --name dbsyncer \ -p 18686:18686 \ -v /data/dbsyncer:/app \ crazylife/dbsyncer-web:latest
访问地址:http://服务器IP:18686,默认账号密码为admin/admin
宝塔docker中安装方法
本地镜像->从仓库中拉取->命令拉取->输入以下命令
docker pull crazylife/dbsyncer-web
拉取完了在本地镜像中会看到,点后面的创建容器 输入名称和端口号 18686 确定 不暴露端口用反向代理访问
建议用域名开启反向代理来隐藏端口
2. 手动安装(无Docker环境 注:有高危漏洞)
Bash# 下载安装包并解压 # 启动服务
最新版本:https://gitee.com/ghi/dbsyncer/releases/latest
wget https://gitee.com/ghi/dbsyncer/releases/download/2.0.0/dbsyncer-2.0.0.zip unzip dbsyncer-2.0.0.zip -d /opt/dbsyncercd /opt/dbsyncer/bin./startup.sh
三、配置MySQL同步
1. 添加数据库连接
源库(主MySQL)
进入DBSyncer Web界面 → 添加连接 → 类型选择MySQL。
填写参数示例:
Text
名称:主MySQL
账号:sync_user
密码:your_password
URL:jdbc:mysql://[IP]:3306/数据库名
目标库(备MySQL)
类似步骤,URL填写备MySQL的IP、端口及库名(如jdbc:mysql://127.0.0.1:3306/目标库名)。
注:Docker 不能与localhost 因为localhost是Docker本机,可以尝试其它外网ip或外网ip
2. 创建驱动规则
添加驱动
驱动类型选择MySQL → MySQL,关联源库和目标库连接。
同步模式:
全量同步:一次性导入现有数据。
增量同步:实时监听binlog变化(需源库开启binlog) 。
表映射配置
选择需同步的源表与目标表,支持字段映射(如字段名不同需手动匹配)。
高级设置:调整batchSize(批处理大小)优化性能 。
3. 启动同步
在驱动管理页点击 启动,实时监控同步状态:
全量进度:显示已同步数据量。
增量延迟:显示binlog处理延迟(通常秒级) 。
四、验证与监控
数据一致性检查
使用SELECT COUNT(*)对比源库与目标库数据量。
通过DBSyncer内置的 监控统计图 查看同步趋势 。
日志排查
查看DBSyncer日志:/data/dbsyncer/app/logs/dbsyncer.log(Docker部署路径)。
宝塔MySQL日志:/www/server/data/*.err(排查目标库写入异常) 。
五、常见问题
同步延迟高
优化网络带宽(建议内网传输)。
调整DBSyncer的batchSize参数(默认1000,可尝试2000-5000) 。
增量同步失败
检查源库binlog是否开启:SHOW VARIABLES LIKE 'log_bin';。
确保同步账号有REPLICATION权限 。
六、扩展功能
多表关联同步:通过SQL插件自定义复杂逻辑(如多表Join后写入目标表)。
数据清洗:在字段映射中添加转换规则(如日期格式化、字段加密)。
通过以上步骤,您可以在宝塔面板上快速实现MySQL数据库的全量及增量同步。如需进一步优化性能或处理复杂场景,可参考DBSyncer官方文档或社区教程