All Projects → flike → Kingbus

flike / Kingbus

Licence: apache-2.0
A distributed MySQL binlog storage system built on Raft

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Kingbus

MIT6.824-2021
4 labs + 2 challenges + 4 docs
Stars: ✭ 594 (-25.56%)
Mutual labels:  distributed-systems, storage, raft
Blog
my blog, using markdown
Stars: ✭ 25 (-96.87%)
Mutual labels:  mysql, raft, distributed-systems
Raft
Raft Consensus Algorithm
Stars: ✭ 370 (-53.63%)
Mutual labels:  raft, distributed-systems
Odin
A programmable, observable and distributed job orchestration system.
Stars: ✭ 405 (-49.25%)
Mutual labels:  raft, distributed-systems
Elasticell
Elastic Key-Value Storage With Strong Consistency and Reliability
Stars: ✭ 453 (-43.23%)
Mutual labels:  raft, distributed-systems
Juicefs
JuiceFS is a distributed POSIX file system built on top of Redis and S3.
Stars: ✭ 4,262 (+434.09%)
Mutual labels:  storage, distributed-systems
Dragonboat
Dragonboat is a high performance multi-group Raft consensus library in pure Go.
Stars: ✭ 3,983 (+399.12%)
Mutual labels:  raft, distributed-systems
Nuraft
C++ implementation of Raft core logic as a replication library
Stars: ✭ 428 (-46.37%)
Mutual labels:  raft, distributed-systems
Naos
A mildly opiniated modern cloud service architecture blueprint + reference implementation
Stars: ✭ 19 (-97.62%)
Mutual labels:  distributed-systems, storage
Ra
A Raft implementation for Erlang and Elixir that strives to be efficient and make it easier to use multiple Raft clusters in a single system.
Stars: ✭ 478 (-40.1%)
Mutual labels:  raft, distributed-systems
Pysyncobj
A library for replicating your python class between multiple servers, based on raft protocol
Stars: ✭ 468 (-41.35%)
Mutual labels:  raft, distributed-systems
Copycat
A novel implementation of the Raft consensus algorithm
Stars: ✭ 551 (-30.95%)
Mutual labels:  raft, distributed-systems
Glusterfs
Gluster Filesystem : Build your distributed storage in minutes
Stars: ✭ 3,437 (+330.7%)
Mutual labels:  storage, distributed-systems
Shineframe
高性能超轻量级C++开发库及服务器编程框架
Stars: ✭ 274 (-65.66%)
Mutual labels:  mysql, raft
Raft
An Elixir implementation of the raft consensus protocol
Stars: ✭ 369 (-53.76%)
Mutual labels:  raft, distributed-systems
kerala
Distributed KV Streams
Stars: ✭ 16 (-97.99%)
Mutual labels:  distributed-systems, raft
Cortx
CORTX Community Object Storage is 100% open source object storage uniquely optimized for mass capacity storage devices.
Stars: ✭ 426 (-46.62%)
Mutual labels:  storage, distributed-systems
Baikaldb
BaikalDB, A Distributed HTAP Database.
Stars: ✭ 707 (-11.4%)
Mutual labels:  mysql, raft
DTC
DTC is a high performance Distributed Table Cache system designed by JD.com that offering hotspot data cache for databases in order to reduce pressure of database and improve QPS.
Stars: ✭ 21 (-97.37%)
Mutual labels:  distributed-systems, storage
Kites
🪁 A consistency, partition tolerance completed distributed KV store, implementation of the Raft distributed consensus protocol and Kotlin.
Stars: ✭ 41 (-94.86%)
Mutual labels:  distributed-systems, raft

Go Report Card Build Status

What is kingbus? 中文

Kingbus is a distributed MySQL binlog store based on raft. Kingbus can act as a slave to the real master and as a master to the slaves in the same way as an intermediate MySQL master does. Kingbus has the following key features:

  • MySQL replication protocol compatibility, pull the binlog files from the master through gtid mode, and push the binlog file to slave through gtid mode in the same way.

  • Geo-Replication, kingbus uses Raft to support Geo-Replication. The binlog data written to the cluster is guaranteed to be consistent between multiple nodes, and the order of binlog event is exactly the same as that on the master.

  • High availability, your mysql binlog replication is always on and continuously available with kingbus.

Why need kingbus?

In a traditional MySQL replication setup a single master server is created and a set of slaves of MySQL servers are configured to pull the binlog files from the master, putting a lot of load on the master.

  • Introducing a layer between the master server and the slave servers can reduce the load on the master by only serving kingbus instead of all the slaves.

  • The slaves will only need to be aware of kingbus and not the real master server. Removing the requirement for the slaves to have knowledge of the master also simplifies the process of replacing a failed master within a replication environment.

  • Kingbus allows us to horizontally scale our slaves without fear of overloading the network interface of the master

  • Kingbus can also be used to avoide deep nested replication on remote sites, with kingbus you don't need e deeply nested replication.

  • The size of the binlog storage space on the Master can be reduced, and store the binlog in kingbus.

  • Support MYSQL database heterogeneous log based replication. Other heterogeneous replication components can be connected to the kingbus, such as canal.

For more usage scenarios of binlog server, please refer:

Quick start

Read the Quick Start

Documentation

1.Kingbus management API introduction

2.Start a kingbus cluster with docker-compose

License

Kingbus is under the Apache 2.0 license. See the LICENSES file for details.

Acknowledgments

  • Thanks etcd for providing raft library.

  • Thanks go-mysql for providing mysql replication protocol parser.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].