¿ mysqldump -all-databases
Incluye todos los objetos?
Tengo que migrar todas las bases de datos al nuevo servidor.
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?
--events
qué se necesita además de--routines
y--triggers
también omitió--single-transaction
para evitar bloquear tablas innecesariamente.--single-transaction
no producirá una copia de seguridad consistente si se escriben tablas MyISAM mientras se ejecuta la copia de seguridad. Sin embargo, agregar--single-transaction
es una buena idea si está utilizando todo InnoDB y desea evitar el bloqueo mientras semysqldump
ejecuta.