Eu tenho um banco de dados que cresceu para 3 GB e possui 3 tabelas MyISAM. E eu tenho 4 GB de RAM. Qual será a melhor maneira (rápida) de fazer backup desse banco de dados sem nenhuma perda de desempenho.
Ou o mysqldump funcionará sem nenhum problema?
Editar Não estou procurando um arquivo muito grande contendo muitas instruções SQL. Agora, tenho mais opções? Como exportação de dados brutos ou mysqlhotcopy, pois estou procurando uma maneira mais rápida porque o backup do MyISAM adquiriria o bloqueio de tabela?
E quais são os limites do mysqldump e quando deve ser evitado?
mysqldump deve estar bem. Como você tem apenas 3 GB de dados, espero que o mysqldump seja decentemente rápido (1-2 minutos como uma única saída). No entanto, como seu banco de dados é composto por 3 tabelas MyISAM, espere que todas as três sejam bloqueadas durante o backup. Lembre-se de que, como as tabelas são bloqueadas uma de cada vez, você não terá consistência pontual em todas as tabelas do banco de dados.
Tenho alguns scripts que escrevi e ainda uso para executar
Se você está preocupado com dados consistentes, pode ser necessário implementar algo da Opção 4 do link que forneci, que é executado
"FLUSH TABLES WITH READ LOCK; SELECT SLEEP(86400);"
em uma sessão separada para bloquear todas as gravações em todas as tabelas, executar o(s) mysqldump(s) e, em seguida, matar essa sessão segurando o bloqueios de tabelas.Se você tem medo de tentar executar isso, deve procurar usar a replicação do MySQL. Um servidor escravo com os mesmos dados pode ser usado para executar mysqldumps sem impor nada de E/S de disco ou carga geral do servidor no banco de dados mestre. Você basicamente faz essas coisas no DB Slave:
STOP SLAVE;
START SLAVE;
De uma chance !!!
Mysqldump funcionaria como um encanto e você nem notaria nenhuma degradação de desempenho porque o tamanho de 3 GB pode ser manipulado facilmente e se você escolher a primeira opção do link de script @Rolando, o tamanho seria bastante reduzido, assim seria um 500- arquivo de 600 MB.
Sempre haverá 'muitas' instruções sql em métodos de backup padrão, porque dessa forma, ao restaurar, você estará dizendo ao MySQL para inserir esses dados, de modo que seja por meio de instruções SQL.
Agora, outras maneiras são copiar sua tabela de dados ou usar mysqlhotcopy e funciona bem para tabelas MyISAM. Mas eu sugeriria o método mais fácil que está usando mysqldump porque você não precisa se preocupar com o bloqueio no nível da tabela, pois não seria notado. Este link pode ser útil para você Criando um instantâneo de dados usando arquivos de dados brutos e como restaurar bancos de dados MySQL sem um backup mysqldump .