Cluster MariaDB/MySQL CentOS 7

GALERA não funciona com ENGINE MyISAM, por padrão usa InnoDB.

Listar engine de todas tabelas de todas dabases

SELECT TABLE_SCHEMA,TABLE_NAME,ENGINE FROM information_schema.TABLES;

Listar engine de todas tabelas de uma unica database

SELECT TABLE_SCHEMA,TABLE_NAME,ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='minhaDatabase';

Listar todas tabelas com engine MyISAM de todas databases

SELECT TABLE_SCHEMA,TABLE_NAME,ENGINE FROM information_schema.TABLES WHERE ENGINE='MyISAM';

Para alterar a engine de usa table use:

ALTER TABLE nomeTabela ENGINE=InnoDB;

1 – Crie o arquivo /etc/yum.repos.d/MariaDB.repo de acordo com o link oficial:

# MariaDB 10.1 CentOS repository list - created 2016-07-28 10:09 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

2 – Instale o MariaDB e o pacote para o cluster “galera”

yum install MariaDB-server MariaDB-client galera

CONFIGURAÇÃO NODE 01

3 – Configure o MariaDB no node01 192.168.0.1, alterando o arquivo /etc/my.cnf.d/server.cnf conforme abaixo:

vi /etc/my.cnf.d/server.cnf

[mysqld]
max_connections = 500
skip-name-resolve = 1

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address='gcomm://192.168.0.1,192.168.0.2'
wsrep_cluster_name='galera'
wsrep_node_address='192.168.0.1'
wsrep_node_name='mariadb-node01'
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

# Optional setting
innodb_flush_log_at_trx_commit=0

4 – Use o comando abaixo para iniciar o node01 como node primario somente da primeira vez. Se precisar iniciar o mysql no futuro use: /etc/init.d/mysql start veja se as portas 3306 e 4567 estao ouvindo

galera_new_cluster
netstat -nlp | grep mysqld

*Para ver o debug da inicialização do cluster

tail -f /var/log/messages

CONFIGURAÇÃO NODE 02

5 – Configure o MariaDB no node02 192.168.0.2, alterando o arquivo /etc/my.cnf.d/server.cnf conforme abaixo:

vi /etc/my.cnf.d/server.cnf

[mysqld]
max_connections = 500

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address='gcomm://192.168.0.1,192.168.0.2'
wsrep_cluster_name='galera'
wsrep_node_address='192.168.0.2'
wsrep_node_name='mariadb-node02'
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

# Optional setting
innodb_flush_log_at_trx_commit=0

6 – Reinicie o MySQL, veja se a porta 4567 está ouvindo, depois que o node02 sincronizar com node01 a porta 3306 estará ouvindo também

/etc/init.d/mysql restart 
netstat -nlp | grep mysqld

*Ao reiniciar o mysql no node02 os dados serão sincronizados com node01 utilizando serviço rodando na porta 4567(rsync). A sincronização em tempo real pode ser vista no arquivo /var/log/messages

tail -f /var/log/messages

**Para ver erros de inicialização do mysql:

systemctl status mariadb.service -l

***Caso o node-01 não seja o último a sair do cluster será preciso forçar sua inicializaço alterando o parametro safe_to_bootstrap para 1

vi /var/lib/mysql/grastate.dat 

safe_to_bootstrap: 1

Depois de alterar o arquivo acima inicie o node como primário, o node secundário irá fazer a re-sincronização com o primário

galera_new_cluster

Checar o status do cluster

SHOW STATUS WHERE Variable_name REGEXP 'wsrep_connected|wsrep_ready|wsrep_local_state_comment|wsrep_cluster_size|wsrep_last_committed';

SHOW STATUS LIKE 'wsrep%';

Ver limite de conexões simultâneas permitidas pelo MySQL

SHOW VARIABLES LIKE 'max_connections';

Oficial Doc:
http://galeracluster.com/documentation-webpages

Link sobre inicialização de cluster primário e secundário
http://galeracluster.com/documentation-webpages/startingcluster.html

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s