Atualmente, temos um banco de dados MySQL robusto que executa alguns sites baseados em Django com alto tráfego, bem como alguns sites de comércio eletrônico de tamanho decente. Como resultado, temos uma grande quantidade de grandes bancos de dados usando as tabelas InnoDB e MyISAM.
Infelizmente, recentemente atingimos um limite devido à quantidade de tráfego, por isso configurei outro servidor mestre para ajudar a aliviar as leituras / backups.
Agora, no momento, eu simplesmente uso o mysqldump com alguns argumentos e está provado que está bem .. até agora. Obviamente, o mysqldump é um método lento e rápido, no entanto, acredito que superamos seu uso. Agora, preciso de uma boa alternativa e tenho estudado a utilização do utilitário Maatkits mk-parallel-dump ou de uma solução de instantâneo LVM.
Versão curta e sucinta:
- Eu tenho um banco de dados MySQL bastante grande, preciso fazer backup
- O método atual usando o mysqldump é ineficiente e lento (causando problemas)
- Examinando algo como snapshots mk-parallel-dump ou LVM
Quaisquer recomendações ou idéias serão apreciadas - desde que eu tenha que refazer a maneira como estamos fazendo as coisas, prefiro fazê-las adequadamente / com mais eficiência :).
fonte
xtrabackup - pelo menos para innodb.
fonte
A maneira mais comum de resolver esse problema é configurar outro servidor MySQL, que pode até estar na mesma máquina, e executar a replicação mestre / escravo. Você pode executar o backup no escravo, sem impacto no mestre.
fonte
No EC2 EBS, agora estou usando xfs_freeze. Estou pensando em mudar para o xtrabackup em algum momento, mas quando fiz o primeiro teste, ele estava com muita, muita fome de CPU.
fonte
Se você estiver executando a replicação de um banco de dados compartilhado entre aplicativos, parece haver uma pergunta óbvia sobre se você pode melhorar o desempenho de várias coisas, incluindo backups, dedicando servidores de banco de dados a aplicativos. Compartilhado é legal, até que não seja.
fonte
Se você estiver mantendo suas tabelas MyISAM apenas por motivos herdados (você não se incomodou em alterá-las), eis o que eu uso para corrigir isso facilmente:
Você pode excluir e incluir bancos de dados com o regex awk, como apenas dbs, começando com uma letra minúscula no meu exemplo acima. Obviamente, isso trancará as tabelas durante o alter.
Em seguida, use xtrabackup para copiar todo o banco de dados diretamente para outro servidor sem bloquear nenhuma tabela ou usar muito IO de disco (depois de configurar as chaves ssh rsa):
e, em seguida, você pode executar a etapa de log de aplicação completamente separada e economizar espaço em disco, E / S e CPU no servidor de produção.
HowTO da Percona para usar o xtrabackup
fonte