• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Fundamentos Replicação MySQL
 

Fundamentos Replicação MySQL

on

  • 2,668 views

Replicação MySQL Fundamentos, Funcionamento, Monitoração e Aplicação na Prática

Replicação MySQL Fundamentos, Funcionamento, Monitoração e Aplicação na Prática

Statistics

Views

Total Views
2,668
Views on SlideShare
2,668
Embed Views
0

Actions

Likes
1
Downloads
87
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Alexandre muito bom a alguns anos atrás fiz uma replicação e como estava começando documentar não era algo da vez, então passou batido, tive que fazer novamente este documento veio bem a calhar.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Fundamentos Replicação MySQL Fundamentos Replicação MySQL Presentation Transcript

    • Replicação MySQL Fundamentos, Funcionamento, Monitoração e Aplicação na Prática HTI Consultoria e Tecnologia Alexandre M de Almeida www.hti.com.br [email_address]
    • O que é replicação?
      • Replicação => Duplicação
      • Não é uma exclusividade de BD
      • Criar e manter uma “ réplica ”
        • de uma base inteira
        • de bases ou tabelas específicas
    • Replicar porquê?
      • Aumentar/melhorar:
        • Disponibilidade
        • capacidade
        • peformance
    • Componentes (principais)
      • Master
      • Slave
      • Binary Log
      • Relay Log
      • IO Thread
      • SQL Thread
    • Master
      • Operações de escrita ou escrita/leitura
      • Um master pode ter vários slaves
    • Slave
      • Exclusivamente para leitura
      • Um slave pode ter somente um master
      • Hardware depende da aplicação do slave
      • É o slave que determina o master
    • Binary Log 1/2
      • Registro de toda alteração no banco
      • Somente “UPDATES” => DDL/DML
      • Registro ordenado => Offset
      • Back UP incremental
      • Recuperação RTO/RPO
      • Aumento de I/O disco
      • Sensível redução de performance
      • Lado do Master*
    • Binary Log 2/2
      • # at 263
      • #111026 17:28:54 server id 100 end_log_pos 366 Query thread_id=7 exec_time=0 error_code=0
      • SET TIMESTAMP=1319635734/*!*/;
      • create database vamos_replicar
      • /*!*/;
      • # at 366
      • #111026 17:29:36 server id 100 end_log_pos 526 Query thread_id=7 exec_time=0 error_code=0
      • use vamos_replicar/*!*/;
      • SET TIMESTAMP=1319635776/*!*/;
      • create table belezinha (id int not null auto_increment primary key, texto varchar(100))
      • /*!*/;
      • # at 526
      • #111026 17:29:54 server id 100 end_log_pos 604 Query thread_id=7 exec_time=0 error_code=0
      • SET TIMESTAMP=1319635794/*!*/;
      • BEGIN
      • /*!*/;
      • # at 604
      • #111026 17:29:54 server id 100 end_log_pos 632 Intvar
      • SET INSERT_ID=1/*!*/;
      • # at 632
      • #111026 17:29:54 server id 100 end_log_pos 760 Query thread_id=7 exec_time=0 error_code=0
      • SET TIMESTAMP=1319635794/*!*/;
      • insert into belezinha values (null,'primeiro registro')
      • /*!*/;
      • # at 760
      • #111026 17:29:54 server id 100 end_log_pos 787 Xid = 515
      • COMMIT/*!*/;
    • Relay Log
      • Cópia do Binary Log
      • Lado do Slave
    • I/O Thread
      • Lado do Slave
      • Responsável por:
        • “ Download” do Binary Log
        • Gravação do Relay Log
      • Permissão “Replication Slave”
      • Gerenciamento de Posição
    • SQL Thread
      • Lado do Slave
      • “ Lê o Relay Log ” e “ aplica ” na base
      • Gerenciamento de posição
    • Topologia 1/2
    • Topologia 2/2
      • One way
        • Master  n Slave(s)
      • Two way (master/master)
        • Master  Master
      • Circular
        • Master a  Master b  Master a
    • Exemplo de Mundo Real
    • Montando uma Replicação 1/5 (servidor Master)
      • Ligar Binary Log & Id do servidor
      • Editando o arquivo de configuração (my.cnf)
        • [mysqld]
        • log-bin
        • server-id = 100
      • Baixar & Subir o servidor (mysqld)
      • Criar usuário para o(s) slave(s)
        • mysql> GRANT REPLICATION SLAVE
        • ON *.* TO chupacabras@’10.1.1.%’
        • IDENTIFIED BY ‘senha123’;
    • Montando uma Replicação 2/5 (servidor Master)
    • Montando uma Replicação 3/5 (servidor slave)
      • Ajuste o id do servidor, editando o my.cnf
        • [mysqld]  faça coisa certa mysqld e não mysql
        • server-id=200
      • Baixar & Subir servidor (mysql)
      • Restaurar a backup no slave
        • shell> mysql -uuser –p < minhabkp.sql
    • Montando uma Replicação 4/5 (servidor slave)
      • Pegue a posição e arquivo da replicação
        • shell> head –n25 minhabkp.sql
        • --
        • -- Position to start replication or point-in-time recovery from
        • --
        • CHANGE MASTER TO MASTER_LOG_FILE='mysqld-bin.000001', MASTER_LOG_POS=263;
      • Diga ao slave quem dá as cartas
        • shell> CHANGE MASTER TO
        • MASTER_HOST = '10.1.1.11',
        • MASTER_PORT = 3306,
        • MASTER_USER = 'chupacabras',
        • MASTER_PASSWORD = 'senha123',
        • MASTER_LOG_FILE = 'mysqld-bin.000001',
        • MASTER_LOG_POS = 263,
        • MASTER_CONNECT_RETRY=10;
    • Montando uma Replicação 5/5 (servidor slave)
      • E deixe a mágica começar
        • mysql> START SLAVE;
      • Verifique se está tudo funcionando
        • mysql> SHOW SLAVE STATUSG
            • *************************** 1. row ***************************
            • Slave_IO_State: Waiting for master to send event
            • Slave_IO_Running: Yes
            • Slave_SQL_Running: Yes
            • Seconds_Behind_Master: 0
    • Monitorando Replicação 1/4
      • MySQL Monitoring Dashboard (MES)
      • MONyog
      • OpManager
      • MaatKit
      • Modo Escorpião
    • Monitorando Replicação 2/4
    • Monitorando Replicação 3/4
    • Monitorando Replicação 4/4
      • # ------------------------------ MASTER-A
      • #master_a_3306=`/usr/local/mysql/bin/mysql -uhti -p'hti_monitor_123' -h192.168.1.1 -P3306 riel_producao -e &quot;select variable_value from information_schema.global_status where variable_name = 'slave_running';&quot; --batch --skip-column-names`
      • # ------------------------------ SLAVE-A
      • slave_a_3306=`/usr/local/mysql/bin/mysql -uhti -p'hti_monitor_123' -h192.168.1.3 -P3306 -e &quot;select variable_value from information_schema.global_status where variable_name = 'slave_running';&quot; --batch --skip-column-names`
      • # ------------------------------ SLAVE-B
      • slave_b_3306=`/usr/local/mysql/bin/mysql -uhti -p'hti_monitor_123' -h192.168.1.10 -P3306 -e &quot;select variable_value from information_schema.global_status where variable_name = 'slave_running';&quot; --batch --skip-column-names`
      • # ------------------------------ VERIFICACOES
      • servers=&quot;Servidores com falha na replicacao: &quot;
      • [ &quot;$slave_a_3306&quot; != &quot;ON&quot; ] && servers=$servers&quot;[slave_a:3306] ”
      • [ &quot;$slave_b_3306&quot; != &quot;ON&quot; ] && servers=$servers&quot;[slave_b:3306] ”
      • [ ${#servers} != 36 ] && echo $servers | mail -s ’[MONITORAMENTO: FALHA REPLICACAO]’ socorro@hti.com.br
    • Já imaginou como usar?
      • Back up on line
      • Back up on line  off-line
      • Escalabilidade
      • Alta disponibilidade
      • Distribuição Geográfica
      • Usuários malas e seus relatórios
      • Manutenção, etc
    • Dicas Importantes
      • Natureza Assíncrona
      • Serialização
      • Hardware envolvido
      • Monitoramento
      • READ_ONLY
    • Ufa!
      • Perguntas & Respostas
      • (Atenção! Tomates não são permitidos)
      • Obrigado!