SlideShare uma empresa Scribd logo
REPLICAÇÃO DE DADOS 
Wagner Bianchi 
Certified MySQL 5.0 Developer 
Certified MySQL 5.0 Database Administrator 
Certified MySQL 5.1 Cluster Database Administrator
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!!!)
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;
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;
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;
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!
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
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’;
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 […]! 
!
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!
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!
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
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;! 
!
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)!
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!
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)!
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)!
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;
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!
Yes!!!! We’re done & happy now!!!

Mais conteúdo relacionado

Mais procurados

Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
Leonardo Medeiros Martins
 
Replicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManagerReplicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManager
Vinicius Aquino do Vale
 
Treinamento Data Guard
Treinamento Data GuardTreinamento Data Guard
Treinamento Data Guard
Douglas Paiva de Sousa
 
Fundamentos Replicação MySQL
Fundamentos Replicação MySQLFundamentos Replicação MySQL
Fundamentos Replicação MySQL
Alexandre Almeida
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
Matheus Espanhol
 
Project HA
Project HAProject HA
Project HA
Karpv
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
Rodrigo Cândido da Silva
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
Wagner Bianchi
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik Completo
Portal GSTI
 
Apache
ApacheApache
Apache
Carlos Melo
 
Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQL
Leonardo Cezar
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
Douglas Paiva de Sousa
 
Curso básico de mikrotik
Curso básico de mikrotikCurso básico de mikrotik
Curso básico de mikrotik
Video Aulas Linux e Mikrotik
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Johnes Castro
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
gigadrop
 
Mysql para aplicações Web escaláveis
Mysql para aplicações Web escaláveisMysql para aplicações Web escaláveis
Mysql para aplicações Web escaláveis
Elton Minetto
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?
Rodrigo Almeida
 
Mysql Replication
Mysql ReplicationMysql Replication
Mysql Replication
André Herculano
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
Rodrigo Cândido da Silva
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
David de Assis
 

Mais procurados (20)

Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
Replicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManagerReplicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManager
 
Treinamento Data Guard
Treinamento Data GuardTreinamento Data Guard
Treinamento Data Guard
 
Fundamentos Replicação MySQL
Fundamentos Replicação MySQLFundamentos Replicação MySQL
Fundamentos Replicação MySQL
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
Project HA
Project HAProject HA
Project HA
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik Completo
 
Apache
ApacheApache
Apache
 
Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQL
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Curso básico de mikrotik
Curso básico de mikrotikCurso básico de mikrotik
Curso básico de mikrotik
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
 
Mysql para aplicações Web escaláveis
Mysql para aplicações Web escaláveisMysql para aplicações Web escaláveis
Mysql para aplicações Web escaláveis
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?
 
Mysql Replication
Mysql ReplicationMysql Replication
Mysql Replication
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
 

Semelhante a UNIFAL - MySQL 5.6 - Replicação

UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
Wagner Bianchi
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
Wagner Bianchi
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
Kinn Julião
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
Rafael Ponte
 
GlusterFs
GlusterFsGlusterFs
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
elliando dias
 
MySQL 5.7 - 
Tirando o Máximo Proveito
MySQL 5.7 - 
Tirando o Máximo ProveitoMySQL 5.7 - 
Tirando o Máximo Proveito
MySQL 5.7 - 
Tirando o Máximo Proveito
Gabriela Ferrara
 
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL Brasil
 
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Aécio Pires
 
ZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQL
gsroma
 
Capítulo 16 rsyslog
Capítulo 16   rsyslogCapítulo 16   rsyslog
Capítulo 16 rsyslog
Paulo Kutwak
 
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos cisco
Allan Alencar
 
Cisco ios, via cli – command line interface
Cisco ios, via cli – command line interfaceCisco ios, via cli – command line interface
Cisco ios, via cli – command line interface
Marcos Aurelio
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
Wagner Bianchi
 
Mysql sintax
Mysql sintaxMysql sintax
Mysql sintax
wdojr
 
Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
Elton Minetto
 
Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)
Rafael Ponte
 
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1
WalissonMartinsdeSou
 
Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)
Danilo Filitto
 

Semelhante a UNIFAL - MySQL 5.6 - Replicação (20)

UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
MySQL 5.7 - 
Tirando o Máximo Proveito
MySQL 5.7 - 
Tirando o Máximo ProveitoMySQL 5.7 - 
Tirando o Máximo Proveito
MySQL 5.7 - 
Tirando o Máximo Proveito
 
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI Tecnologia
 
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
 
ZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQL
 
Capítulo 16 rsyslog
Capítulo 16   rsyslogCapítulo 16   rsyslog
Capítulo 16 rsyslog
 
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos cisco
 
Cisco ios, via cli – command line interface
Cisco ios, via cli – command line interfaceCisco ios, via cli – command line interface
Cisco ios, via cli – command line interface
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 
Mysql sintax
Mysql sintaxMysql sintax
Mysql sintax
 
Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)
 
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1Laboratório  -configuração_de_um_endereço_de_gerenciamento_do_switch-1
Laboratório -configuração_de_um_endereço_de_gerenciamento_do_switch-1
 
Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)Servidor de internet (NAT, Squid, Sarg)
Servidor de internet (NAT, Squid, Sarg)
 

Mais de Wagner Bianchi

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
Wagner Bianchi
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
Wagner Bianchi
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Wagner Bianchi
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Wagner Bianchi
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
Wagner Bianchi
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Wagner Bianchi
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
Wagner Bianchi
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
Wagner Bianchi
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
Wagner Bianchi
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
Wagner Bianchi
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
Wagner Bianchi
 

Mais de Wagner Bianchi (16)

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 

Último

Segurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptxSegurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptx
Divina Vitorino
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdfEletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
barbosajucy47
 

Último (7)

Segurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptxSegurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptx
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdfEletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
 

UNIFAL - MySQL 5.6 - Replicação

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Yes!!!! We’re done & happy now!!!