MySQLdump用来备份数据库或在不同数据库之间迁移数据,mydqldump的备份内容包括用来创建表和装载表的SQL语句。
一、mysqldump使用方法
(1)、备份单个数据库或数据库中的部分表,使用mysqldump导出之前,会锁定表的写操作,当数据导出完成后,锁被释放。
shell> mysqldump [options] db_name [table_name]
(2)、备份指定的一个或多个数据库
shell> mysqldump [options] --database DB1 [DB2,DB3,...]
shell> mysqldump [options] -B DB1 [DB2,DB3,...]
(3)、备份服务器上的所有数据库
shell> mysqldump [options] --all-database
shell> mysqldump [options] -A
二、mysqldump主要参数
-u,--user=username # 指定用户名
-p,--password=password # 指定密码
-h,--host=hostname # 指定服务器ip
-P,--port=port # 指定连接端口
--add-drop-database # 在每个数据库创建语句前加上drop database语句
--add-drop-table # 在每个表创建语句前加上drop table语句
-n,--no-create-db # 不包括数据库的创建语句
-t,--no-create-info # 不包括数据表的创建语句
-d,--no-data # 不包括数据
--compact # 输出更为简洁,不包括各种注释语句
-c,--complete-insert # 使输出文件中的insert语句包括字段名称,默认不包括字段名称
-F,--flush-logs # 备份前刷新日志
-l,--lock-tables # 备份期间对所有表加锁
--help mysqldump # 命令帮助
三、字符集选项
--default-character-set选项可以设置导出的客户端字符集,这个选项在导出数据库的时候非常重要,如果客户端字符集和数据库字符集不一致,数据库在导出的时候就可能需要字符集转换,将数据库字符集转换为客户端字符集,讲过转换后的数据可能变成乱码或“?”等特殊字符,使得备份文件无法恢复。
四、mysqldump实战
(1)、备份test数据库下的city表
# mysqldump -uroot -p test city > city.txt
(2)、由于客户端和服务器的字符集不一致,导出文件变成乱码,导致无法导入,见如下截图:
# mysqldump -uroot -p --default-character-set=latin1 test city > city.txt
(3)、使用-c参数,使得insert into语句中增加了表的列名,见如下截图:
# mysqldump -uroot -p -c test city > city.txt
(4)、加了-d参数,使得mysqldump只导出了city表的表结构,表数据未被导出,见如下截图:
# mysqldump -uroot -p -d test city > city.txt