一、备份的目的
1. 做灾难恢复:对损坏的数据进行恢复和还原
2. 需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用
二、备份需要考虑的问题
1. 可以容忍丢失多长时间的数据;
2. 恢复数据要在多长时间内完;
3. 恢复的时候是否需要持续提供服务;
4. 恢复的对象,是整个库,多个表,还是单个库,单个表。
三、备份的类型
1、根据是否需要数据库离线
冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行;
温备(warm backup):服务在线,但仅支持读请求,不允许写请求;热备(hot backup):备份的同时,业务不受影响。
注:
1、这种类型的备份,取决于业务的需求,而不是备份工具
2、MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具
2、根据要备份的数据集合的范围
完全备份:full backup,备份全部字符集。
增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。
差异备份:differential backup 上次完全备份以来改变了的数据。
建议的恢复策略:
完全+增量+二进制日志
完全+差异+二进制日志
3、根据备份数据或文件
物理备份:直接备份数据文件,优点:备份和恢复操作都比较简单,能够mysql的版本;恢复速度快,属于文件系统级别的。建议:不要假设备份一定可用,要测试 mysql>check tables;检测表是否可用。逻辑备份: 备份表中的数据和代码优点:恢复简单;备份的结果为ASCII文件,可以编辑;与存储引擎无关;可以通过网络备份和恢复;缺点:;备份或恢复都需要mysql服务器进程参与;备份结果占据更多的空间;浮点数可能会丢失精度;还原之后,缩影需要重建
四:备份的对象
1、 数据;
2、配置文件;
3、代码:存储过程、存储函数、触发器
4、os相关的配置文件
5、复制相关的配置
6、二进制日志
五、备份和恢复的实现
1、利用select into outfile实现数据的备份与还原
1.1把需要备份的数据备份出来
mysql> use hellodb; //打开hellodb库 mysql> select * from students; 查看students的属性 mysql> select * from students where Age > 30 into outfile ‘/tmp/stud.txt' ; //将年龄大于三十的同学的信息备份出来
注意:
备份的目录路径必须让当前运行mysql服务器的用户mysql具有访问权限
备份完成之后需要把备份的文件从tmp目录复制走,要不就失去备份的目的了
回到tmp目录下查看刚才备份的文件
[root@www ~]# cd /tmp
[root@www tmp]# cat stud.txt
3Xie Yanke53M216
4Ding Dian32M44
6Shi Qing46M5\N
13Tian Boguang33M2\N
25Sun Dasheng100M\N\N
[root@www tmp]#
你会发现是个文本文件。所以不能直接导入数据库了。需要使用load data infile 恢复;回到mysql服务器端,删除年龄大于30的用户,模拟数据被破坏:
mysql> delete from students where Age > 30; mysql> load data infile '/tmp/stud.txt' into table students;
2、利用mysqldump工具对数据进行备份和还原,mysqldump 常用来做温备,所以我们首先