Mysql存储过程同步数据

勿视人非 2015-08-18 03:05:51
最近项目中需要使用Mysql的存储过程实现数据同步,数据在不同的服务器上,每天数据增量大概是20~25万左右,存储过程就是将这些增量的数据获取过来,插入到本地数据库。

实现过程自己知道写,现有的方法也可以实现数据同步,那么问题来了:

1. 如何知道我把增量数据完全同步过来了?
通过查询源表增量数据数量和查询本地目的表数据量的方法太费时间,不能够使用。因为两个表数据量都是上亿。

2. 有什么比较好的方法,能够提供数据同步的效率,缩短时间。
我现有的方法是将增量数据查询出来,然后插入到数据库,使用的是这样的形式 insert into ..... select ..... from ..... where ....

大神帮帮忙,分不够可以再加。
...全文
419 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rick-he 2015-08-28
  • 打赏
  • 举报
回复
1、在源数据库建一张临时表,将每天的增量数据放到临时表中, 2、判断数据是不是同步到临时表可以使用count来比较(不过都在一个库里面出现数据不全应该很少),临时表的好处就是没有索引所以插入很快,count全部数据也不需要索引。加上也就30万数据。 3、在本地目的表的数据库也建一张临时表,现在将源数据库的临时表数据放到目的表的数据库的临时表中 4、判断数据是不是同步到临时表,也可以用上面2的方法,好处:即使数据有丢失也不会弄脏本地目的表。 5、将目的表的数据库的临时表数据插入到本地目的表。 6、清空两张临时表。下次使用。 时间没有计算过,不过应该不会变慢。最少保证了问题1,并且弄脏数据的概率低。
douyaqiang123 2015-08-28
  • 打赏
  • 举报
回复
在所有表中都加上一个时间撮字段。然后每次 insert into的时候 where 条件跟上时间撮范围不就OK了吗。
Rotel-刘志东 2015-08-20
  • 打赏
  • 举报
回复
最好用用mysql复制去实现同步。 如果是上亿条数据你采用 insert into ..... select ..... from ..... where .... 效率是比较低的,对服务器的性能有很大的影响的。
LongRui888 2015-08-20
  • 打赏
  • 举报
回复
另外,可以用 mysql的主从复制来实现,这个是非实时的同步,这样实现 一般也不会有性能上的问题,主库的数据有新增的,那么也会自动同步到 从库上,这个是通过二进制日志来实现的。
LongRui888 2015-08-20
  • 打赏
  • 举报
回复
你是要实现 mysql直接的数据同步是吗。 我觉得是否可以这样,就是在表中新增一个字段,为1表示已经同步,为0表示,还没有同步,然后就按照你的第2点来实现,这个字段上建个索引,加快查询速度。

56,865

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧