1、什么是mysqldump
mysqldump是MySQL自带的逻辑备份工具
备份原理:通过协议连接数据库,根据id查询需要备份的所有数据,并转换成对应的insert语句,写入到文件中,还原的时候,直接将文件灌入数据库即可
2、mysqldump命令格式
备份该实例下所有库:mysqldump [选项] --all-databases [选项] >文件名
备份单库:mysqldump [选项] --数据库名 > 文件名
备份单表:mysqldump [选项] 数据库名 [表名] > 文件名
备份单表的部分数据:mysqldump [选项] 数据库名 [表名] --where [条件] > 文件名
3、参数详解
-A, --all-databases:导出所有数据库
-h, --host:连接数据库的主机IP
-u,--user:连接数据库的账户
-p, --password:连接数据库的密码
-P, --port:连接数据库的端口号
-t:只备份数据,数据是文本形式,表结构不备份
-d:只备份表结构,备份文件是SQL语句形式;只备份创建表的语句,插入的数据不备份。
--tables:指定需要导出的表名
-V, --version:输出mysqldump版本信息并退出
--single-transaction:可以得到一致性的导出结果,将导出行为放到一个事务里,只适合innodb引擎,导出过程中不能执行DDL,否则会阻塞
-F,--flush-logs:刷新binlog日志
--master-data:默认值为1,表示dump出来的备份文件包括CHANGE MASTER TO语句,用于记录binlog位点,做增量恢复;当设为2,dump出来的备份文件也有CHANGE MASTER TO语句,但会注释掉,不会生效,只是记录一个信息
4、mysqldump常用案例1. 导出所有数据库的所有信息
mysqldump -h 10.1.2.3 --single-transaction -uroot -p123456 --all-databases >/data/backup.sql
2.导出所有数据库的表结构
mysqldump -h 10.1.2.3 --single-transaction -uroot -p123456 --all-databases -d >/data/backup.sql
3. 导出所有数据库的数据
mysqldump -h 10.1.2.3 --single-transaction -uroot -p123456 --all-databases -t >/data/backup.sql
4.导出单个数据库
mysqldump -h 10.1.2.3 --single-transaction -uroot -p123456 --databases test >/data/backup.sql
5. 导出test库下的单表t1
mysqldump -h 10.1.2.3 --single-transaction -uroot -p123456 --databases test --tables t1 >/data/backup.sql