Quais bancos de dados estão incluídos no dump gerado por mysqldump --all-databases
?
Pela minha experiência, devem ser todos os bancos de dados criados pelo usuário, mais o mysql
banco de dados. O backup do banco de dados information_schema
é feito apenas se explicitamente mencionado e performance_schema
nunca é feito backup. Isso está correto?
Acabei de fazer
mysqldump --all-databases
no MySQL 5.6.22 para Windows.Nem performance_schema nem information_schema estão no dump.
Diz isso na documentação do MySQL
É uma coisa boa. Por quê ?
PERFORMANCE_SCHEMA
As tabelas de instrumentação no esquema de desempenho são transitórias no servidor de banco de dados. As métricas de um período de tempo para outro podem ser diferentes ou iguais (portanto, tentar usar PERFORMANCE_SCHEMA de forma idempotente nunca revelaria os mesmos resultados). Tais resultados não fariam nenhum sentido carregado em um servidor diferente ou mesmo de volta para a fonte de outro período de tempo. Portanto, performance_schema não é despejado por padrão.
Se você simplesmente precisar recriar o banco de dados performance_schema do backup porque o derrubou acidentalmente, tudo bem. Então, ao usar a instrumentação, as coisas seriam reescritas de qualquer maneira.
Se você quiser capturar os resultados da instrumentação para visualizar mais tarde em um editor de texto ou aplicativo, tudo bem também.
INFORMAÇÃO_ESQUEMA
Isso também é transitório. Além disso, todas as tabelas information_schema são armazenadas na memória e retêm metadados simples sobre as tabelas na instância desde que o MySQL foi iniciado. (Veja meu post antigo Como o INFORMATION_SCHEMA é implementado no MySQL? ) Descartá-lo e recarregá-lo em outra instância do MySQL é completamente inútil porque o mysqld negaria imediatamente sua carga (ou pelo menos, o mysqld começaria a recarregar seus metadados relendo o esquema mysql e todos os arquivos de tabela e espaços de tabela novamente, se necessário).
Se você quiser capturar o estado de todas as tabelas e seus arquivos em um momento sem tocar nas tabelas, despejar INFORMAÇÃO_SCHEMA e visualizar os despejos de um editor ou algum aplicativo seria OK.
EPÍLOGO
Pense desta forma: se você tivesse um log lento de uma instância do MySQL e o copiasse para outra, como isso o beneficiaria como desenvolvedor ou DBA com consultas que não foram executadas no novo servidor?
Da mesma forma, ter métricas de desempenho e metadados de tabela de um servidor não serviria a nenhum propósito útil sendo despejado e recarregado de volta no servidor original ou em outro servidor. O mysqld precisa ter uma imagem clara dos arquivos de dados que ele gerencia atualmente, não o que o mysqld gerenciou em outro servidor ou em algum momento no passado.
EMBARGO
Você deve abster-se de fazer backup do esquema mysql, a menos que você o restaure na mesma máquina ou pelo menos em outra máquina com a mesma versão principal do MySQL.
Por favor, veja meu post antigo Backup e restauração do banco de dados "mysql" para saber por que você não deveria.