Replicação é um método de duplicar sua informação para aumentar a disponibilidade, capacidade e performance, existem vários tipos de réplicas a (One Way) Master/Slave, (Two Way) Master/Master, Circular (Master -> Master -> Master), para capacidade e performance também podemos abordar clusters de MySql, porém eu não tenho ambiente o suficiente para isso :(.
NOTA: Se você pretende replicar uma base, crie uma nova, replique a vazia e mude o caminho da aplicação se sua base for muito grande existe um passo no qual é necessário um DUMP do banco e isso pode realmente demorar horas.
Como funciona no ambiente real.
E mão na massa!!!
Configuração do Master
Primeiramente precisamos definir 2 (dois) parâmetros essenciais o log-bin e o server-id.Eles deverão ser adicionados na tag [mysqld] do arquivo my.cnf
[mysqld] log-bin=mysql-bin server-id=1
Nota
Se você omitir o
server-id (ou setar explicitamente para o valor 0), o Master ira recusar as conexões de todos os slaves.Configuração do Slave
No slave a configuração inicia um pouco mais simples necessitando apenas de 1 (um) parâmetro o server-idEles deverá ser adicionados na tag [mysqld] do arquivo my.cnf
[mysqld] server-id=2
Nota
Se você omitir o
server-id (ou setar explicitamente para o valor 0), o slave irá se recusar a conectar ao master.Configuração da Conexão Slave no Master
Para criar um usuário ele não precisa ter todos os acessos de um DB Admin, basta ter o acesso de REPLICATION SLAVE e ele poderá conectar no master.
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
Restart o servidor, não faça Reload que não funciona.
Obtendo o Binary Log do Master
O binary log é utilizado pelo slave para replicar as informações, para verificarmos qual o binary utilizado pelo sistema basta utilizar o seguinte comando.mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 73 | test | manual,mysql | +------------------+----------+--------------+------------------+
Agora vem a parte delicada da coisa se você usa InnoDB, se você utiliza Myisam é mais simples basta olhar na documentação da bibliografia.
Existem vários métodos para fazer isso eu particularmente gosto de utilizar o mysqldump devido a praticidade e não precisar parar o server pois há outros serviços rodando e eu não vou replicar todos de uma vez
mysql -u root -p
flush tables with read lock;
mysqldump basedados -u root -p > /tmp/basedados.sql;gzip /tmp/basedados.sql
unlock tables
Dependendo do tamanho da sua base de dados pode demorar de segundos a horas.
Carregando o Slave
Carregue a base de dados no slave e ligue o serviço utilizando os seguintes comandosmysql -u root -p < basededados.sql
mysql> START SLAVE;
Carregando o Master no Slave
Essa configuração faz com que o Slave se lembre do master e esta tudo ok, é possível fazer essa configuração no my.cnf também.
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_position;
Para checar o status do Slave basta utilizar o comando abaixo
show slave status;


Nenhum comentário:
Postar um comentário