Será que mysqldump -all-databases
incluem todos os objetos?
Eu tenho que migrar todos os bancos de dados para o novo servidor.
Nenhum mysqldump -all-database não inclui todos os objetos
mysqldump --help
-A, --all-databases Dump all the databases. This will be same as --databases
with all databases selected.
Então o mysqldump com --all-database apenas despeja todos os bancos de dados.
Para migrar todos os bancos de dados para um novo servidor, você deve fazer um backup completo:
mysqldump uma instância inteira do mysql
mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql
A desvantagem é que os backups criados dessa maneira só podem ser recarregados na mesma versão principal do mysql com a qual o mysqldump foi gerado. Em outras palavras, um mysqldump --all-database de um banco de dados MySQL 5.0 não pode ser carregado no 5.1 ou 5.5. O motivo ? O esquema do mysql é totalmente diferente entre os principais lançamentos.
Aqui está a maneira genérica de despejar o SQL Grants para usuários que sejam legíveis e mais portáteis
mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql
Dê uma olhada na resposta de RolandoMySQLDBA em Como posso otimizar um mysqldump de um banco de dados grande?
--events
que é necessário além de--routines
e--triggers
também omitiu--single-transaction
para evitar bloquear tabelas desnecessariamente.--single-transaction
não produzirá um backup consistente se houver tabelas MyISAM sendo gravadas enquanto o backup é executado. No entanto, adicionar--single-transaction
é uma boa idéia se você estiver usando todo o InnoDB e quiser evitar o bloqueio durante amysqldump
execução.