mysql5.6 数据备份与恢复
一、mysqldump的工作原理
- mysql数据库自带了一个很好用的备份命令,就是
mysqldump
它的基本使用如下:
- 语法:
mysqldump -u 用户名 -p 密码 数据库名 > 备份的文件名
- 利用mysqldump命令备份数据的过程,实际上就是把数据从mysql数据库里以逻辑sql语句的形式直接输出或者生成备份文件的过程。
- 利用mysqldump命令恢复数据的过程,实际上就是把备份数据,以逻辑sql语句的形式再数据库执行的过程。
备份参数
参数 |
说明 |
-A |
导出所有数据库数据,包括数据库和创建脚本 |
-a |
导出包括创建选项,默认启用(如创建表时带有选项 ENGINE DEFAULT CHARSET不需要则使用:–skip-create-options |
-B |
导出指定数据库数据,包括数据库和表的创建脚本 <不需要则使用:-n, --no-create-db> |
-C |
服务器客户端协议间使用压缩 |
-c |
完整插入语句,insert时把字段名都列出 |
–compact |
多余的注释去掉,一般用于debug,生产不用 |
–compatible |
导出相应模式的脚本,模式有:ansi, mysql323, mysql40,postgresql, oracle, mssql, db2, maxdb, no_key_options,no_table_options, no_field_options |
-d |
只备份表结构 |
-t |
只备份数据 |
–default-character-set=<字符集名称> |
导出指定字符集格式 |
–delete-master-logs |
使用新的日志,并删除所以旧日志文件。默认启用 --master-data |
-E |
包括事件、触发器 |
-e |
多个insert使用一个语句多个values,默认启用 相反:每个value一个insert则使用 --skip-extended-insert |
-F |
刷新binlog日志,日志文件切换新 |
-f |
错误继续 |
-i |
包括额外信息,默认启用 |
-l |
只读锁表 |
–master-data[=#] |
增加binlog日志文件及对应的位置点,等于2:注释状态,显示备份起始的日志点;等于1:多用于从库,使从库从某个日志点开始 |
-Q |
表和字段名使用符号(`) |
-R |
包括存储过程和函数及触发器 |
–replace |
“INSERT INTO” 替换为 “REPLACE INTO” |
–tables |
覆盖选项"-B" ,如库和表同名 |
-x |
锁定所有数据库和表,全局读锁。关闭 --single-transaction 和 --lock-tables |
压缩 |
备份的库名 |
二、数据库备份
1.备份单个数据库
- 语法:
mysqldump -u 用户名 -p 密码 数据库名 > 备份的文件名
- 参数:
-A
:备份所有数据库
-B
:指定多个库
-F
:刷新binlog日志
–compact
:去掉注释,debug调试使用
–master-data
:增加binlog日志文件名及对应的位置点
2.查看数据表
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| test_db |
+--------------------+
5 rows in set (0.00 sec)
mysql> use test_db;
Database changed
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+--------------