ä¸æ–‡
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
Quick Start
Run 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
Download Source Code
cd $GOPATH
mkdir -p src/github.com/moiot
cd src/github.com/moiot
git clone <remote_repo> moha
cd moha
Development Environment Setup
make 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
Local Machine Running Environment Setup
make env-up
Create Local Machine Running Agents, AKA Test Code on Local Machine
make docker-agent
make start-agents
Local Machine Running Environment Destroy
make clean-data
Roadmap
License
This project is under the Apache 2.0 license. See the LICENSE file for details.
Acknowledgments
- Thanks rxi for the lightweight log framework
- Thanks juju/errors for the error handling framework
- Thanks yubai for his Lease analysis