乐趣区

关于数据库:备份恢复学的这么差试用期你都过不了

大家好,我是民工哥。

前几天,有个读者找我吐槽,他刚入职一家公司,有一次老大和他说了一句话:就一个数据库的备份、复原你都学的这么差,怕是连试用期也过不了!

的确,数据是企业的重要之中,这项技能是必须把握的,搞的好,升职加薪,搞的不好,删库跑路的事不在少数。

本文联合本人工作 10 年的积攒,将 Oracle 的备份复原做了具体论述。对于 MySQL 数据库的备份与复原请看这:高逼格企业级 MySQL 数据库备份计划,原来是这样,删库不再跑路!我在外面含泪写下 MySQL 数据恢复大法

数据库故障类型

  • 1)user process failure 用户过程故障:pmon 主动解决
  • 2)instance failure 实例故障: smon 主动解决
  • 3)user errors 用户 谬误:须要 dba 通过备份复原解决
  • 4)media failure 介质故障:必须通过备份和日志复原

总结:备份复原次要是用于爱护数据(介质、用户、应用程序导致)、保留数据、传输数据

备份复原分类

还原即 Restore(重储), 复原即是 Recover(复原)

逻辑备份与复原
  • ①传统的导入导出:exp/imp:
  • ②数据泵导入导出:expdp/impdp
  • 面向 object,逻辑备份就是热备数据库对象某一时刻状态,
  • 不能使用在 media failure 上,逻辑备份的复原就是还原备份,没有 recover 的概念。
物理备份与复原
  • 面向 media failure
  • ①手工备份与复原,也叫用户治理的备份与复原(UMAN),
  • 通过 OS 的命令,实现备份与还原,而后再使用日志进行复原。
  • ②主动备份与复原,利用 oracle 的备份复原工具 RMAN,使还原与复原过程主动实现。
  • 物理备份从形式上能够有 一致性备份(冷备)和 非一致性备份(热备)残缺的备份策略应该以物理备份为主,逻辑备份为辅(用于备份一些重要的表)
闪回技术
  • 一种利用 undo 数据或闪回日志的疾速复原技术。
  • 能够针对不同层面问题进行逻辑复原,
  • 11g 反对七种 flashback 形式,
  • 其中疾速复原区只和闪回数据库无关。

完全恢复与不完全恢复

1)完全恢复:
  • 利用残缺备份或局部备份,能够将 datafile
  • 复原到 failure 前得最初一次 commit,不会出
  • 现数据失落。
2)不完全恢复
  • 须要使用残缺备份和日志将 database
  • 复原到过来的某个工夫点(或 SCN),有数据失落。

备份策略

  • 备份策略:每周日执行 0 级全备份,周一至周六每天执行 1 级增量备份
  • 配置保留策略 reduncancy 2,
  • 开启管制文件主动备份
RMAN> show all;
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
备份脚本
-- 创立寄存脚本的目录
mkdir /home/oracle/scripts
-- 创立全备份脚本
vi /home/oracle/scripts/rman_level0.sh
#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=PROD
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
rman target / << EOF
run{
crosscheck backup;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup incremental level 0 database format '/u01/backup/rman/db_%U.bak'
plus archivelog format '/u01/backup/rman/ar_%U.bak';
backup current controlfile format '/u01/backup/rman/ctl_%U.bak';
report obsolete device type disk;
delete noprompt obsolete device type disk;
delete noprompt expired backup device type disk;
release channel c1;
release channel c2;
}
EOF
exit

CROSSCHECK 命令: 用于核查磁盘和磁带上的备份文件

状态为:AVALIABLE、UNAVALIABLE、EXPIRED

赋予权限

chmod a+x /home/oracle/scripts/rman_level0.sh
chmod a+x /home/oracle/scripts/rman_level1.sh
编写 crontab 打算工作

测试环境 整点进行全备份,每 15 分钟增量备份一次

0 * * * * /home/oracle/scripts/rman_level0.sh >> /u01/backup/rman/PROD_rman_L0_`date
+\%Y\%m\%d_\%H\%M\%S`.log 2>&1
15,30,45 * * * * /home/oracle/scripts/rman_level1.sh >>
/u01/backup/rman/PROD_rman_L1_`date +\%Y\%m\%d_\%H\%M\%S`.log 2>&1

查看备份状况是否失常,查看相干备份日志。

查看 obsolete 备份、归档是否删除失常。

select a.TIME_TAKEN_DISPLAY as "用时",
       a.INPUT_BYTES_DISPLAY "大小",
       a.INPUT_BYTES_PER_SEC_DISPLAY as "速度",
       a.INPUT_TYPE "备份类型",
       to_char(start_time, 'day') day1,
       to_char(start_time, 'yyyy-mm-dd hh24:mi:ss') as "开始工夫",
       to_char(end_time, 'yyyy-mm-dd hh24:mi:ss') "完结工夫",
       output_device_type,
       status,
       input_type
  from V$RMAN_BACKUP_JOB_DETAILS a

作者:IT 邦德 起源:
jeames.blog.csdn.net/article/details/122355707_

如果本文对你有帮忙的话,欢送 点赞 & 转发,这对我持续分享 & 创作优质文章十分重要。感激🙏🏻

退出移动版