MySQL 异地同步问题

2016-08-17 20:10:21 +08:00
 zpvip

各位好,最近又面临 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 编辑器太难用

6580 次点击
所在节点    MySQL
14 条回复
shoaly
2016-08-17 20:51:03 +08:00
既然都用 数据库文件了, 跟直接用 rsync 有区别么
zpvip
2016-08-17 21:01:50 +08:00
@shoaly 有道理,不过可能还是有点点不一样。

如果用 rsync ,主服务器必须停机,复制一份数据库文件,然后再用 rsync 。 rsync 的时间应该比较长,直接用数据库文件要停机很久。

如果用 diff, 可以先停机,然后直接用数据库文件和 base 作比较, 这个生成的过程应该比较短。
jhaohai
2016-08-17 21:10:45 +08:00
找台网络连通性好的机器,三台机器通过 VPN 连到一个子网里,用 mysql 自带的主从复制
kingwkb
2016-08-17 21:25:04 +08:00
异地还是自己写同步数据逻辑比较好吧
wy315700
2016-08-17 21:29:11 +08:00
xtrabackup
aaa0009
2016-08-17 21:31:34 +08:00
@zpvip rsync 加密了吗? 提个醒,中美之间的传输,如果加密,容易被封,不加密会好很多。
zpvip
2016-08-17 22:11:48 +08:00
似乎有更好的 Time Machine

http://www.nongnu.org/rdiff-backup/index.html
ksupertu
2016-08-17 23:07:18 +08:00
关键字: 阿里巴巴
Marfal
2016-08-17 23:19:13 +08:00
关键词:阿里云
Livid
2016-08-18 08:17:19 +08:00
zbz
2016-08-18 09:53:02 +08:00
binlog 不是挺好的么,断了就弄了一个脚本自动修
fearlesschen
2016-08-18 10:26:37 +08:00
Percona XtraDB Cluster
qq1242245799
2016-08-18 11:11:30 +08:00
我这边有个自营机房在香港,接入 cn2+pccw+九仓三线组的 bgp 带宽, q1821753741
wweir
2016-08-18 11:46:27 +08:00
个人感觉楼主的方法看起来很不 MySQL ,或许下面的方法可以好点。

做一个公用的备份仓库,勤备份(全、增)。
开异步复制,断了就让它断,拉备份重新接。

PS :为毛不用 innodb?

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

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

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

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

© 2021 V2EX