一、 简介
?
mysqldump是客户端用来备份数据库或者在不通数据库之间进行数据迁移的工具,备份内容包含创建表或者装载表的SQL语句
?
二、 命令格式
?
备份单个数据库或者数据库中部分数据表
mysqldump [参数] 数据库名 [表名]
备份指定的一个或者多个数据库
mysqldump [参数] --database db1 [db2db3]
备份所有数据库
mysqldump [参数] --all-database
?
三、 常用参数
?
-u--user=name 用户名
-p --password 密码
-h --host=hostname 指定服务器IP或者可解析到的域名
-P--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 给所有表添加读锁保证数据一致性一般与-F配合使用
-T 此参数与下面参数配合使用,此参数是将数据备份为淡出的数据文本文档和建表的SQL两个文件
--filelds-terminated-by=name(域分隔符)
--filelds-enclosed-by=name(域引用符)
--fields-optionally-enclosed-by=name(域可选引用符)
--fields-escaped-by=name(转义字符)
--default-characte-set=字符类型 此选项可以设置导出的客户端字符集,系统默认客户端字符集可以通过 mysql --verbose --help |grep 'default-character-set'|grep-v name来查看所以一般导出的时候一定要将字符集设置对。
?
四、 常用例子
1) 备份T4表到test4.txt
?
[root@localhost data]# mysqldump -h10.22.19.44 -uroot-p test2 t4 >test4.txt
?
2) 备份教务表
?
[root@localhostdata]# mysqldump -h10.22.19.44 -uroot -p jiaowu >jiaowu.txt
?
3) 只导出表的创建语句,不包含其他信息
?
[root@localhostdata]# mysqldump -h10.22.19.44 -uroot -p -d test2 t4 >nodata.txt
Enter password:
[root@localhost data]# cat nodata.txt
-- MySQL dump 10.13 Distrib 5.6.12, for linux-glibc2.5 (x86_64)
--
-- Host: 10.22.19.44 Database: test2
--------------------------------------------------------
-- Server version 5.6.12-log
?
/*!40101 SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE,SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES,SQL_NOTES=0 */;
?
--
-- Table structure for table `t4`
--
?
DROP TABLE IF EXISTS `t4`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8*/;
CREATE TABLE `t4` (
`id` int(10) NOT NULL DEFAULT '0',
`str_number` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client =@saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
?
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SETFOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SETUNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SETCHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SETCHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SETCOLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
?
-- Dump completed on 2015-07-17 14:53:49
?
4) 只导出表的创建语句,并且添加删除旧表的语句
?
[root@localhostdata]# mysqldump -h10.22.19.44 -uroot -p -d --add-drop-table jiaowu tutors>nooldtable.txt
Enter password:
[root@localhostdata]# cat nooldtable.txt
-- MySQL dump 10.13 Distrib 5.6.12, for linux-glibc2.5