Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
REPLICAÇÃO DE DADOS 
Wagner Bianchi 
Certified MySQL 5.0 Developer 
Certified MySQL 5.0 Database Administrator 
Certified ...
Para iniciarmos... 
! Nesta parte vamos falar de replicação de dados MySQL; 
! Não vamos falar de backup, replicação é dif...
Como funciona a replicação? 
! Características principais do serviço: 
– Servidores MASTER e servidores SLAVE; 
– Um MASTE...
Ainda mais características... 
! No MASTER, o SLAVE possui um usuário que é utilizado 
para conexão e leitura dos logs bin...
Setup: replicação clássica 
! Tarefas básicas antes do setup: 
– Qual dos servidores será o MASTER e qual será o SLAVE? 
–...
Setup: replicação clássica 
MASTER: 192.168.0.100 <= SLAVE: 192.168.0.101! 
! Criando um usuário para replicação no MASTER...
Setup: replicação clássica 
! Fazendo o restore do backup no MySQL SLAVE: 
# mysql -u root -p < mybackup.dmp 
! Habilitand...
Setup: replicação clássica 
! Obtendo no MASTER as coordenadas de replicação: 
mysql> show master statusG 
! Configuramos ...
Setup: replicação clássica 
! Verifique o status da replicação com SHOW SLAVE STATUS: 
# mysql –u root –p –e “show slave s...
Testando a replicação clássica 
! No servidor MASTER, criamos um banco de dados com o 
nome `meudb`: 
mysql> create databa...
Replicação GTID 
MASTER: 192.168.0.100 <= SLAVE: 192.168.0.101! 
! Novo modelo de replicação disponível no MySQL 5.6 ++; 
...
Replicação GTID 
! O log binário é gravado de forma diferente; 
Replicação GTID: 
Não necessita indicar posição do log; 
F...
Replicação GTID 
! Variáveis de ambiente mandatórias em todos os servidores 
de bancos de dados MySQL envolvidos na replic...
Replicação GTID 
! Consultando o valor atual das variáveis requeridas para o 
funcionamento da replicação GTID: 
mysql> se...
Setup: replicação GTID 
! Edite o arquivo de configuração do MySQL (my.cnf) nos 
servidores MASTER e SLAVE e inclua as var...
Setup: replicação GTID 
! Certificamos se as variáveis configuradas foram realmente 
reconfiguradas a partir do arquivo de...
Setup: replicação GTID 
! Certificamos se as variáveis configuradas foram realmente 
reconfiguradas a partir do arquivo de...
Setup: replicação GTID 
! Depois de confirmarmos as configurações, no SLAVE, 
precisamos parar e dar um reset na replicaçã...
Setup: replicação GTID 
! Damos um start na replicação GTID: 
mysql> start slave user=‘rpl’ password=‘123456’;! 
! Verific...
Yes!!!! We’re done & happy now!!!
Upcoming SlideShare
Loading in …5
×

UNIFAL - MySQL 5.6 - Replicação

910 views

Published on

Material utilizado em Workshop para a turma de Ciência da Computação da Universidade Federal de Alfenas.

Published in: Technology
  • Be the first to comment

UNIFAL - MySQL 5.6 - Replicação

  1. 1. REPLICAÇÃO DE DADOS Wagner Bianchi Certified MySQL 5.0 Developer Certified MySQL 5.0 Database Administrator Certified MySQL 5.1 Cluster Database Administrator
  2. 2. Para iniciarmos... ! Nesta parte vamos falar de replicação de dados MySQL; ! Não vamos falar de backup, replicação é diferente; ! Atualmente, há três modelo de replicação no MySQL: – Replicação Clássica, assíncrona; – Replicação Clássica, semisíncrona; – Replicação GTID, assíncrona; ! MySQL e replicação síncrona somente com MySQL Cluster; ! MySQL e replicação com base em certificados, Galera Cluster; ! O nosso foco aqui: – Replicação Clássica e GTID (novidade do MySQL 5.6!!!)
  3. 3. Como funciona a replicação? ! Características principais do serviço: – Servidores MASTER e servidores SLAVE; – Um MASTER pode ter vários SLAVE; – Um SLAVE pode ter somente um MASTER;
  4. 4. Ainda mais características... ! No MASTER, o SLAVE possui um usuário que é utilizado para conexão e leitura dos logs binários; ! O SLAVE possui duas threads utilizadas para: – IO_THREAD: conexão direta com o MASTER para ler os logs binários e trazer tudo que foi alterado no MASTER e depositar em logs denominados relay log; – SQL_THREAD: lê o relay log e executa os comandos que alteraram os dados dos bancos de dados no MASTER; ! Com essa sequência de execuções, o servidor ou, os servidores SLAVE conseguem se manter em sincronia com o MASTER;
  5. 5. Setup: replicação clássica ! Tarefas básicas antes do setup: – Qual dos servidores será o MASTER e qual será o SLAVE? – Configurar os Ips das máquinas como fixo/estático; – Criar um usuário para replicação no MASTER; – Fazer um backup no MASTER; – Transferir o backup para o SLAVE; – Fazer o restore do backup no SLAVE; – Configurar a variável server_id com valores únicos; – Obter as coordenadas do log binário do MASTER; – Configurar a replicação no SLAVE;
  6. 6. Setup: replicação clássica MASTER: 192.168.0.100 <= SLAVE: 192.168.0.101! ! Criando um usuário para replicação no MASTER: mysql> grant replication slave on *.* to rpl@'%' identified by '123456';! ! Fazendo o backup completo do MASTER: # mysql -u root -p -e "flush tables with read lock;”! # mysqldump -u root -p --all-databases > mybackup.dmp ! # mysql -u root -p -e "unlock tables;”! ! Transferindo o arquivo de backup para o SLAVE: # scp mybackup.dmp root@192.168.0.101:/root!
  7. 7. Setup: replicação clássica ! Fazendo o restore do backup no MySQL SLAVE: # mysql -u root -p < mybackup.dmp ! Habilitando o log binário e configurando o server_id: #: master! # vim /etc/my.cnf! [mysqld]! server_id = 1! log_bin=mysql01-bin! ! #: slave! [mysqld]! server_id = 2! ! Reinicie o MySQL MASTER e SLAVE: [ root@mysql01 ~]# service mysqld restart! [ root@mysql02 ~]# service mysqld restart
  8. 8. Setup: replicação clássica ! Obtendo no MASTER as coordenadas de replicação: mysql> show master statusG ! Configuramos o SLAVE como READ_ONLY: mysql> set global read_only=1;! ! Configurando a replicação no servidor SLAVE com o comando CHANGE MASTER TO: mysql> change master to master_host=‘192.168.0.100’, ! master_log_pos=120,master_log_file=‘mysql01-bin.000001’; ! Iniciando a replicação, no SLAVE: mysql> start slave user=‘rpl’ password=‘123456’;
  9. 9. Setup: replicação clássica ! Verifique o status da replicação com SHOW SLAVE STATUS: # mysql –u root –p –e “show slave statusG”! Slave_IO_State: Waiting for master to send event! Slave_IO_Running: Yes! Slave_SQL_Running: Yes! Seconds_Behind_Master: 0! Master_SSL_Verify_Server_Cert: No! Last_IO_Errno: 0! Last_IO_Error:! Last_SQL_Errno: 0! Last_SQL_Error:! Master_Server_Id: 1! Master_UUID: f8a2570c-3237-11e4-8fa9-0800274fb806! Master_Info_File: /var/lib/mysql/master.info! SQL_Delay: 0! SQL_Remaining_Delay: NULL! Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it! Master_Retry_Count: 86400 […]! !
  10. 10. Testando a replicação clássica ! No servidor MASTER, criamos um banco de dados com o nome `meudb`: mysql> create database meudb;! ! No servidor SLAVE verificamos se os dados foram replicados: mysql> show databases;! ! Se o banco de dados criado no MASTER é exibido na lista de bancos de dados do comando SHOW DATABASES, a replicação foi configurada com sucesso!
  11. 11. Replicação GTID MASTER: 192.168.0.100 <= SLAVE: 192.168.0.101! ! Novo modelo de replicação disponível no MySQL 5.6 ++; ! GTID significa Global Transaction Identifier; ! Cada servidor em uma topologia GTID tem um UUID; ! Cada transação executada receba um ID; @@server_uuid! 3E11FA47-71CA-11E1-9E33-C80AA9429562:23! trx_id!
  12. 12. Replicação GTID ! O log binário é gravado de forma diferente; Replicação GTID: Não necessita indicar posição do log; Fácil recuperação em caso de falha; Fácil visualização em caso de lagging; Fácil configuração, AUTO_POSTION
  13. 13. Replicação GTID ! Variáveis de ambiente mandatórias em todos os servidores de bancos de dados MySQL envolvidos na replicação: [mysqld]! gtid_mode=on # habilita o tipo de replicação! log_bin=name-bin # habilita o log binário! log_slave_updates # sem replicação em loop! enforce_gtid_consistency # força consistência (safe mode)! !– enforce_gtid_consistency executará somente consultas que possam ser executadas em modo seguro e que possam ser envolvidas em meio à transações. Instruções problemáticas: ! • CREATE TABLE ... SELECT;! • CREATE TENPORARY TABLE em transações;! !
  14. 14. Replicação GTID ! Consultando o valor atual das variáveis requeridas para o funcionamento da replicação GTID: mysql> select @@server_id,! -> @@gtid_mode as gtid,! -> @@log_bin as binlog,! -> @@log_slave_updates as logslaveupdates,! -> @@enforce_gtid_consistency safe_trxs;! +-------------+------+--------+-----------------+-----------+! | @@server_id | gtid | binlog | logslaveupdates | safe_trxs |! +-------------+------+--------+-----------------+-----------+! | 1 | OFF | 0 | 0 | 0 |! +-------------+------+--------+-----------------+-----------+! 1 row in set (0.00 sec)!
  15. 15. Setup: replicação GTID ! Edite o arquivo de configuração do MySQL (my.cnf) nos servidores MASTER e SLAVE e inclua as variáveis mandatórias abaixo da seção [mysqld]: [mysqld]! server_id=1 # configure 1 master, 2 slave! gtid_mode=on # habilita o tipo de replicação! log_bin=name-bin # habilita o log binário! log_slave_updates # sem replicação em loop! enforce_gtid_consistency=true # força consistência (safe mode)! ! Fazemos o restart após a edição do arquivo de configuração: # service mysqld restart!
  16. 16. Setup: replicação GTID ! Certificamos se as variáveis configuradas foram realmente reconfiguradas a partir do arquivo de configuração: #: servidor master! mysql> select @@server_id, ! @@gtid_mode as gtid, ! @@log_bin as binlog, ! @@log_slave_updates as logslaveupdates, ! @@enforce_gtid_consistency safe_trxs;! +-------------+------+--------+-----------------+-----------+! | @@server_id | gtid | binlog | logslaveupdates | safe_trxs |! +-------------+------+--------+-----------------+-----------+! | 1 | ON | 1 | 1 | 1 |! +-------------+------+--------+-----------------+-----------+! 1 row in set (0.00 sec)!
  17. 17. Setup: replicação GTID ! Certificamos se as variáveis configuradas foram realmente reconfiguradas a partir do arquivo de configuração: #: servidor slave! mysql> select @@server_id, ! @@gtid_mode as gtid, ! @@log_bin as binlog, ! @@log_slave_updates as logslaveupdates, ! @@enforce_gtid_consistency safe_trxs;! +-------------+------+--------+-----------------+-----------+! | @@server_id | gtid | binlog | logslaveupdates | safe_trxs |! +-------------+------+--------+-----------------+-----------+! | 2 | ON | 1 | 1 | 1 |! +-------------+------+--------+-----------------+-----------+! 1 row in set (0.00 sec)!
  18. 18. Setup: replicação GTID ! Depois de confirmarmos as configurações, no SLAVE, precisamos parar e dar um reset na replicação clássica: mysql> stop slave; -- para as duas threads de replicação! Query OK, 0 rows affected (0.05 sec)! ! mysql> reset slave; -- reinicia as configurações de replicação! Query OK, 0 rows affected (0.38 sec)! ! Como já temos um usuário para replicação no MASTER, basta enviarmos o comando CHANGE MASTER TO: mysql> change master to master_host=‘192.168.0.100’, ! master_auto_position=1;
  19. 19. Setup: replicação GTID ! Damos um start na replicação GTID: mysql> start slave user=‘rpl’ password=‘123456’;! ! Verificamos o status da replicação: mysql> show slave statusG! Slave_IO_State: Waiting for master to send event! Master_Host: 192.168.0.101! Master_User: rpl! Master_Port: 3306! Connect_Retry: 60! Master_Log_File: mysql02-bin.000004! Read_Master_Log_Pos: 407! Relay_Log_File: mysqld-relay-bin.000002! Relay_Log_Pos: 621! Relay_Master_Log_File: mysql02-bin.000004! Slave_IO_Running: Yes! Slave_SQL_Running: Yes! Retrieved_Gtid_Set: b80666fd-32da-11e4-93ce-0800274fb806:1-2! Executed_Gtid_Set: b80666fd-32da-11e4-93ce-0800274fb806:1-2! Auto_Position: 1!
  20. 20. Yes!!!! We’re done & happy now!!!

×