Blog Arripio

Replicação – Percona – Xtrabackup – keepalived.

Autor: Dauro Lima Sobrinho

Este tutorial tem como objetivo auxiliar a instalação e configuração de uma solução de alta disponibilidade com replicação dos dados no SGBD Percona Server 5.6.26, utilizando Percona Xtrabackup e o keepalived.

Distribuição: CentOS 6.7
Node 1: 10.1.31.70
Node 2: 10.1.31.71

1º Passo: Instalar o repositório Percona.
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

2º Passo: Instalar o SGBD Percona.
yum install Percona-XtraDB-Cluster-56.x86_64 percona-xtrabackup.x86_64 galera.x86_64

3º Passo: Inicializar o serviço do SGBD Percona.

4º Passo: Criar usuário para a replicação.
CREATE USER '[USER_NAME]'@'localhost' IDENTIFIED BY '[PASSWORD]';

GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ‘[USER_NAME]’@’localhost’;

flush privileges;

5º Passo: Configurar o my.cnf dos servidores.
MASTER: 10.1.31.70
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://10.1.31.71
binlog_format=ROW
default_storage_engine=InnoDB
innodb_locks_unsafe_for_binlog=1
innodb_autoinc_lock_mode=2
wsrep_node_address= 10.1.31.70
wsrep_sst_method=xtrabackup-v2
wsrep_cluster_name=[CLUSTER_NAME]
wsrep_sst_auth=”[USER_NAME]:[PASSWORD]” —– Criados no 4º Passo
wsrep_provider_options=”gcache.size=1G;”
wsrep_slave_threads=16
wsrep_causal_reads=ON
wsrep_replicate_myisam=1
wsrep_node_name=2

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
wsrep_url=gcomm://10.1.31.70,gcomm://10.1.31.71

SLAVE: 10.1.31.71
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address=gcomm://10.1.31.70
binlog_format=ROW
default_storage_engine=InnoDB
innodb_locks_unsafe_for_binlog=1
innodb_autoinc_lock_mode=2
wsrep_node_address= 10.1.31.71
wsrep_sst_method=xtrabackup-v2
wsrep_cluster_name=[CLUSTER_NAME]
wsrep_sst_auth=”[USER_NAME]:[PASSWORD]” —– Criados no 4º Passo
wsrep_provider_options=”gcache.size=1G;”
wsrep_slave_threads=16
wsrep_causal_reads=ON
wsrep_replicate_myisam=1
wsrep_node_name=1

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
wsrep_url=gcomm://10.1.31.70,gcomm://10.1.31.71

6º Passo: Subir o serviço do SGBD Percona.
/etc/init.d/mysql start

7º Passo: Verificar se todos os nós estão ativos.
show status like “wsrep_cluster_size%”;
+——————–+——-+
| Variable_name | Value |
+——————–+——-+
| wsrep_cluster_size | 2 |
+——————–+——-+

8º Passo: Testar.

Crie databases em ambos os nodes e veja se ambos compartilham os DBs criados.

Pare o serviço do MySQL de um dos nodes. No node com serviço ativo, crie algumas databases e insira conteúdo, logo em seguida, ative o serviço do node parado e veja se o conteúdo criado será compartilhado (faça o procedimento com ambos os nodes para um teste mais completo).

Faça um reboot em um dos nodes, insira conteúdo no node ativo, logo em seguida, acesse novamente o node parado e veja se o conteúdo foi compartilhado.

Alguns comandos úteis: CREATE DATABASE PERCONA; USE PERCONA; CREATE TABLE tabela (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, data VARCHAR(100)); INSERT INTO tabela(data) VALUES (‘$a’);

9º Passo: Instalar o serviço do keepalived.
yum install keepalived.x86_64

10º Passo: Criar uma interface com VIP.
vi /etc/sysconfig/network-scripts/eth0\:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
IPV6INIT=no
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=10.1.31.72
PREFIX=24
GATEWAY=10.1.31.1

11º Passo: Configurar o serviço keepalived.
vi /etc/keepalived/keepalived.conf
MASTER: 10.1.31.70
global_defs {
notification_email {
[EMAIL]@[DOMAIN]
}
notification_email_from [EMAIL]@[DOMAIN]
smtp_server [RELAY_SERVER]
smtp_connect_timeout 60
router_id [ROUTER_NAME]
}
vrrp_script chk_pxc {
script "/usr/bin/clustercheck clustercheck password 0"
interval 1
}
vrrp_instance PXC {
interface eth0
state MASTER
virtual_router_id 51
priority 100
advert_int 1
garp_master_delay 5

authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.31.72 dev eth0
}
track_script {
chk_pxc
}
notify_master “/bin/echo ‘now master’ > /tmp/keepalived.state”
notify_backup “/bin/echo ‘now backup’ > /tmp/keepalived.state”
notify_fault “/bin/echo ‘now fault’ > /tmp/keepalived.state”
}

SLAVE: 10.1.31.71
global_defs {
notification_email {
[EMAIL]@[DOMAIN]
}
notification_email_from [EMAIL]@[DOMAIN]
smtp_server [RELAY_SERVER]
smtp_connect_timeout 60
router_id [ROUTER_NAME]
}
vrrp_script chk_pxc {
script "/usr/bin/clustercheck clustercheck password 0"
interval 1
}
vrrp_instance PXC {
interface eth0
state SLAVE
virtual_router_id 51
priority 99
advert_int 1
garp_master_delay 5

authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.31.72 dev eth0
}
track_script {
chk_pxc
}
notify_master “/bin/echo ‘now master’ > /tmp/keepalived.state”
notify_backup “/bin/echo ‘now backup’ > /tmp/keepalived.state”
notify_fault “/bin/echo ‘now fault’ > /tmp/keepalived.state”
}

12º Passo: Reiniciar todos os serviços
SLAVE: 10.1.31.71
/etc/init.d/network restart
/etc/init.d/mysql restart
/etc/init.d/keepalived restart

MASTER: 10.1.31.70
/etc/init.d/network restart
/etc/init.d/mysql restart
/etc/init.d/keepalived restart

13º Passo: Verificar status dos servidores
cat /tmp/keepalived.state
ip add

Observação:

Em caso de indisponibilidade dos dois servidores:
Será necessário alterar o parâmetro wsrep_cluster_address do servidor 10.1.31.70 para wsrep_cluster_address=gcomm://.
Em seguida, subir o serviço dos dois servidores (10.1.31.70 e 10.1.31.71).
Por último, voltar as configurações (wsrep_cluster_address=gcomm://10.1.31.71) do servidor 10.1.31.70 e reiniciar o serviço.

Fontes:
http://www.vivaolinux.com.br/dica/Replicacao-de-Banco-de-Dados-MySQL-com-Percona-XtraDB

Using keepalived for HA on top of Percona XtraDB Cluster


https://www.percona.com/doc/percona-server/5.5/installation/yum_repo.html

 

Atualizado: 19/07/2018 16:45

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *