一、引言
现如今数据的重要性不言而喻,在MES系统上线之后,客户的生产数据是重中之重的,容不得半点闪失,应该做好万全的准备,定时定点做好备份以防意外情况产生。往往因系统BUG、操作人员失手、病毒感染、恶意删除等原因,导致的后果往往是致命的,轻则现场停机,重则数据丢失。所以要对我们的线上数据库定时做全量备份与增量备份。例如:每天做一次增量备份,定时一月做全量备份。以下所涉及的数据库为MES系统常用的SQL Server和Oracle数据库。
二、SQL Server数据库
备份介绍以及实作教学
备份类别
1. 完整数据备份
简介:
备份整个数据库,恢复时恢复所有。优点是简单,缺点是数据量太大,非常耗时。但其好处是在还原数据库时,也只要将整个数据库从一份数据库备份还原到SQL Server中即可。它是其他备份的基础,再做其他备份之前,必须得先做此方式的备份。
2. 差异数据备份
简介:
所谓增量,就是以某个起始时间点的全量数据为基础,备份该时间点以后的数据。而起始时间点的全量数据,就是通过完整备份而为的。差异备份往往也称"增量备份",所需要的备份时间和备份空间都比完整备份少,所以此方式最合适作为经常性的备份方式。
3. 事务日志备份
简介:
该备份是备份事务记录文件的内容,由于事务日志文件只会记录我们在前一次数据库备份或事务日志记录备份之后,对数据库所做的变动过程,也就是只记录某时间段的数据库变动情况,因此在做事务记录备份之前,必须做一次完全的数据库备份。如果你设置了恢复模式为【简单】,你将无法使用【事务日志】备份。
备份操作方式
- 连接上目标数据库,在对象资源管理器找到"管理",选择维护计划,右键点击维护计划向导,并给维护计划命名

- 点击下一步创建维护计划

- 输入设定的计划名称。这里可设定后续任务是否统一安排或单独安排。若选择统一安排点击下方更改进行设定运行时间。建议选择单独计划,不同备份方式不同频率运行


- 勾选要进行的任务,这里选择三种备份数据库的方式,点击下一步

- 开始逐一配置任务,下一步

- 选择需要备份的数据库,并且配置运行计划,配置界面如步骤3图2所示,点击下一步

- 后续任务配置界面跟步骤5相同,不同备份方式请设置不同运行计划的执行时间和频率,可在目标中设定不同的备份文件存放路径


- 针对事务日志备份,当数据库的恢复模式为简单模式时不可进行日志备份。建议将数据库的恢复模式改成完整模式再进行日志备份
- 设定完备份相关数据后,点击下一步完成维护计划设定



- 建立完成维护计划后,可在"管理"->"维护计划"中看到新增的备份计划,并且可以再次进行修改


备份注意事项
数据库长期备份会积压过多的旧备份文件,可通过添加任务清除
**右击修改维护计划,从工具箱中拖动清除历史记录任务、清除维护任务到右侧空白处,设定运行时间定时执行 **
将三个任务连线, 双击清除等任务可设定清除的文件夹及备份文件的保留时间。 注意清除的文件格式,完整和差异的备份文件为bak格式,事务日志为trn格式。


还原备份
- 选择对应数据库,右键,选择"任务"->"还原"->"数据库"

- 勾选要还原的的备份集,点击"确定"

- 等待还原成功

实时备份数据库
当因个案异动、客户需求导致的对数据库产生的增删改查等操作,需要先行备份数据库。
- 选择需要异动的数据库,右键,选择"任务"->"备份"

- 建议选择完整备份,选择备份路径后点击确定按钮,完成实时备份

- 备份完毕数据库后再进行数据库异动处理
三、Oracle数据库
备份实作教学
备份操作方式
1. 备份前设定
使用sqldeveloper(或其他Oracle数据库工具)更改系统参数。执行下面语句:
ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE SCOPE=BOTH;
目的:Oracle 使用exp汇出资料时,不会导出空表,更改之后,新创立的table使用exp指令也可以输出了。
2. 获取TNS名称
- 开启Oracle的NetManager

- 取得TNS名称,一般为smesdb,有时也会被设定为其它名称:mesdb、orcl、oracle。请优先确保获取的名称可以连线到Oracle

3. 增加自动备份Oracle的批处理文件
请先修改DataBase备份目录、账号、密码、TNSName等信息,并保证能够连接上Oracle数据库
exp [oracle账号]/[oracle密码]@[TNS名称]
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo 2. 自动删除7天前的备份。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set nls_lang=american_america.al32utf8
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::设置用户名、密码和要备份的数据库。
::set USER=system
::set PASSWORD=sys
::set DATABASE=database
::创建备份目录。
if not exist "D:\backup\data" mkdir D:\backup\data
if not exist "D:\backup\log" mkdir D:\backup\log
set DATADIR=D:\backup\data\
set LOGDIR=D:\backup\log\
echo %LOGDIR%
echo %BACKUPDATE%
echo %DATADIR%
exp user/password@tnsname file='%DATADIR%exp_user_%BACKUPDATE%.dmp' log='%LOGDIR%exp_user_%BACKUPDATE%.log' statistics=none
::删除7天前的备份。
forfiles /p %DATADIR% /d -7 /s /m *.* /c "cmd /c del @path"
forfiles /p %LOGDIR% /d -7 /s /m *.* /c "cmd /c del @path"
4. 试运行批处理文件
备份完成后,DataBase备份目录中,检查是否存在备份文件,如果存在,则运行成功。
5. 建立自动执行计划
- 在Windows管理工具中找到"任务计划程序"

- 打开"任务计划程序",选择"创建基本任务"

- 输入任务名称以及描述,点击下一步

- 选择触发事件,建议每天备份一次,点击下一步

- 选择任务开始时间,点击下一步

- 选择启动程序,点击下一步

- 点击浏览选中要执行的批处理文件,点击下一步

- 确认信息正确,点击完成

- 创建完成后,即可在任务计划程序库中查看到

- 双击任务,勾选"不管用户是否登录都要运行",点击确定保存,右键任务点击"运行"即可试运行

还原备份
- 先删除需要导入的用户
drop user 用户名 cascade;
- 通过
imp 用户名/密码@TNSName full=y file=导入文件绝对路径\文件名.dmp ignore=y
进行还原
实时备份数据库
当因个案异动、客户需求导致的对数据库产生的增删改查等操作,需要先行备份数据库。
- 通过cmd执行以下语句
exp 用户名/密码@TNSName file=D:\DB_backup\备份文件名.dmp log=D:\DB_backup\备份日志名.log owner=用户名 STATISTICS=NONE
- 确认备份成功