¿Mysqldump -all-database incluye todos los objetos?

16

¿ mysqldump -all-databasesIncluye todos los objetos?

Tengo que migrar todas las bases de datos al nuevo servidor.

Manish Ishwar
fuente

Respuestas:

21

No mysqldump -all-database no incluye todos los objetos

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.

Entonces mysqldump con --todas las bases de datos solo vuelca todas las bases de datos.

Para migrar todas las bases de datos a un nuevo servidor, debe realizar una copia de seguridad completa:

mysqldump una instancia entera de mysql

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql

El inconveniente es que las copias de seguridad creadas de esta manera solo se pueden volver a cargar en la misma versión principal de mysql con la que se generó mysqldump. En otras palabras, un mysqldump --todas las bases de datos de una base de datos MySQL 5.0 no se puede cargar en 5.1 o 5.5. La razón ? El esquema mysql es totalmente diferente entre las versiones principales.

Aquí está la forma genérica de volcar las concesiones SQL para usuarios que es legible y más portátil

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

Eche un vistazo a la respuesta de RolandoMySQLDBA en ¿Cómo puedo optimizar un mysqldump de una base de datos grande?

Abdul Manaf
fuente
1
Olvidó --events qué se necesita además de --routinesy --triggerstambién omitió --single-transactionpara evitar bloquear tablas innecesariamente.
Michael - sqlbot
1
Solo para estar seguro de que está claro, --single-transactionno producirá una copia de seguridad consistente si se escriben tablas MyISAM mientras se ejecuta la copia de seguridad. Sin embargo, agregar --single-transactiones una buena idea si está utilizando todo InnoDB y desea evitar el bloqueo mientras se mysqldumpejecuta.
James L