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
romotc
V2EX  ›  MySQL

求教Mysql主从复制注意事项

  •  
  •   romotc · 2013-06-01 22:19:17 +08:00 · 2873 次点击
    这是一个创建于 3980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.跨网主从复制是否可行,两台服务器间ping值在100以内。
    2.master/slave服务器mysql异常关闭,被kill掉的情况下是否会影响同步
    3.master down机时,切换slave是否需要特殊操作数据库?
    master恢复之后应该如何将slave上的数据同步回master

    在网上搜了一些文章,总感觉是抄来抄去的不太放心。请各位大神支招
    8 条回复    1970-01-01 08:00:00 +08:00
    julyclyde
        1
    julyclyde  
       2013-06-02 09:30:50 +08:00 via iPad   ❤️ 1
    12可以。3需要;原master恢复后作为slave就得了
    likuku
        2
    likuku  
       2013-06-03 04:20:30 +08:00   ❤️ 1
    3 不需要。但之后,建议将slave当成新的master用;或者找机会停机维护,将读写使用中的slave数据复制到旧的master覆盖老的(masql库因为记录主从配置信息,不能覆盖,建议老的master也做好完整备份)。主从mysql版本一致时(作主从,尽可能如此),我是直接复制数据文件的,当然最好先关闭相关mysql服务。
    romotc
        3
    romotc  
    OP
       2013-06-03 08:37:14 +08:00
    @julyclyde
    @likuku 真是有点麻烦,不知道有没有无痛的数据备份方案。。
    likuku
        4
    likuku  
       2013-06-03 10:03:14 +08:00   ❤️ 1
    @romotc 不考虑恢复的话,是有无痛备份的办法:
    专用备份机:磁盘空间很足,磁盘性能非常好,CPU也要足够强,最好就是SSD阵列,跑 mysql:对你所有的master作slave,
    文件系统建议用btrfs/zfs支持snapshot的,需要备份时,临时关闭所有mysql实例,对mysql数据所在的文件系统作个snapshot,然后启动mysql,继续对所有master作同步。

    以前我们用的办法类似这个,只是在专用备份机上临时锁表,然后rsync将数据文件传到专用存储机(zfs),那时ssd阵列跑btrfs也很慢,slave的lag持续增加。

    因为slave的同步是串列单线程,而多线程的各台master生成binlog的速度远快于slave同步串列执行的速度,这备份机最好有比master更强的性能。

    新契机:
    1.新版mysql貌似有多线程slave同步了。
    2.备份的mysql机上可以起多个mysql实例来充分使用cpu core
    julyclyde
        5
    julyclyde  
       2013-06-03 10:07:06 +08:00
    如果只用InnoDB及其衍生物的话,可以用xtraBackup工具备份


    @likuku snapshot并不能保证可靠。InnoDB经常只把数据写入redo log,而不写入数据文件。如果关闭再开启,会有一个很长的关闭阶段,或者开启后有个很长的Recovery阶段,虽然最终数据正确,但缺乏实用性;flash tables with read lock不能保证InnoDB的完整写入
    likuku
        6
    likuku  
       2013-06-03 10:29:43 +08:00
    @julyclyde 历史遗留问题,几乎都是myisam,机器强大,开启+关闭几乎秒杀。

    或许我们数据量太少...4-5个实例总量2百多G的DB。
    julyclyde
        7
    julyclyde  
       2013-06-03 10:46:13 +08:00
    @likuku MyISAM在交叉写入和读出的时候,锁的问题很严重的。纯写或者纯读还挺快。建议你还是改了吧。MyISAM就是玩具,一旦出了问题,repair table use_frm我都用过好多次了,也有救不回来的
    likuku
        8
    likuku  
       2013-06-03 11:54:21 +08:00
    @julyclyde 这些都是以前的历史了,与我无关了。

    SNS网站,可能网站架构还不错,充分利用了memcache,redis,mongodb,cassandra,合理的分库分表,状况良好。备份机制也很管用,repair tab 极少用。

    用到备份的场景更多是查询之前某天的数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5664 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:30 · PVG 11:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.