No processo de criação de uma solução automatizada para fazer backup e restaurar um servidor MySQL inteiro , deparei-me com o mysql
banco de dados que parece conter contas de usuário, permissões, metadados, esse tipo de coisa. É necessário fazer backup desse banco de dados? O backup e a tentativa de restaurá-lo quebrarão as coisas?
Eu já fazia bastante tempo pesquisando no Google o "mysql fazendo backup do banco de dados mysql", como você pode imaginar.
mysql
backup
database
backup-restoration
database-backup
Daniel Beardsley
fonte
fonte
Respostas:
Aqui está algo interessante a considerar: O backup do
mysql
banco de dados o limita bastante, pois você só pode restaurar esse banco de dados na mesma versão do mysql da qual o backup foi executado. Aqui está o porquê:Aqui está o mysql.user do MySQL 5.0.45
Aqui está o mysql.user do MySQL 5.1.32
Aqui está o mysql.user do MySQL 5.5.12
Se você tentar restaurar o mysql.user para uma versão do MySQL para a qual não foi feito, isso produzirá problemas de permissão aleatórios. A maneira de fazer backup das permissões de usuário do mysql de forma independente da versão é despejar as concessões do usuário no SQL. Dessa forma, as concessões do usuário são completamente portáteis. Existem duas maneiras de conseguir isso:
OPÇÃO # 1: Usando MAATKIT
O mk-show-grant irá gerar o SQL necessário, independentemente da instância do mysql à qual você se conectar. (Lembre-se de que o MAATKIT está sendo migrado para o Percona Toolkit. Essa ferramenta provavelmente será chamada de pt-show-grant).
OPÇÃO # 2: Script do dumping dos SQL GRANTS
Eu escrevi minha própria emulação de mk-show-grant. Isso deixará de fora usuários anônimos. Se parece com isso:
O uso de uma dessas opções criará um backup mais estável das concessões do usuário.
EM NOTA NOTA
Agora, se você estiver usando esta opção de saída de log
o banco de dados mysql preencherá o log lento (se ativado) como uma tabela mysql no esquema mysql em vez de um arquivo de texto. Portanto, fazer backups físicos incluirá esses logs baseados em tabela do mysql. Acredite, não vale a pena o espaço em disco se o log geral e o log de consultas lentas estiverem ativados e se acumulando no esquema mysql. Basta seguir as opções de despejo do MySQL Grants.
UPDATE 2011-09-19 15:54 EDT
Há um fator muito importante na manutenção de backups de permissões do MySQL via SQL Grants:
Cada usuário sai com sua senha em algum formato MD5 modificado. Para o mysql 4.0 e anteriores, é uma cadeia hexadecimal de 16 caracteres. Para o mysql 4.1+, são 41 caracteres (um asterisco seguido por uma cadeia hexadecimal de 40 caracteres).
Antes de restaurar um despejo do SQL Grants, verifique o arquivo de despejo do SQL Grants em busca de senhas hexadecimais de 16 caracteres. Se você vir um, você deve adicionar o seguinte ao /etc/my.cnf (ou my.ini para Windows) no servidor mysql para o qual você restaurará:
A diretiva old_password permite que senhas de 16 caracteres e 41 caracteres coexistam e se autentiquem corretamente na mesma instância do mysql em execução. Todas as senhas criadas daqui para frente terão 16 caracteres.
Não é necessário reiniciar o MySQL. Basta executar o seguinte:
fonte
SHOW GRANTS
SQL geração usandoQUOTE()
, como este:SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';') FROM mysql.user WHERE user<>'';
Sim, você definitivamente deseja fazer backup do
mysql
banco de dados - é parte integrante do seu serviço. Embora você possa reconstruir o conteúdo de outras informações, a dificuldade de fazê-lo é proibitiva se você estiver tentando voltar ao serviço rapidamente.fonte
Você pode restaurar o banco de dados mysql entre versões, pelo menos versões bastante recentes. Existe uma ferramenta chamada
mysql_upgrade
incluída em novas versões do MySQL que atualizará as tabelas do sistema para você.http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html
fonte
Enquanto você restaurar para uma versão semelhante do mysql, poderá restaurar o banco de dados mysql a partir de um backup. Se você estiver em dúvida, faça uma diferença entre os esquemas do banco de dados mysql (o do backup e o do novo servidor mysql).
fonte