V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
zpvip
V2EX  ›  MySQL

MySQL 异地同步问题

  •  
  •   zpvip · 2016-08-17 20:10:21 +08:00 · 6568 次点击
    这是一个创建于 3001 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    14 条回复    2016-08-18 11:46:27 +08:00
    shoaly
        1
    shoaly  
       2016-08-17 20:51:03 +08:00
    既然都用 数据库文件了, 跟直接用 rsync 有区别么
    zpvip
        2
    zpvip  
    OP
       2016-08-17 21:01:50 +08:00
    @shoaly 有道理,不过可能还是有点点不一样。

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

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

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

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

    PS :为毛不用 innodb?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5548 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:30 · PVG 16:30 · LAX 00:30 · JFK 03:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.