mysqldump的一些使用技巧
++++++++++++++++++++++
这部分讲几个mysqldump的技巧-解决几个特定的问题;
备份数据库
======================
、shell> mysqldump db1 > dump.sql
、shell> mysqladmin create db2
、shell> mysql db2 < dump.sql
不要使用--databases, 因为那样会导致USE db1 语句(这个选项回生成CREATE DATABASE和USE语句)覆盖第三条语句中指定的db2
将数据库从一个服务器拷贝到另一个服务器
======================
、在server1上:shell> mysqldump --databases db1 > dump.sql
、将dump.sql文件拷贝到另一个服务器server2;
、在server2上:shell> mysql < dump.sql
使用--databases语句,因为会生成CREATE DATABASE和USE 语句,这样,即使server2上不存在对应的数据库,也会自动创建;
也可以使用--databases选项,这样,我们有可能需要在server2上创建相对应的数据库
、在server1上:shell> mysqldump db1 > dump.sql
、在server2上:shell> mysqladmin create db1
shell> mysql db1 < dump.sql
在这种情况下,可以指定一个不同的数据库名字(本例子中,server2上创建的数据库的名字不一定非得是db1)
备份存储程序
======================
mysqldump有一些选项可以用来备份存储程序:存储过程、函数、触发器、事件
--events 备份计划事件
--routines 备份存储过程和函数
--triggers 备份触发器
其中,--triggers选项默认是开启的,其他的默认是没有开启的;
相对应--skip-events --skip-routines --skip-triggers
表结构和数据分开备份
======================
--no-data选项告诉mysqldump只备份创建表的语句而不备份表中的数据;
--no-create-info选项告诉mysqldump只备份表中的数据而不备份创建表的语句;
例如:
shell> mysqldump --no-data test > dump-defs.sql
shell> mysqldump --no-create-info test > dump-data.sql
使用mysqldump测试升级不兼容性
======================
升级mysql的时候,可以先单独安装一个新版本,然后将现有版本的数据库导出来,在导入到新版本里边(这也适用于”降级“)
、在当前版本上:shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql
、在新版本上:shell> mysql < dump-defs.sql
因为dump问没包含数据,所以这个过程非常快。这样,就能很快发现升级过程中出行的问题或者警告;
如果没有问题,或者已经解决了问题,下一步就可以将数据导入到新版本里边了:
、在当前版本上:shell> mysqldump --all-databases --no-create-info > dump-data.sql
、在新版本上:shell> mysql < dump-data.sql