What is Mobike High Availability(MoHA)? 中文
MoHA provides the high availability(HA) for cross-region MySQL clusters, by automating master failover and fast master switch.
- 
High Availability Master failure detection and automating master failover enables master switch in a few seconds. 
- 
Brain Split Prevention By configuring proper lease ttl, MoHA enables at most one master in the cluster at any time. 
- 
Cross AZ Topology Leveraging etcd as the service discovery, MoHA prevent its implementation from VIP, so that the cross-AZ MySQL cluster is able to be build via MoHA. 
- 
Multiple Standby MoHA supports MySQL cluster with multiple standby servers, and ensures that the server with latest log will be promoted during failover. 
- 
Single Point Primary Mode When there is only one MySQL surviving in the cluster, it is able to provide R/W services even if the communication to etcd is unstable or broken, which is called Single Point Primary Mode. MoHA enters and exits this mode automatically. 
- 
Manual Master/Slave Switch Besides the automated failover, which is described below, MoHA provides the ability to switch master manually. 
MoHA is Supporting Mobike Databases in Production
Docker image is already available on Dockerhub
Latest image tag is  v2.4.0, run docker pull moiot/moha:v2.4.0 to pull the image
config and start/stop scripts refers to operation doc
Runtime Dependencies
cd $GOPATH
mkdir -p src/github.com/moiot
cd src/github.com/moiot
git clone <remote_repo> moha
cd mohamake init
make init does the following
- check and install dep
- check and install golint
- check and install goimports
- add git commit hook
- prepare testing framework
now you can do development on your local machine
make env-upmake docker-agent
make start-agentsmake clean-dataThis project is under the Apache 2.0 license. See the LICENSE file for details.
- Thanks rxi for the lightweight log framework
- Thanks juju/errors for the error handling framework
- Thanks yubai for his Lease analysis