MySQL MHA 典型使用场景

1      管理节点部署位置
1.1.      Dedicated Manager server and multiple MySQL (master,slaves) servers

Since MHA Manager uses very little CPU/Memory resources, you can manage lots of (master, slaves) pairs from single MHA Manager. It is even possible to manage 100+ pairs from single manager server.

1.2.      Running MHA Manager on one of MySQL slaves

If you have only one (master, slaves) pair, you may not like allocating dedicated hardware for MHA Manager because it adds relatively high costs. In such cases, running MHA Manager on one of slaves makes sense. Note that current version of MHA Manager connects to MySQL slave server via SSH even though the MySQL server is located on the same host as MHA Manager, so you need to enable SSH public key authentication from the same host.

2      不同主从配置下的主从切换场景
2.1        Single master, multiple slaves(单主多从)
        M(RW)                            M(RW), promoted from S1        |                                            |  +------+------+        --(master crash)-->    +-----+-----+ S1(R) S2(R)  S3(R)                          S2(R)        S3(R)This is the most common replication settings. MHA works very well here.

2.2        Single master, multiple slaves (one on remote datacenter) 单主多从,一个从位于远程数据中心
        M(RW)                                M(RW), promoted from S1        |                                                |  +------+---------+        --(master crash)-->    +-----+------+ S1(R) S2(R)    Sr(R,no_master=1)                  S2(R)        Sr(R,no_master=1)In many cases you want to deploy at least one slave server on a remote datacenter. When the master crashes, you may not want to promote the remote slave to the new master, but let one of other slaves running on the local datacenter become the new master. MHA supports such requirements. Setting no_master=1 in the configuration file makes the slave never becomes new master.

2.3        Single master, multiple slaves, one candidate master(单主多从,一个候选主)
      M(RW)-----S0(R,candidate_master=1)  M(RW), promoted from S0      |                                          |  +----+----+          --(master crash)-->  +----+----+ S1(R)    S2(R)                            S1(R)      S2(R)In some cases you may want to promote a specific server to the new master if the current master crashes. In such cases, setting candidate_master=1 in the configuration file will help.

2.4        Multiple masters, multiple slaves(多主多从)
      M(RW)<--->M2(R,candidate_master=1)  M(RW), promoted from M2      |                                          |  +----+----+          --(master crash)-->  +----+----+ S(R)    S2(R)                            S1(R)      S2(R)In some cases you may want to use multi-master configurations, and you may want to make the read-only master the new master if the current master crashes. MHA Manager supports multi-master configurations as long as all non-primary masters (M2 in this figure) are read-only.

2.5        Three tier replication(三层复制架构)
        M(RW)                                  M(RW), promoted from S1        |                                                |  +------+---------+        --(master crash)-->    +-----+------+ S1(R) S2(R)    Sr(R)                              S2(R)      Sr(R)                  |                                              |                  +                                              +                  Sr2                                            Sr2In some cases you may want to use three-tier replication like this. MHA can still be used for master failover. In the configuration file, manage the master and all second-tier slaves (in this figure, add M,S1,S2 and Sr in the MHA config file, but do not add Sr2). If the current master (M) fails, MHA automatically promotes one of the second-tier slaves(S1,S2,Sr, and you can also set priorities) to the new master, and recover the rest second-tier slaves. The third tier slave(Sr2) is not managed by MHA, but as long as Sr (Sr2's master) is alive, Sr2 can continue replication without changing anything.