MySQL mysqldump
mysqldump 技巧点
导出一个数据库
shell> mysqldump db1 > dump.sql
shell> mysqladmin create db2
shell> mysql db2 < dump.sql
恢复一个测试库
server1
shell> mysqldump --databases db1 > dump.sql
server2
shell> mysql < dump.sql
备份存储程序
--events: 转储事件调度程序
--routines: 备份存储过程和函数
--triggers: 备份表上的triggers。
导出表定义和表内容
--no-data
选项告诉mysqldump
不要转储表数据,导致转储文件只包含创建表的语句。相反,no-create-info
选项告诉mysqldump
从输出中删除CREATE
语句,以便转储文件只包含表数据。
例如,要分别为测试数据库转储表定义和数据,可以使用以下命令
shell> mysqldump --no-data test > dump-defs.sql
shell> mysqldump --no-create-info test > dump-data.sql
对于只包含定义的转储,添加--routines
和--events
选项,也包括存储的例程和事件定义:
shell> mysqldump --no-data --routines --events test > dump-defs.sql
升级测试
在考虑升级MySQL时,明智的做法是将更新的版本与当前的生产版本分开安装。然后,您可以从生产服务器转储数据库和数据库对象定义,并将它们加载到新服务器,以验证它们得到了正确的处理。(这对于测试降级也很有用。)
生产机器上
shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql
测试机器上
shell> mysql < dump-defs.sql
由于转储文件不包含表数据,因此可以快速处理它。这使您能够发现潜在的不兼容性,而无需等待冗长的数据加载操作。在处理转储文件时查找警告或错误。
等到兼容性测试得到正确的处理之后。加载数据到升级的服务器中。
shell> mysqldump --all-databases --no-create-info > dump-data.sql
shell> mysql < dump-data.sql