mysqldump -all-databases是否包含所有对象


Answers:


21

没有mysqldump -all-databases不包括所有对象

mysqldump --help

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

因此带有--all-databases的mysqldump只转储所有数据库。

为了将所有数据库迁移到新服务器,您应该进行完整备份:

mysqldump整个mysql实例

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

缺点是通过这种方式创建的备份只能重新加载到生成mysqldump的mysql的同一主要发行版中。换句话说,MySQL 5.0数据库中的mysqldump --all数据库不能在5.1或5.5中加载。原因 ?各个主要版本之间的mysql架构完全不同。

这是为用户转储SQL Grants的通用方法,该方法易读且可移植性更高

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

看看RolandoMySQLDBA上关于如何优化大型数据库的mysqldump的答案


1
您忘记--events 了除--routines和之外还需要的东西,--triggers并且也省略了它,--single-transaction以避免不必要地锁定表。
Michael-sqlbot

1
只是为了确保它很清楚,--single-transaction如果在备份运行期间写入MyISAM表,则不会生成一致的备份。但是,--single-transaction如果您正在使用所有InnoDB,并且希望避免在mysqldump运行时阻塞,那么添加是个好主意。
James L
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.