MySQL Group Replication’s documentation!¶
This document is based on a compilation of the blog posts about Group Replication. The original texts from the blogs, were edited and extended a bit here and there, to keep information up to date and consistent across the document. Moreover, some additional sections were added as well.
This document was written by the MySQL Group Replication engineering team and may change frequently, as new blog posts come out or in case some parts of it need to be fixed.
MySQL Group Replication is a MySQL Server plugin that provides distributed state machine replication with strong coordination between servers. Servers coordinate themselves automatically, when they are part of the same replication group.
Any server in the group can process updates. Conflicts are detected and handled automatically. The group can operate in a single primary mode with automatic primary election - only one server accepts updates at a time. Alternatively, for more advanced users, the group can be deployed in multi-primary mode - all servers can accept updates, even if such are issued concurrently.
There is a built-in membership service that keeps the view of the group consistent and available for all servers at any given point in time. Servers can leave and join the group and the view will be updated accordingly. However, sometimes servers can leave abruptly. In that case a failure detection mechanism shall detect that and notify the group that the view has changed. This is all automatic.
Transactions commit after members agree to do so. If there is a network partition, resulting in a split where members are unable to reach agreement, then the system will not progress until this issue is resolved. Thence there is also a built-in, automatic, split-brain protection mechanism!
All of this is powered by group communication protocols. These provide a failure detection mechanism, a Group Membership service, and safe and totally ordered message delivery. All these properties are key to build a system ensuring that data is consistently replicated across a group of servers. At the very core of this technology lies an implementation of the Paxos algorithm. It acts as the group communication systems engine.
This document contains technical information about MySQL Group Replication plugin. It provides the background, the user facing commands and details about the internals of this new replication plugin. It was written by engineers for, both, engineers and the end user. Enjoy!