O mysqldump -all-database inclui todos os objetos

16

Será que mysqldump -all-databasesincluem todos os objetos?

Eu tenho que migrar todos os bancos de dados para o novo servidor.

Manish Ishwar
fonte

Respostas:

21

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?

Abdul Manaf
fonte
1
Você esqueceu o --events que é necessário além de --routinese --triggerstambém omitiu --single-transactionpara evitar bloquear tabelas desnecessariamente.
Michael - sqlbot
1
Apenas para ter certeza de que está claro, --single-transactionnã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 a mysqldumpexecução.
James L