当前位置:首页 > 技术分享 > 正文内容

MySQL 全量同步增量同步 免费开源 DBSyncer 一主一备

admin2个月前 (03-18)技术分享286

在这里主要讲的是mysql 一主一备 实现全量同步增量同步,主从要求更高自己决定

用到的软件是 DBSyncer 确保服务器已安装 JDK 1.8 或更高版本(DBSyncer依赖Java环境)

一.YUM安装java 如已安装可跳过

  1. 查找可用版本

    Bashyum -y list java*  # 查看可安装的JDK版本
  2. 安装OpenJDK 1.8

    Bashyum install -y java-1.8.0-openjdk-devel.x86_64  # 安装带开发工具包的JDK 具体看上一命令结果
  3. 验证安装

    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官方文档或社区教程 


扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/659.html

分享给朋友:

相关文章

[Windows] Adobe Flash Player 34.0.0.92及可用版修改方法

[Windows] Adobe Flash Player 34.0.0.92及可用版修改方法

随着 2021 年的到来,Adobe Flash Player 也迎来了告别,Adobe 在 2020 年 12 月 31 日后将不再支持 Flash Player。其实早在 2017 年,Adobe 公司就已宣布,计划在 2020 年底逐...

php Aes 加密模式ECB填充pkcs5padding base64

最近做支付项目用到了aes加密不过试了好多办法总是和官方给出的结果不一样,找了很久终于找到了测试结果同 http://tool.chacuo.net/cryptaes/ <?php /**  * [Aes&nb...

用CMD命令查询域名的DNS解析记录:A,NS,MX,CNAME,TXT

1、查询域名的A记录nslookup -qt=A bitefu.net当然查询A记录你直接用ping命令来ping域名也可以获得A记录。2、查询域名的NS记录nslookup -qt=NS bitefu.net3、查询域名的MX记录nslo...

抢先体验太阳谷!20H1、20H2、21H1替换“Dev版新图标”

尽量不要替换shell32.dll.mun和zipfldr.dll.mun,这两老哥可能会带来无法预测的风险!不解除被替换文件的硬链接,已确定会导致无法安装质量更新!(详见H大测评)单替换imageres.dll.mun新图标覆盖率基本可达...

[教程福利] Python 全网比较全面的资源

阿里 Python 应该算比较全面了,编辑完了差不多用了三个小时左右,如果对你有帮助,给个免费的热心吗,在这里谢谢了各位大佬。092-****实战课-畅销3年的Python分布式爬虫课程-原版提取https://www.aliyundriv...

Linux/centos inode 占用100%的解决办法

当你的 Linux 系统无法创建新文件时,有可能是你的磁盘满了,还有可能是你的磁盘的 inode 用光了,我们今天要说的就是后一种情况,要解决这个问题,只能是删除一些文件,但是一般情况下,其实是你的系统中的某个地方产生了大量的你并不需要的文...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。