没有 binary log 如何增量复制 mysql?

2014-07-30 10:37:11 +08:00
 lehui99
有一个远程mysql server,只有一个mysql用户的权限,可以用mysql workbench用这个用户连上去看数据,只能看到一个schema数据库的权限。除此之外没有任何其他权限。

这个数据库现有的数据不会修改,只会不停地往里面insert新的数据,也会create新的table,新create的table也是不停往里面insert。这个数据库里大部分的table都没有设置过主键和索引。

现在由于网速原因连接这个mysql太慢了,现在想在本地建立一个镜像,不停把这个schema数据库中的新记录和新的table复制到本地镜像mysql里,有什么好办法吗?
2758 次点击
所在节点    MySQL
13 条回复
noahzh
2014-07-30 10:38:39 +08:00
做个slave.
lehui99
2014-07-30 10:52:37 +08:00
@noahzh 只有这个mysql user的权限如何做slave?
noahzh
2014-07-30 10:54:54 +08:00
@lehui99 做slave 必须登陆server.
lehui99
2014-07-30 11:00:42 +08:00
@noahzh 所以说啊,没有登录server的权限如何做slave?
jarlyyn
2014-07-30 11:01:45 +08:00
没binlog能做slave么?
oott123
2014-07-30 11:03:25 +08:00
听起来只能写个脚本干这事了…
lehui99
2014-07-30 11:16:45 +08:00
@oott123 有思路或现成的方案么?脚本检测新建的表、表结构变化、新数据,而且数据还没主键和唯一索引,感觉很复杂。
MasterYoda
2014-07-30 12:54:08 +08:00
有binlog的r权限吗
lehui99
2014-07-30 13:03:54 +08:00
@MasterYoda 没有啊,只有用mysql workbench用mysql用户连上去只读数据的权限。
oott123
2014-07-30 23:14:59 +08:00
@lehui99 没主键和唯一索引的话,这就没思路了……
lehui99
2014-07-31 13:00:15 +08:00
@oott123

这个数据库是用来记log的,每个table都有一列是event_time,用来记录此条log产生的时间。但时间可能会重复,比如1秒内有2条相同类型的log,就会记录在同一个table中。

除了这个字段外其他的字段每个table都不一样,table结构有时候还会有变化,还会有新的table产生。

正在尝试用脚本完成这个事情。
oott123
2014-07-31 14:53:48 +08:00
@lehui99 用 time 大于等于上次记录的时间?
table 的话就要另外处理了…
不过我不太明白什么环境会改变 table 结构…这不是作死么…
lehui99
2014-07-31 22:58:40 +08:00
@oott123 嗯,只能大于等于最后的时间往后找了,还要比较每一个字段才能判断是否是同一条记录。

自动新建table以及add column都实现好了,检测到有drop table/column时只能通知去手动处理了,因为不知道是真的删除了还是被改名了。还有column定义变化也要通知手动处理。

程序中此种类型的log格式有变化的话table结构就会变,没办法。和腾讯合作拿不到binlog就是麻烦。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/125216

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX