各位好,最近又面临 MySQL 异地同步问题,想了一个主意,不知道大家有没有更好的办法。
MySQL , MyISAM 引擎,中美欧三地机房
数据不要求实时,有一两天延时也没关系,服务器半夜可停机。 <- 这些前提很重要
美国放主服务器
中欧放从服务器
主从复制
效果好的时候一切 OK,但你懂的,经常断,修复起来很麻烦。
比如说 从主服务器 copy Binlog 到 从服务器然后再同步,类似这样,但感觉太复杂,不方便自动化:
http://blog.csdn.net/jesseyoung/article/details/37106035
http://jojodiff.sourceforge.net
因为 MyISAM 引擎本质上就是文件,所以我想用 diff 的方式来做:
a) 主服务器上 copy 一份原始数据库 base 文件(table.FRM, table.MYD, table.MYI),并传递到从服务器
b) 一天后停主服务器,跟原始文件生成 patch 文件
c) 传递 patch 到从服务器,跟原始文件 merge ,生成新的数据库文件,重启 mysql 服务
d) 以后每天半夜同样处理
e) 视 patch 文件大小,可以一个月一次或几个月一次更新 base 文件
这一切可以通过 bash 和 Cron 自动执行,简单可靠,只要主服务器不出错,从服务器没有出错的理由。 主服务器可以用 Digital Ocean 的备份服务。
大家讨论一下这个方法有没有什么明显问题,或者有什么更可靠的简单方法。 方法要简单,类似这种高雅范的我真有点吃不消: https://github.com/alibaba/otter
谢谢!
@livid 编辑器太难用
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.