系统结构如下图:
M1 <--------> M2
| |
/\ /\
/ \ / \
/ \ / \
S11 S12 S21 S22
其中: M1:主MySQL数据库1
S11:主MySQL数据库1的从数据库11
S12:主MySQL数据库1的从数据库12
M2:主MySQL数据库2
S21:主MySQL数据库2的从数据库21
S22:主MySQL数据库2的从数据库22
M1和M2都要求打开log-slave-updates配置项。这样M2从M1获取的更新也会保存在bin-log中,从而导致S21和S22的更新;反之亦然。这种结构下面应用程序主用的更新数据库要在一段时间内固定为M1或者M2。如果更新数据库为M1,查询时可以为S11、S12。如果M1崩溃可以切换到M2,S21,S22。
MySQL的主主复制参见之前的文章http://lht.iteye.com/blog/297584