求教Mysql主从复制注意事项

2013-06-01 22:19:17 +08:00
 romotc
1.跨网主从复制是否可行,两台服务器间ping值在100以内。
2.master/slave服务器mysql异常关闭,被kill掉的情况下是否会影响同步
3.master down机时,切换slave是否需要特殊操作数据库?
master恢复之后应该如何将slave上的数据同步回master

在网上搜了一些文章,总感觉是抄来抄去的不太放心。请各位大神支招
2882 次点击
所在节点    MySQL
8 条回复
julyclyde
2013-06-02 09:30:50 +08:00
12可以。3需要;原master恢复后作为slave就得了
likuku
2013-06-03 04:20:30 +08:00
3 不需要。但之后,建议将slave当成新的master用;或者找机会停机维护,将读写使用中的slave数据复制到旧的master覆盖老的(masql库因为记录主从配置信息,不能覆盖,建议老的master也做好完整备份)。主从mysql版本一致时(作主从,尽可能如此),我是直接复制数据文件的,当然最好先关闭相关mysql服务。
romotc
2013-06-03 08:37:14 +08:00
@julyclyde
@likuku 真是有点麻烦,不知道有没有无痛的数据备份方案。。
likuku
2013-06-03 10:03:14 +08:00
@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
2013-06-03 10:07:06 +08:00
如果只用InnoDB及其衍生物的话,可以用xtraBackup工具备份


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

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

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

用到备份的场景更多是查询之前某天的数据。

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

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

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

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

© 2021 V2EX