mysql 有主从同步复制功能,现在有两台服务器 A 和 B , A 为主服务器, B 平时不提供服务,但是和 A 保持数据一致。一旦 A 挂了,就切换到 B ,我刚开始以为可以用主从同步实现。后来阅读文档后发现 MySQL 的主从模式其实是为了读写分离设计的,不是为了容灾。 A 一挂,切换到 B , B 的数据就和 A 不一致了,将来要切换回去就很麻烦,有更好的办法吗
1
czb Nov 21, 2016 via Android
容灾是 Master-Master Replication
|
2
enenaaa Nov 21, 2016
或许你需要 Galera Cluster 或者 MySQL Fabric 之类的
|
3
msg7086 Nov 21, 2016
双主复制, Galera 。然而容灾还是需要手工备份,因为万一有人 drop 了数据库,除了备份谁都救不了你。
|
4
ixinshang Nov 21, 2016 via Android
最近也在纠结这个问题
|
6
noahzh Nov 21, 2016
楼上都没有说到重点,都是知其然而不知其所以然, mysql 同步要使用半同步,版本最好选用 5.7 ,开启 gtid ,理论上是可以保证数据一致性的,实际中极端情况可能丢失一个事物的数据。
|
7
Powered Nov 21, 2016 via iPhone
|
8
noahzh Nov 21, 2016
@Powered 是不是主主,没有意义, slave 关闭 read_only 就可以,这根本不是问题。
你的主主,只能两台机器。 现在 mysql 高可用都是使用 gtid , 是可以 n 台( n>=2). 你不了解 mysql 同步机制,更不了解 gtid ,双主和一种一从,在只在主写的情况下是没有任何区别的。 做技术还是要深入了解的。 |
9
medivh Nov 21, 2016
5.5, 5.6 同步模式开启 semi-sync 就行了,基本上保证不会丢数据了。
如果能启用 GTID 那连 indoor-transaction 都能救回来了 |