Aqui está uma descrição rápida de como configurar uma replicação completa em seu servidor MySQL atual. Ele assume que você deseja replicar todos os bancos de dados e nunca configurou uma replicação anteriormente. Você precisará desligar seu servidor master rapidamente para completar os passos delineados abaixo.
O procedimento é gravado para a configuração de um único slave, mas você pode usá-lo para configurar vários slaves.
Este método é o modo mais direto de se configurar um slave, mas ele não é o único. Por exemplo, se você já tem uma cópia instantânea dos dados do master, e o master já tem o seu ID do servidor definido e o log binário habilitado, você pode configurar um slaver sem desligar o master ou mesmo bloquear suas atualizações. Para maiores detalhes, veja Secção 4.11.9, “FAQ da Replicação”.
        Se você deseja administrar uma configuração de replicação
        MySQL, sugerimos que leia todo este capítulo e experimente
        todos os comandos mencionados em
        Secção 4.11.7, “Instruções SQL para Controle do Servidor Master” e
        Secção 4.11.8, “Instruções SQL para Controle do Servidor Slave”. Você também deve se
        familiarizar com as opções de inicialização da replicação
        em my.cnf na
        Secção 4.11.6, “Opções de Inicialização da Replicação”.
      
        Note que este procedimento e algumas das instruções SQL da
        replicação em seções posteriores se referrem ao privilégio
        SUPER. Antes do MySQL 4.0.2, use o
        privilégio PROCESS.
      
Certifique-se que você possui uma versão recente do MySQL instalado no servidor master e no(s) slave(s), e que estas versões sào compatíveis de acordo com a tabela mostrada em Secção 4.11.2, “Visão Geral da Implementação da Replicação”.
Por favor não relate os erros até que você tenha verificado que o problema está presente na última distribuição.
            Configure uma conta no servidor master com o com a qual o
            slave possa se conectar. Deve ser dada a esta conta o
            privilégio REPLICATION SLAVE. (Se a
            versão do MySQL for anterior a 4.0.2, de à conta o
            privilégio FILE.) Se a conta é somente
            para a replicação (o que é recomendável), então você
            não precisará fornecer nenhum privilégio adicional para
            ele.
          
            O nome de máquina no nome da conta deve ser aquele usado
            por cada um dos servidores slaves para conectar ao master.
            Por exemplo, para criar um usuário chamado
            repl que pode acessar seu master de
            qualquer máquina, você deve utilizar este comando:
          
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY '<password>';
Para versões do MySQL anteriores a 4.0.2, use este comando:
mysql> GRANT FILE ON *.* TO repl@'%' IDENTIFIED BY '<password>';
            Se você planeja usar as instruções LOAD TABLE
            FROM MASTER ou LOAD DATA FROM
            MASTER a partir da máquina slave, você
            precisará de permissão para esta conta adicional.
          
                Conceda a conta os privilégios globais
                SUPER e RELOAD.
              
                Conceda o privilégio SELECT em todas
                as tabelas que você deseja carregar. Qualquer das
                tabelas master nas quais a conta não possa fazer um
                SELECT serão ignoradas por
                LOAD DATA FROM MASTER.
              
            Se você estiver usando tabelas MyISAM, descarregue todas as
            tabelas e bloqueie as consultas de escrita executando o
            comando FLUSH TABLES WITH READ LOCK
          
mysql> FLUSH TABLES WITH READ LOCK;
e faça uma cópia de todos os dados existentes em seu servidor master.
            A maneira mais fácil de fazer isto é simplesmente usar um
            programa (tar no Unix,
            PowerArchiver, WinRAR,
            WinZip ou qualquer outro software similar
            no Windows) para produzir um arquivo de banco de dados no
            diretório de dados do seu master. Por exemplo, para usar
            tar que cria um arquivo que inclui todos
            os bancos de dados, altere a localização no diretório de
            dados do servidor master, e então execute este comando:
          
shell> tar -cvf /tmp/mysql-snapshot.tar .
            Se você quiser que o arquivo inclua apenas um banco de
            dados chamado estebd, utilize este
            comando:
          
shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db
            Então copie o arquivo para o diretório
            /tmp na máquina servidora slave.
            Naquela máquina, altere a localização em um diretório de
            dados do slave e desempacote o arquivo usando este comando:
          
shell> tar -xvf /tmp/mysql-snapshot.tar
            Você pode não desejar replicar o banco de dados
            mysql. Se não, você pode excluí-lo do
            arquivo. Você também não precisa incluir qualqer arquivo
            de log nos arquivos master.info ou
            relay-log.info.
          
            Enquanto o lock de leitura colocado por FLUSH
            TABLES WITH READ LOCK estiver em funcionando, leia
            o valor atual do nome do log binário e offset no master:
          
mysql > SHOW MASTER STATUS; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | mysql-bin.003 | 73 | test,bar | foo,manual,mysql | +---------------+----------+--------------+------------------+ 1 row in set (0.06 sec)
            A coluna File exibe o nome do log,
            enquanto Position exibe o offset. No
            exemplo acima, o valor do log binário é
            mysql-bin.003 e o offset é 73. Grave os
            valores. Você precisará usá-los mais tarde quando estiver
            configurando o slave.
          
Uma vez realizada a cópia e gravado o nome do log e offset, você pode reabilitar a atividade de escrita no master:
mysql> UNLOCK TABLES;
Se você estiver usando tabelas InnoDB, você deve usar a ferramente InnoDB Hot Backup que está disponível para aqueles que compraram as licenças comerciais do MySQL, suporte ou a própria ferramenta de backup. Ele faz uma cópia consistente sem fazer nenhum lock no servidor master, e grava o nome do log e o offset correspondente em um snapshot para ser usado postriormente no slave. Mais informações sobre esta ferramenta esta disponível em http://www.innodb.com/order.php.
            Sem a ferramenta Hot Backup, o modo mais rápido para tirar
            uma cópia das tabelas InnoDB é desligar o servidor master
            e copiar os arquivos e logs de dados do InnoDB e os arquivos
            de definição de tabela (.frm). Para
            gravar o nome e offset do arquivo de log atual você deve
            fazer o seguinte antes de desligar o servidor:
          
mysql>FLUSH TABLES WITH READ LOCK;mysql>SHOW MASTER STATUS;
            E então grave o nome e offset do log da saída de
            SHOW MASTER STATUS como mostrado
            anteriormente. Uma vez gravado o nome e o offset do log,
            desligue o servidor sem destravar as tabelas para se
            certificar que ele finalizará com a cópia correspondente
            ao arquivo de log e offset:
          
shell> mysqladmin -uroot shutdown
            Uma alternativa para tabelas MyISAM e InnoDB é fazer um
            dump SQL do master em vez de uma cópia binária como acima;
            para isso você pode usar mysqldump
            --master-data em seu master e mais tarde executar
            o dump SQL em seu slave. No entanto, isto é mais lento que
            fazer a cópia binária.
          
            Se o master foi executado anteriormente sem o
            --log-bin habilitado, os valores do nome do
            log e da posição mostrados por SHOW MASTER
            STATUS ou mysqldump estarão
            vazios. Neste caso, grave a string vazia ('') para o nome do
            log e 4 para o offset.
          
            Assegure-se que a seção [mysqld] do
            arquivo my.cnf no master inclui a
            opção log-bin. Esta seção também
            deve conter a opção server-id=unique
            number, onde master_id deve ser
            um valor inteiro entre 1 e 2^32 - 1. Por exemplo:
          
[mysqld] log-bin server-id=1
Se estas opções não estão presentes, adicione-as e reinicie o servidor.
            Pare o servidor que será usado como slave e adicione o
            seguinte ao arquivo my.cnf:
          
[mysqld] server-id=slave_id
            O valor slave_id, como o valor
            master_id, deve ser um valor inteiro de 1
            to 2^32 - 1. Adicionalmente, é muito importante que o ID do
            slave seja diferente do ID do master. Por exemplo:
          
[mysqld] server-id=2
            Se você estiver usando vários servidores, cada um deve ter
            um valor server-id que seja diferente
            daquele do master e de cada um dos slaves. Pense nos valores
            de server-id como algo similar ao
            endereço IP: Estes IDs identificam de forma única cada
            instância de servidor na comunidade dos parceiros de
            replicação.
          
            Se você não quiser especificar um
            server-id, ele será configurado com 1 se
            você não tiver definido master-host,
            senão ele será definido com 2. Note que no caso de
            omissão do server-id, um master irá
            recusar conexões de todos os slaves e um slave irá recusar
            se conectar a um master. Assim, omitir
            server-id só é bom para backups com um
            log binário.
          
Se você fizer um backup biário dos dados do servidor master, copie-o para o diretório de dados do servidor slave antes de iniciá-lo. Certifique-se que os privilégios nos arquivos e diretórios estão corretos. O usuário com o qual o MySQL executa precisa estar apto a lê-los e alterá-los, assim como no master.
            Se você fizer um backup usando
            mysqldump, inicie o slave primeiro (veja
            o próximo passo).
          
            Inicie o servidor slave. Se ele tiver sido replicado
            previamente, inicie o servidor slave com a opção
            --skip-slave-start. Você também pode
            querer iniciar o servidor slave com a opção
            --log-warnings. Deste modo você irá obter
            mais mensagens sobre problemas (por exemplo, problemas de
            rede, ou conexão).
          
            Se você fez um backup dos dados do servidor master usando
            mysqldump, carregue o arquivo de dump no
            servidor slave:
          
shell> mysql -u root -p < dump_file.sql
            Execute os seguintes comandos no slave, substutitua os
            valores dentro de <> com o os
            valores atuais relevantes ao ser sistema:
          
mysql>CHANGE MASTER TO->MASTER_HOST='<master host name>',->MASTER_USER='<replication user name>',->MASTER_PASSWORD='<replication password>',->MASTER_LOG_FILE='<recorded log file name>',->MASTER_LOG_POS=<recorded log offset>;
A tabela a seguir lista o tamanho máximo da string para as variáveis:
| MASTER_HOST | 60 | 
| MASTER_USER | 16 | 
| MASTER_PASSWORD | 32 | 
| MASTER_LOG_FILE | 255 | 
Inicie a thread slave:
mysql> START SLAVE;
Depois de realizado este procedimento, o slave deve se conectar ao master e pegar todas as atualizações que ocorreram desde que o backup foi restaurado.
        Se você esqueceu de configurar o server-id
        no master, os slaves não poderão se conectar a eles:
      
        Se você esqueceu de configurar o server-id
        no slave, você irá obter o seguinte erro no arquivo de log:
      
Warning: one should set server_id to a non-0 value if master_host is set. The server will not act as a slave.
Você também encontrará mensagens de erro no log de erro do slave se ele não puder replicar por qualquer motivo.
        Uma vez que um slave está replicando, você encontrará um
        arquivo chamado master.info e um chamado
        relay-log.info no diretório de dados. Estes
        dois arquivos são usados pelo slave para manter o registro de
        quanto foi processado do log binário do master.
        Não remova ou edite o arquivo,
        a menos que você realmente saiba o que está fazendo e entenda
        as implicações. Mesmo neste caso, é mais aconselhável usar o
        comando CHANGE MASTER TO.
      
        NOTA: o conteúdo de
        master.info sobrepõe algumas opções
        especificadas na lina de comando ou no
        my.cnf veja
        Secção 4.11.6, “Opções de Inicialização da Replicação” para mais detalhes.
      
Agora que você tem uma cópia instantânea, você pode usá-la para configurar outros slaves. Para isso siga a porção referente ao slave descrita acima. Você não precisa ter outra cópia do master.
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.

