MariaDB Galera Cluster Replication

Extending the topic around database auto-clustering, we’d like to cover MariaDB Galera Cluster, high availability synchronous replication solution, that provides:

  • True multi-master topology
  • Automatic new node provisioning
  • No data loss when nodes crash
  • Data replicas remain consistent
  • Automatic membership control
  • No complex and time-consuming failovers
  • Parallel transaction execution on all cluster nodes
  • No slave lag
  • No lost transactions
  • Reads/writes scalability
  • Smaller client latencies
  • Support of multi-cloud and multi-region deployments

According to official documentation, Galera implements so-called certification-based replication. The basic idea is that the transaction to be replicated - the write set - not only contains the database rows to replicate, it also includes information about all the locks that were held by the database (ie. InnoDB) during the transaction. Each node then certifies the replicated write set against other write sets in the applier queue, and if there are no conflicting locks, we know that the write set can be applied. At this point, the transaction is considered committed, after which each node continues to apply it to the InnoDB tablespace.

This approach is also called virtually synchronous replication since it is logically synchronous, but actual writing (and committing) to the InnoDB tablespace happens independently (and thus, strictly speaking, asynchronously) on each node.

In Jelastic, Galera Cluster can be automatically activated while creating the environment. The default topology consists of 2 ProxySQL load balancers and 3 MariaDB instances.single primary mgr

Galera Cluster Requirements

In Galera, databases shall comply with some requirements. The key ones user should follow creating tables are:

  • InnoDB Storage Engine. Data must be stored in the InnoDB transactional storage engine.
  • Primary Keys. Every table that is to be replicated must have an explicit primary key, either a single or a multi-column index.

The full list of the well-known limitations can be found in the official documentation.

MariaDB Galera Cluster Installation

Navigate to Jelastic dashboard, click Create Environment and select MariaDB server within topology wizard. Then activate Auto-Clustering and choose Galera schemeYou can increase the default number of databases by pressing “+” in the Horizontal Scaling block.mariadb galera replication

If required you may exclude ProxySQL layer from the cluster topology before installation with the respective switch. Keep in mind that you won’t be able to do that later and vice versa if you switch it off before installation you will not be able to add the proxy layer afterward.

galera replication proxysql

In a few minutes, the environment will be created with the chosen topology and pre-configured interconnections.

mysql group replication package

You can perform the state-of-health monitoring of the cluster nodes via the Orchestrator admin panel that can be accessed with the credentials from the email related to ProxySQL Load Balancer deployment. The cluster members are shown at the panel as separated clusters with one instance inside.single-primary mysql clustering

Application Connection to MariaDB Galera Cluster

Let’s establish a connection to our MariaDB Galera Cluster from Java web-application, using  ProxySQL load balancer as an entrypointFollow the linked guide to find out about the connection to other types of applications.

The creation of each master node within MariaDB cluster is accompanied by the email with phpMyAdmin credentials. Accessing the database via phpMyAdmin panel is useful for debugging or performing some manual operations on the databases.

1. Log in to phpMyAdmin using Admin Panel URLUsername and Password (received in the email). Choose the existing database test (or create whatever you want) at the left pane. After that in the right pane you will see there are no tables in the database test.multi primary mgr

2. Get back to Jelastic dashboard. We use a separate environment with a Tomcat 9 application server for this example. Now, we have to create Database config file for our test application. To do this, click on the Config icon next to your compute node, then navigate to /opt/tomcat/temp directory and create mydb.cfg file using platform built-in <a style="margin: 0px; padding: 0px; text-rendering: optimizelegibility; box-sizing: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; ve

Was this answer helpful? 0 Users Found This Useful (0 Votes)