Neste post será abordado como configurar um cluster MariaDB com o Galera cluster .
MariaDB Galera Cluster é um cluster multi-master síncrono para MariaDB e só suporta as engines XtraDB / InnoDB.
O link abaixo apresenta todos os benefícios desta solução :
https://mariadb.com/kb/en/mariadb/what-is-mariadb-galera-cluster/
Caso haja interesse em configurar o MariaDB de forma simples , existe o post abaixo explicando sobre :
http://fajlinux.com.br/db/rhce-instalando-o-mariadb-no-rhel-7-centos-7/
1) Ambiente :
10.0.0.10 – mariadb-01 – RHEL7
10.0.0.11 – mariadb-02 – RHEL7
10.0.0.12 – mariadb-03 – RHEL7
OBS : O SELinux e o FirewallD foram desabilitados para este lab .
2) Instalação do MariaDB e Galera nos servidores
Este procedimento será rodado em cada servidor.
Habilitando o repositorio criando o arquivo /etc/yum.repos.d/mariadb.repo
# MariaDB 10.0 CentOS repository list # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 enabled=0
Rode o comando abaixo para instalar os pacotes necessários
yum --enablerepo=mariadb -y install MariaDB-Galera-server MariaDB-client rsync socat
Inicie o serviço e rode o MySQL Secure Installation
systemctl start mysql.service mysql_secure_installation
Crie o usuário sst_user (State Snapshot Transfer) dentro dos bancos,este será o usuário que faz a autenticação nos bancos e a replicação entre eles .
Detalhes sobre o SST :
http://galeracluster.com/documentation-webpages/statetransfer.html#sst
DELETE FROM mysql.user WHERE user=''; GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'dbpass'; GRANT USAGE ON *.* to sst_user@'%' IDENTIFIED BY 'dbpass'; GRANT ALL PRIVILEGES on *.* to sst_user@'%'; FLUSH PRIVILEGES;
3) Configuração do Galera Cluster
Pare o database
systemctl stop mysql.service
Edite o arquivo /etc/my.cnf.d/server.cnf dentro da Galera replicando a configuação alterando as tags wsrep_node_address=’SERVER IP’ colocando os respectivos ips dos servidores.
[galera] wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://10.0.0.10,10.0.0.11,10.0.0.12" binlog_format=row default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 wsrep_cluster_name="MariaDB_Cluster" wsrep_node_address="SERVER IP" wsrep_sst_method=rsync
Inicie o Cluster no mariadb-01 com o comando abaixo
/etc/rc.d/init.d/mysql bootstrap
Inicie os o mariadb-02 e mariadb-03 com o comando abaixo
systemctl start mysql.service
Para ver o status de todas as configurações do cluster no mariadb-02 e mariadb-03 executamos o comando abaixo
mysql -u root -pmariadb -e"show status like 'wsrep%'"
Status da Sincronização
Reconhecimento de todos os servidores do cluster
Status da conexão
4) Testes finais
Seguiremos os passos :
No mariadb-03 será criado o banco test
mysql -u root -p -e 'CREATE DATABASE test ;' mysql -u root -p -e 'CREATE TABLE test.cluster ( id INT NOT NULL AUTO_INCREMENT, value VARCHAR(20), server VARCHAR(20), PRIMARY KEY(id));'
No mariadb-01 será executado um INSERT
mysql -u root -p -e 'INSERT INTO test.cluster (value, server) VALUES ("value1", "mariadb-01");'
No mariadb-02 será executado o INSERT
mysql -u root -pmariadb -e 'INSERT INTO test.cluster (value, server) VALUES ("value2", "mariadb-02");'
No mariadb-03 será executado um SELECT
mysql -u root -p -e 'SELECT * FROM test.cluster;'
Resultado do SELECT