码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2019-06-04 09:44:11      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:个数   HERE   添加   rom   主从   方案   方便   博文   不能导出   

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

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

本可以使用:
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
版权声明:本文为博主原创文章,转载请附上博文链接!

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

标签:个数   HERE   添加   rom   主从   方案   方便   博文   不能导出   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!