mysqldump是sql级别的备份机制,它将数据表导成sql脚本文件,是非常常用的备份方法。
下面整理了mysqldump的用法和几个常用参数。
基本用法:
mysqldump -u用户名 -p密码 -h主机 数据库 表 > 文件名
如果想导出整个库,不加表名即可。
例:
mysqldump -uroot -h10.1.153.23 achievement black > black.dump
常用选项:
1. --all-databases
导出所有数据库
例:
mysqldump -uroot -h10.1.153.23 --all-databases > all.dump
2.--default-character-set=name
设置默认字符集
导入导出时最好都加上这个选项,我就遇到过在不同版本的mysql间导数据,因为没有加此选,导入时提示sql有语法错误的情况。
例:
mysqldump -uroot -h10.1.153.23 --default-character-set=utf8 achievement black > black.dump
3. --complete-insert
导出的数据采用包含字段名的完整INSERT方式。
例:
如果在不加该选项时,导出数据中的一条是如下形式:
INSERT INTO `category` VALUES (1,'动作','2012-07-20 04:12:23');
加了该选项后,此数据在dump文件中的形式如下:
INSERT INTO `category` (`id`, `name`, `ctime`) VALUES (1,'动作','2012-07-20 04:12:23');
可能的应用场景:
将A库中category表的数据导入B库,但B库的category表新加了validate字段。此时,A库的category表在mysqldump时如果不加--complete-insert选项则无法导入B库category表,会提示列数不同的错误。
4. --no-create-info
只导出数据,而不添加CREATETABLE语句
5. --where
按where条件导出数据
例:
mysqldump -uroot -h10.1.153.22 hao_game category --where "validate=2"
只导出validate为2的数据。