mysql跨服务器数据增量同步的解决方案

说明:由于本人的实际情况是不能修改线上对数据引擎的支持,并且只是为了同步部分表,因此没必要将两个库做主从,因此采用以下的方式进行解决

对于跨服务器同步增量导数据的问题,

本可以使用:
select * into outfile "/home/yls/my.log" fields terminated by ‘,‘ lines terminated by ‘\\n‘ from test where id>=(select max(maxId) from maxIdTable;
但是由于不是每个数据库服务器都开启了:--secure-file-priv,因此不能使用into outfile进行导出数据
鉴于实际情况可以采用以下两种方式:
1、直接跨服务器导数据
在目标库中或者源库中执行都可以

mysqldump --host=123.216.147.180 -uroot -p123456 -C stat eb_base_ec4003 --where=‘id >= 3 and id <= 10000‘ --no-create-info |mysql --host=127.0.0.1 -uroot -p123456 test2
优点:1、使用方便简单
  2、无需依赖特定的数据库引擎
  3、效率高
  4、可以添加查询条件
缺点:1、两个库中必须要有两个一模一样的表结构
  2、不能只导部分字段,必须全部导全部的字段
容易出现的问题:这种方式需要注意自增主键id冲突的问题,因为不能只导入部分字段,因此自增主键id在两个库中如果存在冲突就会发生错误
如何解决:可以人为干预从而解决,保证目标库中的所有数据都只是从源表中得到,将可以解决这种问题

2、通过导出导sql文件然后再通过网络传输,再进行导入
在目标库中或者源库中执行都可以(建议在目标库中操作)

mysqldump -h123.216.147.180 -uroot -p123456 stat eb_base_ec4003 --where=‘id >= 3 and id <= 10000‘ --no-create-info > /home/yls/my.sql
这条语句必须在目标库中执行

source /home/yls/my.sql;
优点:1、可以导出指定的字段
  2、无需依赖特定的数据库引擎
缺点:1、操作比较复杂
  2、效率比较低

鉴于两种方式的比较建议使用第一种方式,虽然第一种方式不能导出部分字段,但是,通过规则的限定,可以避免主键冲突的问题
---------------------
作者:冬雷小墨
来源:CSDN
原文:https://blog.csdn.net/TAB_YLS/article/details/80031491
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/HKROnline-SyncNavigator/p/10971514.html

时间: 2024-11-08 05:57:21

mysql跨服务器数据增量同步的解决方案的相关文章

sybase代理表 跨服务器数据同步

sybase ASE 代理表  跨服务器数据同步 之前双做了sybase服务器数据同步,使用的代理表.近期更换server1,一开始安装sybase时本地服务器名不同,server1的数据直接dump,完成后可以读取数据,但在执行代理表数据插入本地表中时报错.查询后 select @@servername 本地名为db3 查询原本地服务器名为charge 删除原名 sp_dropserver db3 设置新名,即原server1名 sp_addserver charge,local 重启syba

Windows下利用rsync实现邮件服务器数据的同步

Windows下利用rsync实现邮件服务器数据的同步 背景环境 对系统管理员来说,平时的工作重心应该集中在维护 系统正常运转,能够正常提供服务上,这里往往牵涉到 一个数据备份的问题,在我所了解的情况中,有80%的系统管理员不是太关心自己服务器的安全性,但往往对 备份镜像的技术相当感兴趣,但由于商业产品的软硬件价格都相当高昂,因此往往会选择自由软件.rsync就 是这样的软件,它可以满足绝大多数要求不是特 别高的备份需求.适用于数据不是很大,海量小的文件的存储备份,结合服务器本身的磁盘阵列技术,

MySQL数据库跨服务器数据同步

1.背景介绍最近公司项目要求与开源项目Zentao做数据对接,因为改动开源项目风险较大,采用将Zentao数据库的相关表与本地数据库同步的方案.由我测试方案的可行性.mysql版本:5.7.20.本地数据库A(作为Zentao数据库),本地数据库B,本地程序C:本地为Windows环境. 2.方案探索方案1项目经理的意思是在A中写触发器,表中数据变化时将ID发给C,由C在A中查询变化的数据,写入B.过程中需要安装mysql-udf-http插件(参考:https://www.2cto.com/d

mysql跨服务器,表数据同步方式!

过程:PLSQL——>Database links——>新建一个dblink 新建dblink具体步骤: 1.数据库连接 所有者:XXX(比如:EAPS) 名称:XXX(辨识度高点的名字,比如:EAPS_LINK) 2.连接到 用户名:XXX(目标数据库用户名) 口令:XXX(目标数据库密码) 数据库: (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = IP地址)(PORT = 端口号)) ) (CONNECT_

Mysql 主从服务器数据同步

安装2台windows Server 服务器,分别安装Mysql,配置环境变量,完成安装确认在CMD窗口可以使用Mysql命令 在Master服务器上创建同步账号,确保Slave服务器能访问Master服务器数据库Master DB Server IP:10.10.0.144Slave DB Server IP:10.10.0.145Mysql > grant replication slave on *.* to [email protected] identified by 'Passwor

mysql跨库数据表的运算

跨库数据表的运算,一直都是一个说难不算太难,说简单却又不是很简单的.总之是一个麻烦的事.大量的.散布在不同数据库中的数据表们,明明感觉要把它们合并起来,再来个小小的计算,似乎也就那么回事……但真要做起来,需要这又忘了那的,却又不像仅仅就那么回事?        想要给这些小麻烦们,来一个快刀斩乱麻式的.嘁嚓咔嚓地一劳永逸的解决方案么?首先,你需要一把叫做集算器的宝刀(重点):然后,你可以再看看这篇算是买一赠一的秘传刀法(免费):最后,面向敌人们手起刀落……你就可以轻松愉快地去睡一个好觉了:跨库数

cwRsync window下的跨服务器的文件同步

cwRsync 是window下的文件同步软件,可以跨服务器运行,第一次运行的时候是全部备份同步,之后的同步采用的是增量同步 这个软件分为服务端和客户端. 服务器是需要同步的文件源, 客户端相当于是备份的服务器. window下软件的安装,没什么需要注意的,服务端的安装中间有一个步骤是输入用户名和密码,这个地方需要修改,并自己记录. 服务端安装成功后,会有一个window服务,记得手动启动. 1.服务端的操作 首先打开安装目录中的rsyncd.conf文件,这是唯一关键的设置. use chro

[linux] mysql跨服务器访问, iptables设置

跨服务器mysql访问, iptables配置 1> 设置被访问机器的mysql权限 grant all privileges on *.* to [email protected]"[ip]" identified by "[pass]" with grant option;  // 授权, 可以根据情况设置不同权限, 本sql赋予远程机器所有mysql操作权限 flush privileges; // 刷新权限 use mysql;   // mysql数

SQL SERVER数据库跨服务器数据导入

今天从服务器导入到本地表数据,因为跨服务器,所以用特殊的方法 ---根据原表创建新表,并且把数据导入select * into 表 from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) ---已经有表结构insert into 表 select* from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) 如果本地Ad Hoc Distributed Quer