Eu tenho um servidor de banco de dados MySQL de produção Ubuntu 10.04, onde o tamanho total do banco de dados é de 260 GB, enquanto o tamanho da partição raiz é de 300 GB onde o banco de dados é armazenado, basicamente significa que cerca de 96% de / está cheio e não há espaço para armazenar dump / backup etc. Nenhum outro disco está conectado ao servidor a partir de agora.
Minha tarefa é migrar esse banco de dados para outro servidor em outro datacenter. A questão é como fazer isso de forma eficiente com o mínimo de inatividade?
Estou pensando na linha de:
- Solicite anexar uma unidade extra ao servidor e faça um despejo nessa unidade. [EDIT: não é possível agora.]
- Transfira o dump para o novo servidor, restaure-o e torne o novo servidor escravo do existente para manter os dados sincronizados
- Quando a migração for necessária, interrompa a replicação, atualize a configuração do slave para aceitar solicitações de leitura / gravação e torne o servidor antigo somente leitura, para que não receba nenhuma solicitação de gravação e peça aos desenvolvedores de aplicativos que atualizem a configuração com o novo endereço IP para db.
Quais são as suas sugestões para melhorar essa ou qualquer outra abordagem alternativa melhor para esta tarefa?
Um despejo e restauração de um banco de dados desse tamanho levaria horas. Dependendo das versões do mysql, desde que o número da versão aumente e não haja saltos no número da revisão principal. Você deve poder pegar os arquivos de banco de dados brutos em / var / lib / mysql e colocá-los no novo servidor, definir as permissões e iniciar o servidor com a opção --skip-grant-tables. Adicione as concessões necessárias para os usuários que refletem o novo endereço IP e reinicie normalmente.
Eu abordaria o tamanho do seu banco de dados, pois ele é grande demais para ser eficiente.
fonte
Você pode seguir estas etapas para migrar esse enorme banco de dados do InnoDB.
Esta tarefa levará várias horas. Para minimizar o efeito do script hotcopy no servidor ativo, defina baixa prioridade usando renice
$ renice -n 5 -p <SCRIPT-PID>
Você pode experimentar lentidão durante esse processo, mas definitivamente sem tempo de inatividade. O Percona XtraBackup criará um hotcopy que é mais rápido e consome menos recursos em comparação com o mysqldump. Isso é ideal para um enorme banco de dados InnoDB.
Dependendo dos padrões e estatísticas de uso, você pode executar esse processo quando houver tráfego mínimo no servidor. Talvez fazer isso no fim de semana seja uma boa ideia? O exposto acima é apenas um esboço do processo. Pode ser necessário consultar a documentação do Percona XtraBackup e SSHFS.
fonte
Você pode simplesmente despejar o banco de dados diretamente no servidor remoto ...
... O SQL deve compactar bem, portanto, você deve fazer isso muito mais rapidamente com uma dessas opções, embora também dependa da quantidade de RAM que você possui na caixa ...
fonte