moha

MoHA(Mobike High Availability): A MySQL/Postgres high availability supervisor

Github星跟踪图

moha_logo

Build Status
Go Report Card
License

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

  • Docker recommended with the latest version
  • etcd with version no earlier than 3.3.2

One AZ Example
1az

Three AZs Example
3az

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

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

主要指标

概览
名称与所有者moiot/moha
主编程语言Go
编程语言Makefile (语言数: 6)
平台
许可证Apache License 2.0
所有者活动
创建于2018-11-21 02:43:51
推送于2019-10-17 11:54:25
最后一次提交2019-03-01 16:29:18
发布数4
最新版本名称v2.6.1 (发布于 2019-01-15 17:24:17)
第一版名称v2.5.0 (发布于 )
用户参与
星数134
关注者数14
派生数52
提交数23
已启用问题?
问题数12
打开的问题数9
拉请求数14
打开的拉请求数0
关闭的拉请求数0
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?