MARIADB, as a branch of MySQL, is already widely used in open source projects, such as hot OpenStack, so the cluster deployment is essential to ensure high availability of the service while increasing the load capacity of the system.
MariaDB Galera Cluster Introduction
The MARIADB cluster is a MARIADB synchronous multi-host cluster. It only supports the XTRADB/INNODB storage engine (although there are support for MyISAM experiments-see WSREP_REPLICATE_MYISAM system variables).
Main functions:
- Synchronous replication
- True multi-master that all nodes can read and write to the database at the same time
- Automatic node member control, failed nodes are automatically cleared
- New node joins data automatic replication
- True parallel replication, row-level
- Users can connect directly to the cluster, using the same feeling on MySQL exactly
Advantage:
- Because it is multi-master, there is no slavelag (delay)
- There is no loss of transaction condition
- Ability to expand both read and write
- Smaller client latency
- Data between nodes is synchronous, and Master/slave mode is asynchronous, and binlog on different slave may be different
Technology:
The replication capabilities of the Galera cluster are based on the galeralibrary implementation, and in order to enable MySQL to communicate with the Galera library, the Wsrep API has been developed specifically for MySQL.
Galera plug-in to ensure that the cluster synchronization of data, maintain data consistency, relying on the replication of authentication, working principle such as:
When the client issues a commit instruction, all changes to the database are collected and the write-set
write-set
contents of the record are sent to the other nodes before the transaction is committed.
write-set
The authentication test is performed on each node, and the test results determine whether the node applies the write-set
change data.
If the authentication test fails, the node discards the Write-set and if the authentication test succeeds, the transaction commits.
1. Installation Environment Preparation
At least 3 servers are required to install the MARIADB cluster (if only two units are required, please refer to the official documentation for special configuration)
Here, I list the configuration of the test machine:
Operating system version: Centos7
node4:10.128.20.16 node5:10.128.20.17 node6:10.128.20.18
With the first act example, node4 for hostname
, 10.128.20.16 for ip
, in three machines to modify the /etc/hosts
file, my file is as follows:
10.128.20.16 node410.128.20.17 node510.128.20.18 node6
To ensure that the nodes communicate with each other, you need to disable the firewall settings (if a firewall is required, refer to the official website to increase firewall information settings)
Execute the command on three nodes, respectively:
systemctl stop firewalld
/etc/sysconfig/selinux
the settings are then selinux
set so that the disabled
initialization environment is complete.
2. Install MariaDB Galera Cluster
[root@node4 ~]# yum install -y mariadb mariadb-galera-server mariadb-galera-common galera rsync
[root@node5 ~]# yum install -y mariadb mariadb-galera-server mariadb-galera-common galera rsync
[root@node6 ~]# yum install -y mariadb mariadb-galera-server mariadb-galera-common galera rsync
3. Configure MariaDB Galera Cluster
Initializes the database service with only one node
[[email protected] mariadb]# systemctl Start mariadb[[email protected] mariadb]# mysql_secure_installationNote:running all PARTS of this SCRIPT are RECOMMENDED for all MariaDB SERVERS in PRODUCTION use! Please READ each STEP carefully! In order to Log intoMariaDB toSecureit, we ' ll need theCurrentPassword for theRoot user. If you ' ve just installed MariaDB, andYou haven ' tSet theRoot password yet, thePassword'll be blank,so-should just press ENTER here. Enter Current Password forRoot (enter forNone): OK, successfully used password, movingOn ... Setting theRoot password ensures thatNobody canLog into theMariadbroot Userwithout theProper authorisation. Set root Password? [y/n] New Password:re-enter New Password:password updated successfully! Reloading privilege tables. ... success! By default, a MariaDB installation have an anonymous user, allowing anyone to Log intoMariaDBwithoutHaving toHas a user account created forthem. This isIntended only fortesting, and toMake theInstallationgo a bit smoother. You should remove thembeforeMoving intoAproduction environment. Remove anonymous users? [y/n] n ... skipping. Normally, Root should only be allowed toConnect from' localhost '. Thisensures thatSomeone cannot guess at theRoot password from theNetwork. Disallow Root login remotely? [y/n] Y ... success! By default, MariaDB comes withA database named ' Test ' thatAnyone canaccess. This isAlso intended only fortesting, andshould be removedbeforeMoving intoA production environment. Remove Test Database andAccess to it? [y/n] n ... skipping. Reloading thePrivilege tables would ensure thatAll changes made so farwill take effect immediately. Reload privilege tables now? [y/n] Y ... success! Cleaning up ... All done! If you ' ve completed all of the aboveSteps, your mariadbinstallation should now is secure. Thanks forUsing mariadb!
Close the database, modify/etc/my.cnf.d/galera.cnf
[[email protected] mariadb]# systemctl stop mariadb[[email protected] ~]# vim /etc/my.cnf.d/galera.cnf
Modify the following content:
[mysqld]......wsrep_provider = /usr/lib64/galera/libgalera_smm.sowsrep_cluster_address = "gcomm://node4,node5,node6"wsrep_node_name = node4wsrep_node_address=10.128.20.16#wsrep_provider_options="socket.ssl_key=/etc/pki/galera/galera.key; socket.ssl_cert=/etc/pki/galera/galera.crt;"
Tip: If you do not use SSL authentication, please wsrep_provider_options
comment out.
Copy this file to Node5, Node6, and change it to wsrep_node_name
wsrep_node_address
the corresponding node hostname
ip
.
4. Start MariaDB galera Cluster Service
[[email protected] ~]# /usr/libexec/mysqld --wsrep-new-cluster --user=root &
Observation log:
[root @node4 ~]# tail-f/var/log/mariadb/mariadb.log 150701 19 : 54 : 17 [Note] Wsrep: Wsrep_load (): Loading provider library ' none ' 150701 19 : 54 : 17 [Note]/usr/libexec/mysqld:ready for connections. Version: ' 5.5.40-mariadb-wsrep ' socket : '/var/lib/mysql/mysql.sock ' port: 3306 MariaDB Server, Wsrep_25. 11 . r4026
Appear ready for connections
to prove that we started successfully and continue to start other nodes:
[[email protected] ~]# systemctl start mariadb[[email protected] ~]# systemctl start mariadb
You can see /var/log/mariadb/mariadb.log
that the nodes are joined to the cluster in the log.
Warning?: --wsrep-new-cluster
This parameter can only be used in the initialization cluster and can only be used on a single node.
5. View cluster status
We can focus on a few key parameters:
wsrep_connected = on
Link is turned on
wsrep_local_index = 1
Index values in the cluster
wsrep_cluster_size =3
Number of nodes in the cluster
wsrep_incoming_addresses = 10.128.20.17:3306,10.128.20.16:3306,10.128.20.18:3306
The access address of the node in the cluster
6. Verifying data synchronization
We are on the node4
new database galera_test
, and then on node5
and on the node6
query, if you can query to galera_test
this library, indicating that the data synchronization success, the cluster is working properly.
[root@node4 ~]# mysql -uroot -proot -e "create database galera_test"
[[email protected] ~]# mysql -uroot -proot -e "show databases"+--------------------+| Database |+--------------------+| information_schema || galera_test || mysql || performance_schema |+--------------------+
[[email protected] ~]# mysql -uroot -proot -e "show databases"+--------------------+| Database |+--------------------+| information_schema || galera_test || mysql || performance_schema |+--------------------+
At this point, our MariaDB Galera Cluster has been successfully deployed.
Reference article:
[1]http://galeracluster.com/documentation-webpages/
[2]https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/
This article is a ONEAPM engineer original article. ONEAPM is the emerging leader in China's basic software industry, helping enterprise users and developers easily implement slow program code and real-time crawling of SQL statements. To read more technical articles, please visit the ONEAPM Official technology blog.
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
MariaDB galera Cluster Deployment (How to quickly deploy MariaDB clusters)