备份数据的最终目的是为了在出现一些意外状况时,可以经过备份将数据还原,因此单单的备份数据每每是没法知足还原时的需求的,因此在备份数据库时,除了要备份数据自己,还要备份相关的数据库环境,如配置文件,定时任务,sudo权限等等相关的信息。mysql
一、灾难恢复:硬件故障,软件故障,天然灾害,黑客攻击,误操做sql
二、测试数据库
一、备份须要多少时间(备份过程的时长)
二、能容忍最多丢失多少数据
三、恢复数据须要在多场时间内完成(恢复过程的时长)
四、须要恢复哪些数据
(1)作还原测试,用于测试备份的可用性
(2)还原演练服务器
五、备份负载架构
一、数据函数
二、二进制日志,innodb的事务日志工具
三、代码(存储过程、存储函数、触发器、时间调度器)性能
四、服务器的配置文件测试
一、彻底备份(全量备份)(Full Backup)spa
对某个时间点的全部数据进行一个彻底的备份,对应时间点的全部数据都被包含在彻底备份中。(备份整个数据集)
二、部分备份
只备份数据子集
三、增量备份
仅备份最近一次彻底备份或增量备份(若是有增量备份)以来变化的数据
四、差别备份
仅备份最近一次彻底备份以来变化的数据;
五、热备
在数据库正常运行的状况下进行备份,读写操做都可执行(每每依赖于事务日志)(难度最大)(myisam存储引擎不支持热备,Innodb存储引擎支持热备)
六、温备
读操做能够、写不行
七、冷备
读写操做均不能执行(停数据库后进行文件拷贝便可)
八、物理备份
直接备份数据库所对应的数据文件,与存储引擎无关(cp),相对于逻辑备份来讲,性能更强
九、逻辑备份
从数据库中“导出”数据另存而进行备份
一、数据集:彻底+增量+二进制日志|彻底+差别+二进制日志
二、备份手段:物理,逻辑(物理备份恢复较快,逻辑备份恢复较慢)
对于备份较大的数据建议物理备份,对于较小的数据建议用逻辑备份。
一、cp命令或tar命令
在Linux中直接对数据文件进行备份,这种方式只适用于冷备的方式
二、经过select语句进行部分备份
经过select语句将表中的数据导出到指定文件中。
MariaDB [bi]> show variables like '%datadir%'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.00 sec) --注意:文件必须放在数据库的工做目录下 MariaDB [bi]> select * from test into outfile '/var/lib/mysql/test.backup'; Query OK, 6 rows affected (0.00 sec) --查看原来的数据 MariaDB [bi]> select * from test; +--------------+------+------+------+ | name | high | age | id | +--------------+------+------+------+ | 刘亦菲 | 179 | 32 | 3 | | 刘德华 | 180 | 40 | 5 | | 毕洪态 | 177 | 26 | 2 | | 漩涡鸣人 | NULL | NULL | NULL | | 胡歌 | 178 | 32 | 1 | | 谢霆锋 | 182 | 33 | 6 | +--------------+------+------+------+ 6 rows in set (0.00 sec)
--删除所有数据(或者建立一个和原表结构同样的新表)
--不能够恢复部分数据 MariaDB [bi]> delete from test where id in (1,2,3,5,6); MariaDB [bi]> delete from test where id is null;
--使用load data恢复数据 MariaDB [bi]> load data infile "/var/lib/mysql/test.backup" into table test;Query OK, 6 rows affected (0.01 sec) Records: 6 Deleted: 0 Skipped: 0 Warnings: 0 MariaDB [bi]> select * from test; +--------------+------+------+------+ | name | high | age | id | +--------------+------+------+------+ | 刘亦菲 | 179 | 32 | 3 | | 刘德华 | 180 | 40 | 5 | | 毕洪态 | 177 | 26 | 2 | | 漩涡鸣人 | NULL | NULL | NULL | | 胡歌 | 178 | 32 | 1 | | 谢霆锋 | 182 | 33 | 6 | +--------------+------+------+------+ 6 rows in set (0.00 sec)
在使用select语句备份的同时,最好将表架构也备份一份,由于还原的时候能够用到。
三、mysqldump+复制binlog:
mysqldump:彻底备份(部分备份)(逻辑备份工具)
复制binlog中指定时间范围内的event:增量备份
mysqldump是mysql自带的备份工具,它是一种逻辑备份工具,也就是说,它会将数据从数据库中读出,转化为对应的sql语句。
mysqldump可以实现彻底备份或部分备份
使用innodb表类型的表可以使用mysqldump进行热备
使用myisam表类型的表只可以使用mysqldump进行温备
若是数据量较小,能够选择使用mysqldump。
原理:
经过协议链接到mysql数据库,将须要备份的数据查询出来,将查询出的数据转换成对应的insert语句,还原这些数据时,只要执行这些insert语句便可将对应的数据还原。
优势:
能够直接使用文本处理工具处理对应的备份数据,由于备份数据已经被mysqldump转换成了对应的insert语句,因此,咱们能够借助文件系统中的文本处理工具对备份数据进行直接处理。
缺点:
当数据为浮点类型时,会出现精度丢失
它的备份过程属于逻辑备份,其备份速度、恢复速度与物理备份工具相比较慢,并且mysqldump备份的过程是串行化的(mydumper可并行备份),不会并行的进行备份;当数据量较大时,其效率较低
四、lvm2快照+复制binlog:
lvm2快照:(作快照的时候不能有任何的数据写入)(几乎热备(备份速度快))
lvm2快照:适用cp或者tar等作物理备份:彻底备份
复制binlog中指定时间范围内的event:增量备份
五、xtrabackup|mariabackup:
由Percona提供的支持对InnoDB作热备(物理备份)工具(开源免费的)
支持彻底备份、差别备份、增量备份、部分备份等功能