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

Man*_*war 19 mysql mysqldump backup

是否mysqldump -all-databases包括所有对象?

我必须将所有数据库迁移到新服务器。

Abd*_*naf 26

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

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.
Run Code Online (Sandbox Code Playgroud)

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

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

mysqldump 整个 mysql 实例

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql
Run Code Online (Sandbox Code Playgroud)

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

这是为可读且更便携的用户转储 SQL 授权的通用方法

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
Run Code Online (Sandbox Code Playgroud)

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