Como configurar a replicação do MySQL com o mínimo de tempo de inatividade

9

Basicamente, temos um grande banco de dados MySQL e estamos procurando fazer a replicação para um escravo (configuração mestre de escravo). Vocês têm algum guia passo-a-passo sobre como fazer isso com o tempo de inatividade do MINIMAL no banco de dados? Fazer o backup do banco de dados e transferir o backup para o servidor escravo (mesmo através de uma rede privada) leva aproximadamente 40 minutos. Muito tempo de inatividade.

    
por Patrick 09.01.2011 / 12:57

3 respostas

12

Eu suponho que você use o InnoDB como um mecanismo de armazenamento. Em caso afirmativo, você precisa ativar bin-logging . Se não estiver agora, você precisa reiniciar o MySQL depois de modificar my.cnf. É o único tempo de inatividade, após o qual você pode fazer o despejo do banco de dados com a posição do log de binário sem bloquear o banco de dados:

mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A

Com base neste backup, restaure os dados no escravo. Depois disso, você pode seguir qualquer tutorial de replicação do MySQL e permitir que o escravo alcance / corra junto com o mestre.

    
por 09.01.2011 / 22:35
3

para iniciar uma replicação, você precisa de uma cópia consistente de seu banco de dados no escravo

suas tabelas myisam ou innodb são suportadas? para descobrir o problema

show table status

e observe a coluna "Mecanismo"

se todas as tabelas forem innodb do que você pode fazer a configuração de tempo de inatividade zero usando mysqldump --single-transaction e importando isso para o escravo

se as tabelas forem myisam, terá que haver tempo de inatividade, pois você deve bloquear as tabelas para gravação enquanto elas estão sendo copiadas. mysqlhotcopy é a ferramenta para te ajudar com isso.

alternativamente, se você estiver usando o LVM (gerenciador de volume lógico), poderá parar o banco de dados, fazer um instantâneo do LVM em alguns segundos e iniciar o banco de dados novamente. Então você pode fazer uma cópia consistente do instantâneo.

    
por 09.01.2011 / 21:56
1

Para configurar o escravo, você precisará tirar um instantâneo de dados e registrar a posição do registro binário. Fazer o backup do banco de dados não deve causar tempo de inatividade, embora isso cause redução de desempenho, mas você já está fazendo o backup do banco de dados, certo? Você pode achar que o backup precisa bloquear algumas tabelas e isso pode causar travamentos em seu aplicativo, realmente precisa ver como ele é implementado para isso.

Você consegue tirar uma foto do disco? Isso reduziria consideravelmente o tempo de inatividade se você puder fazer um hotbackup.

    
por 09.01.2011 / 13:13