Skip to main content

MySQL Group Replication | Group Replication

MySQL Group Replication:
Group Replication:
It is a plugin build on existing Mysql replication infrastructure features such as binary log, row-based logging, and global transaction identifiers. Group replication is not a regular point-to-point connection, as in classical Replication, but rather a different paradigm: Group Communication. It is a classic modular and layered piece of software, and communication module - Group communication API and Corosync up to MySQL Group Replication 0.5.0.



Group replication plugin:
Consists of API- Capture / Apply / Life cycle, Capture, Applier, Recovery, Replication protocol logics, Group communication system API, Group Communication Engine (Paxos variant),
Mencius. It is Paxos-based solution, named eXtended COMmunications, or simply XCOM, which is a key component in the MySQL Group Replication.Key functionalities of XCOM are Order Delivery, Dynamic Membership, and Failure detection

Paxos is probably the most well known consensus protocol and works in two phases.

Set of APIs:

Set of APIs for capture, apply, and lifecycle, which control how the plugin interacts with MySQL Server.
Interfaces:
Interfaces, which make information flow from the server to the plugin such as notifications for events such as the server starting, the server recovering, the server being ready to accept connections, and the server being about to commit a transaction,and  plugin to the server, instructs the server to perform actions such as committing or aborting ongoing transactions, or queuing transactions in the relay log.

  • A Control interface that will allow a member to manage its status within a group with primitives like Join, Leave and callbacks to View Membership information.
  • A Message interface that allows a member to send and receive messages.
  • A Statistics interface to store and extract information about the Group and Messages.
The capture component keeps track of context related to transactions that are executing
The applier component execute remote transactions on the database
The recovery component manages distributed recovery, and get a server that is joining the group up to date by selecting the donor, orchestrating the catch up procedure and reacting to donor failures.
The replication protocol module contains the specific logic of the replication protocol. It handles conflict detection, and receives and propagates transactions to the group.
The Group Communication System (GCS) API, a high level API that abstracts the properties required to build a replicated state machine Paxos-based group communication engine (XCom) handles communications with the members of the replication group
Group Membership service:
Group Membership service is aware of the groups members in any moment in time, allow a member to Join and Leave a group, informing all the interested parties of that event.
Total Order broadcast primitive service - allows for a member to send a message to a Group and ensure that, if one member receives the message, then all members receive it, also guarantees that all messages arrive in the same order in all members that belong to a Group.

  • join()  - Used by new node to enter a group
  • leave() - Used when node decide to leave
Corosync is a cluster engine that has in its base the usage of Group Communication. Its goal is to aid in the development of reliable and highly available application. Taking into account our requirements its a good first choice since: It offers what we need in terms of functionality in its Closed Process. Drawback of Corosync are - no support for windows, not friendly with multi tenant - cloud computing, and security.
Group communication model:

  • It has a C API.
  • It is proven and deployed solution, for instance, in Pacemaker and Apache Qpid.
Ref.:
https://dev.mysql.com/doc/refman/8.0/en/group-replication-plugin-architecture.html
http://mysqlhighavailability.com/group-communication-behind-the-scenes/
https://dev.mysql.com/worklog/task/?id=8793
Explore Pacemaker and Corosync:
https://www.lisenet.com/2016/activepassive-mysql-high-availability-pacemaker-cluster-with-drbd-on-centos-7/
https://www.digitalocean.com/community/tutorials/how-to-create-a-high-availability-setup-with-corosync-pacemaker-and-floating-ips-on-ubuntu-14-04
http://blog.ulf-wendel.de/2013/mini-poc-using-a-group-communication-system-for-mysql-ha/
http://corosync.github.io/corosync/
https://mysqlhighavailability.com/mysql-group-replication-a-small-corosync-guide/
Group Replication v/s Galera:
https://dzone.com/articles/the-quest-for-better-mysql-replication-galera-vs-group-replication





Comments

Popular posts from this blog

MySQL InnoDB cluster troubleshooting | commands

Cluster Validation: select * from performance_schema.replication_group_members; All members should be online. select instance_name, mysql_server_uuid, addresses from  mysql_innodb_cluster_metadata.instances; All instances should return same value for mysql_server_uuid SELECT @@GTID_EXECUTED; All nodes should return same value Frequently use commands: mysql> SET SQL_LOG_BIN = 0;  mysql> stop group_replication; mysql> set global super_read_only=0; mysql> drop database mysql_innodb_cluster_metadata; mysql> RESET MASTER; mysql> RESET SLAVE ALL; JS > var cluster = dba.getCluster() JS > var cluster = dba.getCluster("<Cluster_name>") JS > var cluster = dba.createCluster('name') JS > cluster.removeInstance('root@<IP_Address>:<Port_No>',{force: true}) JS > cluster.addInstance('root@<IP add>,:<port>') JS > cluster.addInstance('root@ <IP add>,:<port> ') JS > dba.getC...

Amazon RDS | Amzon Redshift | Big Data | Boost Performance with Amazon ElastiCache

Amazon RDS with Amazon ElastiCache for Performance: Amazon RDS supports - Oracle, MS SQL server, MySQL, Maria DB and PostgreSQL. It is a managed service offered by the Amazon.  Couple of customers have observed the performance issues during their journey with Amazon RDS with Oracle, MS SQL Server, MySQL, Maria DB and PostgreSQL. Amazon cloud engineers / database consultants / database architect and Amazon supports worked to-gather to boost the Amazon RDS performance by tuning the RDBMS configuration parameters using Amazon RDS parameter group , and have not achieved the SLA for Amazon RDS .  Amazon RDS with Multi AZ and Read Replica: Some of the the AWS professionals have suggested for vertical scaling of the Amazon RDS . It should works and its absolutely correct. In my opinion, it would be a good idea to think about the Amazon ElastiCache service with Amazon RDS for better performance and cost optimization also rather than vertically scaling the Amazon RDS . I would sug...

Needs for Graph Database

Needs for Graph Database: We are living in the era of data, data is treated more precise than gold and platinum. Most of the enterprises are trying to get more insight about the data they have it as an operational / warehouse / analytical.   Ref.: https://dist.neo4j.com/wp-content/uploads/graph-example.png To get more insight into the data, it is required to see the relationship among the data points. The challenge is how to establish the relationship among data points and the answers is Graph database. Relational databases can't help to establish the relationship among data points, due to their rigid schema, and consistent schema. Relational Database issues for data set: Number of Joins:  While fetching data from relational databases, we join many tables, these joins are complex, and consume considerable amount of computing resources, which increase the query response times. Self- joins: For database ware house / business intelligence systems using RDBMS, self-JOIN are ...