是否mysqldump -all-databases
包括所有对象?
我必须将所有数据库迁移到新服务器。
是否mysqldump -all-databases
包括所有对象?
我必须将所有数据库迁移到新服务器。
Answers:
没有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
--single-transaction
如果在备份运行期间写入MyISAM表,则不会生成一致的备份。但是,--single-transaction
如果您正在使用所有InnoDB,并且希望避免在mysqldump
运行时阻塞,那么添加是个好主意。
--events
了除--routines
和之外还需要的东西,--triggers
并且也省略了它,--single-transaction
以避免不必要地锁定表。