MariaDB Galera Cluster on Ubuntu 22.04
Required Deb Packages
apt install mariadb-server
root@db1:/etc/mysql/mariadb.conf.d$ dpkg -l mariadb\* | grep ^ii
ii mariadb-client-10.6 1:10.6.11-0ubuntu0.22.04.1 arm64 MariaDB database client binaries
ii mariadb-client-core-10.6 1:10.6.11-0ubuntu0.22.04.1 arm64 MariaDB database core client binaries
ii mariadb-common 1:10.6.11-0ubuntu0.22.04.1 all MariaDB common configuration files
ii mariadb-server 1:10.6.11-0ubuntu0.22.04.1 all MariaDB database server (metapackage depending on the latest version)
ii mariadb-server-10.6 1:10.6.11-0ubuntu0.22.04.1 arm64 MariaDB database server binaries
ii mariadb-server-core-10.6 1:10.6.11-0ubuntu0.22.04.1 arm64 MariaDB database core server filesPrerequisites
| hostname | IP |
|---|---|
| db1 | 172.31.10.175 |
| db2 | 172.31.10.159 |
Add static /etc/hosts entries are present for db1 and db2 on both the servers. Do not depend on DNS as it adds unnecessary dependencies.
MariaDB Galera Config Fragment for db1
# Filename: /etc/mysql/mariadb.conf.d/zz-galera.cnf
# Local galera cluster config
#
[galera]
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = "Galera-Cluster"
# Ensure /etc/host entires are present for db1, db2
wsrep_cluster_address = "gcomm://db1,db2"
wsrep_sst_method = rsync
binlog_format = row
default_storage_engine = InnoDB
innodb_autoinc_lock_mode = 2
# Allow server to accept connections on all interfaces.
bind-address = 0.0.0.0
# Galera Node Configuration
wsrep_node_address="172.31.10.175"
wsrep_node_name="db1"MariaDB Galera Config Fragment for db2
# Filename: /etc/mysql/mariadb.conf.d/zz-galera.cnf
# Local galera cluster config
#
[galera]
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = "Galera-Cluster"
# Ensure /etc/host entires are present for db1, db2
wsrep_cluster_address = "gcomm://db1,db2"
wsrep_sst_method = rsync
binlog_format = row
default_storage_engine = InnoDB
innodb_autoinc_lock_mode = 2
# Allow server to accept connections on all interfaces.
bind-address = 0.0.0.0
# Galera Node Configuration
wsrep_node_address="172.31.10.159"
wsrep_node_name="db2"Starting the Cluster
- Stop all mariadb instances on db1 and db2
systemctl stop mariadb.service. - On db1, run
sudo galera_new_clusterand checkmysql -e "SHOW STATUS LIKE 'wsrep_cluster_size'". - On db2 start MariaDB normally
systemctl start mariadb.service. - After ensuring db1 and db2 are functioning normally, we can now start mariadb normally on db1.
killall mariadbd; systemctl start mariadb. - To check if galera is running normally, run the below command to confirm the cluster size.
mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |
+--------------------+-------+