mysqldump
mysqldump命令是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中。
选项
--all-databases, -A:导出MySQL服务器上的所有数据库;
--all-tablespaces, -Y:导出某数据库的所有表空间
--add-drop-database:在每个创建数据库语句前添加删除数据库的语句;
--add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句;(默认添加drop语句,使用--skip-add-drop-table取消选项)
--add-locks:导出数据库表时锁定数据库表;(默认添加LOCK语句,使用--skip-add-locks取消选项)
--comments:添加注释信息;
--compact:压缩模式,产生更少的输出;
--complete-insert:输出完成的插入语句;
--databases, -B:指定要备份的数据库,参数后面所有名字参量都被看作数据库名;
--default-character-set:指定默认字符集;
--force:当出现错误时仍然继续备份操作;
--host:指定要备份数据库的服务器;
--lock-tables:备份前,锁定所有数据库表;
--no-create-db:禁止生成创建数据库语句;
--no-create-info:禁止生成创建数据库库表语句;
--password:连接MySQL服务器的密码;
--port:MySQL服务器的端口号;
--user:连接MySQL服务器的用户名。
常用语句
导出所有数据库(包括系统数据库)
mysqldump -u用户名 -p密码 --all-databases > 导出的文件名
mysqldump -uroot -proot --all-databases > all.sql
导出整个数据库(可一次多个)
mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > 导出的文件名
mysqldump -uroot -proot --databases databas1 database2 > databases.sql
导出一个表(可一次多个,但只能针对一个数据库)
mysqldump -u用户名 -p密码 --databases 数据库 --tables 表1 表2 > 导出的文件名
mysqldump -uroot -proot --databases db1 --tables t1 t2 > tables.sql
按条件导出(条件相同可一次多个)
mysqldump -u用户名 -p密码 --databases 数据库 --tables 表1 表2 --where=‘条件‘ > 导出的文件名
mysqldump -uroot -proot --databases db1 --tables a1 --where=‘id=1‘ > tables.sql
只导出表结构不导出数据(可一次多个)
mysqldump -u用户名 -p密码 --no-data --databases 数据库1 数据库2 > 导出的文件名
mysqldump -uroot -proot --no-data --databases db1 > tables.sql
跨服务器导出导入数据
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot --databases db2
将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot --databases test
加上-C参数可以启用压缩传递