Três threads estão envolvidas na replicação: uma no master e
        duas no slave. Quando START SLAVE é
        executado, a thread de E/S é criada no slave. Ela se conecta ao
        master e pede pelo envio de seus logs binários. Então uma
        thread (chamada Binlog dump no SHOW
        PROCESSLIST no master) é criada no master para enviar
        estes logs binários. A thread de E/S lê o que o
        Binlog dump envia e simplesmente a copia para
        algum arquivo local no diretorio de dados do slave chamado relay
        logs. A última thread, a thread de SQL, é criada no slave; ela
        lê o relay logs e executa as consultas contidas nele.
      
Note que o master tem uma thread para cada servidor slave atualmente conectado.
        Com SHOW PROCESSLIST você pode saber o que
        está acontecendo no master e no slave em relação a
        replicação.
      
        O exemplo seguinte ilustra como as três threads aparecem em
        SHOW PROCESSLIST. O formato da saída é
        aquele usado por SHOW PROCESSLIST a partir do
        MySQL versão 4.0.15, quando o conteúdo da coluna
        State foi alterado para ser mais
        significativo comparado com versões alterações.
      
No servidor master a saída se parece com isto:
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 2
   User: root
   Host: localhost:32931
     db: NULL
Command: Binlog Dump
   Time: 94
  State: Has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
No servidor slave, a saída se parece com isto:
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 10
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
     Id: 11
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL
        Aqui a thread 2 está no master. A thread 10 é a thread de E/S
        no slave. A thread 11 é a thread de SQL no slave; note que o
        valor na coluna Time pode dizer quando o
        slave é comparado com o master (see
        Secção 4.11.9, “FAQ da Replicação”).
      
        A lista a seguir mostra os estados mais comuns que você verá
        na coluna State para a thread Binlog
        Dump do master. Se você não ver estas threads em um
        servidor master, a replicação não está sendo executada.
      
            Sending binlog event to slave
          
Logs binários consistem de eventos, onde um evento é normamente uma consulta mais alguma informação. A thread lê um evento do log binário e ele é enviado para o slave.
            Finished reading one binlog; switching to next
            binlog
          
A thread finalizou a leitura de um log binário e está abrindo o seguinte a ser enviado para o slave.
            Has sent all binlog to slave; waiting for binlog to
            be updated
          
A thread leu todos os log binários e está inativa. Ela está esperando por conexões no master para gravar mais dados no log binário, se ele quiser.
            Waiting to finalize termination
          
Estado muito breve que ocorre quando a thread para.
        Aqui estão os estados mais comuns que você verá na coluna
        State para a thread de E/S de um servidor
        slave. A partir do MySQL 4.1.1, este estado também aparece na
        coluna Slave_IO_State da saída de
        SHOW SLAVE STATUS. Isso significa que você
        pode ter uma boa visão do que está acontecendo apenas com
        SHOW STATUS SLAVE.
      
            Connecting to master.
          
Conectando ao master.
            Checking master version.
          
Estado muito breve que ocorre um pouco depois da conexão ser estabelecida.
            Registering slave on master.
          
Estado muito breve que ocorre um pouco depois da conexão ser estabelecida.
            Requesting binlog dump.
          
Estado muito breve que ocorre um pouco depois da conexão com o master ser estabelecida. A thread envia ao master um pedido para envio do conteúdo de seu log binário, iniciando a partir do log binário requisitado e sua posição.
            Waiting to reconnect after a failed binlog dump
            request.
          
            Se o pedido de dump do log binário falhar (devido a
            desconexão), a thread fica neste estado enquanto está
            inativa. A thread fica inativa por
            master-connect-retry segundos antes de
            uma nova tentativa.
          
            Reconnecting after a failed binlog dump
            request.
          
Então a thread tenta se conectar com o master.
            Waiting for master to send event.
          
            A thread conectou e está esperando que os eventos do log
            binário cheguem. Isto pode demorar se o master estiver
            inativo. Se a espera for maior que
            slave_read_timeout segundos, o tempo se
            esgotará. Neste ponto, a thread irá considerar a conexão
            quebrada e fará uma nova tentativa de conexão.
          
            Queueing master event to the relay log.
          
A thread leu o evento e o está copiando para o ser relay log para que a thread SQL possa processá-lo
            Waiting to reconnect after a failed master event
            read.
          
            Um erro ocorreu durante a leitura (devido a desconexão);
            inativo por master-connect-retry segundos
            antes de tentar se reconectar.
          
            Reconnecting after a failed master event
            read.
          
            Então a thread tenta se reconectar. Quando a conexão é
            estabelecida novamente, o estado se tornará
            Waiting for master to send event.
          
            Waiting for the slave SQL thread to free enough
            relay log space
          
            Você está usando um valor
            relay_log_space_limit diferente de zero e
            os relay logs tem crescido tanto que o seu tamanho combinado
            excedem este valor. A thread E/S então espera até que a
            thread SQL libere espaço suficiente deletando o conteúdo
            dos relay logs e assim poder deletar alguns arquivos de
            relay logs.
          
            Waiting for slave mutex on exit.
          
Estado muito breve que ocorre quando a thread esta parando.
        Aqui estão os estado mais comuns que você verá na coluna
        State para a thread de SQL de um servidor
        slave:
      
            Reading event from the relay log
          
A thread leu um evento do relay log para poder processá-lo.
            Has read all relay log; waiting for the slave I/O
            thread to update it
          
A thread processou todos os eventos nos arquivos de relay logs e está esperando a thread de E/S gravar novos eventos no relay log.
            Waiting for slave mutex on exit.
          
Estado muito breve que ocorre quando a thread é parada.
        A coluna State para a thread de E/S também
        podem mostrar um string de consulta. Isto indica que a thread
        leu um evento do relay log, extraiu a conulta dele e está a
        está executando.
      
Antes do MySQL 4.0.2, as threads de E/S e SQL eram combinadas em uma só e nenhum relay log era usado. A vantagem do uso de duas threads é que elas separam a leitura e a execução da consulta em duas tarefas independentes, e assim o trabalho de leitura da consulta não se torna lento se a execução da consulta for lento. Por exemplo, se o servidor slave não estiver em execução por um instante, a sua thread de E/S pode rapidamente buscar todos o conteúdo dos logs binários do master quando o slave iniciar, mesmo se a thread de SQL demorar e levar horas para pegar os logs. Se o slave parar antes da thread SQL executar todas as consultas buscadas, a thread de E/S terá finalmente buscado tudo e assim um cópia segura das consultas estará armazenada localmente nos relay logs do slave para execução na próxima execução do slave. Isto permite que os log binários sejam apagados no master, já que não há mais necessidade de esperar que o slave busque o conteúdo deles.
        Por padrão, relay logs são nomeados usando nome de arquivos da
        forma host_name-relay-bin.nnn, onde
        host_name é o nome da máquina servidora
        slave e nnn é uma sequência numérica.
        Arquivos de relay logs sucvessivos são criados usando uma
        sequência de números sucessiva, começando com
        001. O slave mantém registro dos relay logs
        em uso atualmente em um arquivo de índice. O nome de arquivo
        padrão dos relay logs é
        host_name-relay-bin.index. Por padrão
        estes arquivos são criados no diretório de dados do slave. O
        nome de arquivo padrão pode ser sobrescrito com as opções
        --relay-log e
        --relay-log-index do servidor.
      
        Relay logs têm o mesmo formato dos logs binários, assim ele
        podem ser lidos com mysqlbinlog. Um relay log
        é automaticamente deletado pela thread de SQL tão logo não
        seja mais necessária (ex.: assim que tiver sido executado todos
        os seus eventos). Não existem comandos para deletar relay logs
        já que a thread SQL cuida de fazê-lo. No entanto, a partir do
        MySQL 4.0.14, FLUSH LOGS rotaciona os relay
        logs), o que irá influenciar quando a thread de SQL
        deletá-los.
      
Um novo relay log é criado sob as seguintes condições:
A primeira vez que a thread de E/S inicia depois que o servidor slave inicia (No MySQL 5.0, um novo relay log será criado a cada vez que a thread de E/S inicia, não apenas pela primeira vez.)
            Uma instrução FLUSH LOGS é executada
            (a partir da versão 4.0.14).
          
O tamanho do relay log atual se torna muito grande. O significado de ``muito grande'' é determinado da seguinte forma:
                max_relay_log_size, se
                max_relay_log_size > 0
              
                max_binlog_size, se
                max_relay_log_size = 0 ou o MySQL é
                mais velho que 4.0.14
              
        Um servidor de replicação slave cria dois arquivos pequenos no
        diretório de dados. Estes arquivos são chamados
        master.info e
        relay-log.info por padrão. Eles possuem
        informação como aquela mostrada na saída da instrução
        SHOW SLAVE STATUS (see
        Secção 4.11.8, “Instruções SQL para Controle do Servidor Slave” para uma descrição
        deste comando). Como imagem de discos, eles sobrevivem ao
        desligamento do slave. A próxima vez que o slave é reiniciado,
        ele pode ler estes arquivos para saber o quanto ele processou do
        log binário do master e do seus próprios relay logs.
      
        O arquivo master.info é atualizado pela
        thread de E/S.
      
        A correspondência entre as linhas do arquivo e as colunas
        mostradas por SHOW SLAVE STATUS aparece a
        seguir:
      
| Linha | Descrição | 
| 1 | Master_Log_File | 
| 2 | Read_Master_Log_Pos | 
| 3 | Master_Host | 
| 4 | Master_User | 
| 5 | Senha (não mostrado por SHOW SLAVE STATUS) | 
| 6 | Master_Port | 
| 7 | Connect_Retry | 
        O arquivo relay-log.info é atualizada pela
        thread de SQL. A correspondência entre as linhas do arquivo e
        as colunas mostradas por SHOW SLAVE STATUS
        apaerece a seguir:
      
| Linha | Descrição | 
| 1 | Relay_Log_File | 
| 2 | Relay_Log_Pos | 
| 3 | Relay_Master_Log_File | 
| 4 | Exec_Master_Log_Pos | 
        Quando você faz backup dos dados de seu slave, você deve fazer
        backup destes 2 pequenos arquivos, junto com seus relay logs
        pois eles são necessários para continuar a replicação depois
        que você restaurar os dados do slave. Se você perder os seus
        relay logs mas ainda tiver o arquivo
        relay-log.info, você pode verifclos para
        determinar por quanto tempo a thread de SQL executou no log
        binário do master. Então você pode usar CHANGE
        MASTER TO com as opções
        MASTER_RELAY_LOG e
        MASTER_RELAY_POS para dizer ao slave para
        reler os log binários a partir deste ponto. Isto exige que o
        log binário ainda exista no servidor master. é claro.
      
        Se seu slave está sujeito a replicação de instruções
        LOAD DATA INFILE, você também deve fazer
        backup dos arquivos SQL_L0AD-* que podem
        existir no diretório que o slave utiliza para este propósito.
        O slave precisará destes arquivos para continuar a replicação
        de qualquer instrução LOAD DATA INFILE
        interrompido.
      
        A localização do diretório é especificada usando a opção
        --slave-load-tmpdir. Seu valor padrão, se
        não especificado, é o valor da variável
        tmpdir.
      
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

