Duplicando um banco de dados em um ambiente mestre escravo

2

Eu tenho um grande número de bancos de dados, 350Gb + cada, com mais de 100 tabelas em cada. Eles são principalmente tabelas MyISAM, com algumas tabelas InnoDB colocadas em boa medida.

Plataforma: - Linux, MySQL 5.1, tabelas MyISAM + InnoDB (com a opção file_per_table ativada)

Eu preciso duplicar esses bancos de dados no mestre e ter a duplicação refletida corretamente no servidor slave, e estou com alguns problemas.

Fazer um mysqldump e, em seguida, uma restauração é bem-sucedida, mas extremamente lenta e leva muito tempo para o escravo recuperar o atraso.

Fazer uma cópia em disco dos arquivos de dados não parece funcionar, pois o information_schema não reflete com precisão o banco de dados copiado - em alguns casos, as tabelas nem parecem existir no banco de dados de destino, mesmo que o myisamchk seja capaz para verificar e reparar os índices com sucesso.

Existe uma maneira de executar a cópia em disco dos arquivos de dados e fazer com que o information_schema reflita com precisão o banco de dados copiado, ou será que vou ter que agrupá-lo e perseverar com a opção de despejo / restauração? E se eu puder duplicar os bancos de dados dessa maneira, posso executar os mesmos passos no escravo sem quebrar o status de replicação?

Obrigado antecipadamente, Dave

    
por Dave Rix 22.09.2010 / 22:49

2 respostas

1

O método mais seguro é derrubar o banco de dados mestre e copiar os arquivos binários do banco de dados do mestre para o escravo, trazê-los para cima e iniciar a replicação. Com 350Gb de tabelas, posso entender que isso pode ser uma solução problemática. Você pode ganhar algum tempo fazendo a cópia o mais rápido possível, o que geralmente significa copiar para um conjunto totalmente diferente de discos no servidor mestre. Então você pode trazer o mestre de volta e você pode levar o seu tempo movendo a cópia através de um link de rede mais lento.

Copiar arquivos MyISAM fora do MySQL irá funcionar, ou pelo menos eu sei que aconteceu nos dias do MySQL v3 e v4. (Certifique-se de ter o escravo desligado quando você executa myisamchk .) No entanto, isso não funciona para arquivos InnoDB.

Existe uma ferramenta chamada "MySqL Hot Backup", ou algo assim é capaz de fazer tudo isso de uma maneira mais inteligente. O problema é que você pode ter que pagar por isso, pelo menos pelo suporte do InnoDB.

    
por 23.09.2010 / 04:02
1

Você tem o LVM ativado? Se sim, você poderia usá-lo para criar um instantâneo da partição sem desligar o mysql e então você poderia montar um instantâneo e copiar arquivos dele. Aqui está o artigo descrevendo o método.

Se você pudesse encerrar o banco de dados, você poderia copiar arquivos de dados brutos . Apenas lembre-se de corrigir, registre suas informações mestras.

    
por 23.09.2010 / 13:59

Tags