Kettle之mysql备份
数据备份策略
1、全备
备份完整的数据库,全量数据就是数据库中所有的数据(或某一个库的全部数据);
全量备份就是把数据库中所有的数据进行备份;
mysqldump会取得一个时刻的一致性数据
2、增备
增量数据就是指上一次全量备份数据之后到下一次全备之前数据库所更新的数据,对于mysqldump,binlog就是增量数据;
3、差异备份
备份自上一次完全备份后的全部改动和新文件;
备份速度较快,恢复速度较快,对磁盘空间有要求;
能够更快且简单的恢复(相比较增量);
需要最近一次完全备份和最后一次差异备份就能快速恢复;
二、数据备份类型
1、冷备
停库,停服务,备份
这些备份操作在用户不能访问数据的时候进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的行为。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。
2、热备
不停库,不停服务,备份,也不会(锁表)阻止用户的写入
这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。使用热备份时,系统仍可供读取和修改数据的操作访问。
3、温备
不停库,不停服务,备份,会(锁表) 阻止用户的写入
这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备份类型的优点是不必完全锁定最终用户。但其不足之处在于无法在进行备份时修改数据集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性能问题。
三、mysqldump 数据备份命令使用
1、命令格式
mysqldump [选项] 数据库名 [表名] > 脚本名
或
mysqldump [选项] --数据库名 [选项 表名] > 脚本名
或
mysqldump [选项] --all-databases [选项] > 脚本名
关于选项部分,包含的参数是比较多的,下面列举常用的一些参数选项
参数名 | 缩写 | 含义 | 默认值 |
--user | -u | 连接服务器Mysql用户名 | |
--password | -p | 连接服务器Mysql密码 | |
--host | -h | Mysql服务器IP | |
--port | -P | Mysql服务器端口 | |
--databases | -B | 指定要备份的数据库 | |
--all-databases | -A | 备份Mysql服务器上所有数据库 | |
--add-drop-databases | 每个数据库创建之前添加drop数据库语句 | ||
--add-drop-table | 创建表之前添加drop表语句 | ||
--events | -E | 导出事件 | |
--routines | -R | 导出存储过程以及正定义函数 | |
--triggers | 导出触发器 | ||
--extended-insert | -e | 使用具有多个VALUES列的INSERT语法 | |
--ignore-table | 不导出指定表 | ||
--single-transaction | 通过在一个事务中导出所有表从而创建一个一致性快照,适用于innodb引擎 |
2、案例演示
1)、备份全部数据库(包含存储过程、自定义函数及事件)
显示所有库名称

Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini --single-transaction --routines --events --all-databases>D:\Wnmp\mysql\data\all_databases_01.sql【存储路径】
注:如果备份时用 mysqldump -uroot -p12345 ,导出时会有警告:
Warning: Using a password on the command line interface can be insecure.
意思是说:在命令行界面上使用密码可能是不安全的,不能直接把密码写在脚本中。


上图就证明备份完成,可以到相应的路径下找到备份的文件

2)备份指定数据库
Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini --single-transaction --routines --events --databases kettle_loandb>D:\Wnmp\mysql\data\kettle_loandb_01.sql

3)备份数据表
Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini --single-transaction kettle_loandb tb_sc>D:\Wnmp\mysql\data\tb_sc_01.sql

4)导出某个表,数据以单行insert显示
Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini --single-transaction --skip-extended-insert kettle_loandb tb_sc>D:\Wnmp\mysql\data\tb_sc_02.sql

5)导出单表的部分数据
Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini --single-transaction kettle_loandb tb_sc --where="code_sc < 40">D:\Wnmp\mysql\data\tb_sc_03.sql

6)排除某些表导出
如下备份kettle_loandb库下的表,排除tb_sc这个表
Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini --single-transaction --databases kettle_loandb --ignore-table=kettle_loandb.tb_sc>D:\Wnmp\mysql\data\kettle_loandb_02.sql

7)只导出整库结构或只导出数据
Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini kettle_loandb --no-data>D:\Wnmp\mysql\data\kettle_loandb_03.sql
Mysqldump --defaults-extra-file=D:\Wnmp\mysql\my.ini kettle_loandb --no-create-info>D:\Wnmp\mysql\data\kettle_loandb_04.sql

8)只备份表结构
备份kettle_loandb库下tb_sc这个表,只备份表结构

9)远程导出 即MySQL服务端不在本地
mysqldump -uroot -pxxxxxx -hxxx.xxx.xx -P3306 --single-transaction --databases 【数据库】 > 【存放备份文件路径】