DB2 备份 恢复 详细测试
本文测试环境:Windows XP、IBM DB2 Express V9.5、 DB2 Quest Center V9.5 在这里举个应用场景以说明数据库恢复备份的思路: 那么假设我们周一晚上做了一个数据库的备份,周二中午 12 点数据库存储介质出现了故障。如何能够实现恢复呢 ? 那么首先是把数据库
本文测试环境:Windows XP、IBM DB2 Express V9.5、 DB2 Quest Center V9.5 那么假设我们周一晚上做了一个数据库的备份,周二中午12
点数据库存储介质出现了故障。如何能够实现恢复呢
?
那么首先是把数据库恢复到我们备份的那个时刻(周一晚上),但是备份之后和周二
12
点之间对数据库已经做的交易(事物)怎么办呢?这就需要用到数据库日志,因为一旦交易提交,我们对数据库做的
SQL
(
insert
、
update
、
delete
等)都会记录到数据库日志中。所以我们就用数据库日志(前提是数据库日志没有受到损坏)把备份之后和数据库崩溃之前的所有
SQL
操作重做(
redo
)一遍,。这就是数据库备份恢复的原理。
1
结果:
在这里举个应用场景以说明数据库恢复备份的思路:
1、DB2数据备份和恢复实验准备工作
Step1:创建测试数据库TestDB
CREATE
DATABASE
TestDB
2
ON
'
E:
'
3
USING CODESET GBK TERRITORY CN
4
WITH
'
DEMO TestDB
'
;
*** SCRIPT START: Connection: LENOVO-MILO-DB2-TOOLSDB (db2admin) Jul-09-2009 14:34:49 ***
CREATE DATABASE TestDB
ON 'E:'
USING CODESET GBK TERRITORY CN
WITH 'DEMO TestDB';
completed successfully.
DB20000I CREATE DATABASE命令成功完成。
Statement processed successfully in 32.42 secs.
*** SCRIPT END : Connection: NONE Jul-09-2009 14:35:21 ***
Step2:创建数据库管理表区间Data_SP(要先设置好路径和文件)
此处的路径为:E:/DB2_Train/TestDB/UserData
文件名设置为:TestDB.UserData
1
CREATE
REGULAR TABLESPACE Data_SP
2
3
PAGESIZE 4K
4
5
MANAGED
BY
DATABASE
6
7
USING(
FILE
'
E:/DB2_Train/TestDB/UserData/TestDB.UserData
'
2560
)
8
9
BUFFERPOOL IBMDEFAULTBP;
这里设置了初始化为4K * 2560 = 10MB的表空间
结果:TableSpace里面多了一个名为Data_SP表空间
Step3:创建测试表TestTable
1
CREATE
TABLE
TestTable
2
(
3
ID
INTEGER
NOT
NULL
GENERATED ALWAYS
AS
IDENTITY
(START
WITH
0
, INCREMENT
BY
1
, NO CACHE),
4
Message
VARCHAR
(
100
),
5
PRIMARY
KEY
(ID)
6
)
IN
Data_SP;
结果:
:
Step4:在TestTable下面插入测试数据
1
INSERT
INTO
TestTable(Message)
2
VALUES
(
'
测试表建立成功
'
)
--说明:建立测试表并插入数据是为了稍后验证数据库恢复的时候用的--
结果:
或者可以使用
1
db2stop force
2
db2start
3
db2 connect
to
TestDB
4
db2
select
*
from
TestTable
Step5:DB2数据库脱机备份和恢复实验
说明:我将脱机备份的文件放在了以下路径中:E:/DB2_Train/Offline
1、完全脱机备份数据库
1
db2stop force
//
停止及启动DB2实例
2
db2start
3
4
db2 connect
to
TestDB
5
//
指定当前活动的数据库为TestDB
6
7
db2
backup
db TestDB
to
"E:/DB2_Train/Offline"
8
//
完全备份数据库,(脱机,备份时间戳为20090709152004)
9
10
2、模拟灾难现场,强制删除TestDB数据库
1
db2
drop
db TestDB
3、根据数据库完全备份恢复数据库
1
//
利用离线完全备份恢复数据库
2
db2
restore
db TestDB
from
"E:/DB2_Train/Offline" taken at
20090709152004
4、查询表TestTable里面内容,这一块要重点关注,因为它涉及三种备份方式的区别
1
db2stop force
2
db2start
3
4
db2 connect
to
TestDB
5
6
db2
select
*
from
TestTable
Step6、DB2数据库增量备份和恢复实验
1、查看数据库配置文件
1
//
查询数据库配置文件里的参数TRACKMOD的状态,默认为OFF
2
db2 get db cfg
for
TestDB
2、修改数据库配置参数TRACKMOD,使之数据库进行增量备份
1
//
设置参数TRACKMOD为YES,使之数据库可以进行增量备份
2
db2
update
db cfg
for
TestDB USING TRACKMOD YES
3、更改参数后,必须需要完全离线全备份数据库
1
//
修改参数后需要全备份数据库,脱机,时间戳为20090709163256
2
db2
backup
db TestDB
to
"E:/DB2_Train/Online"
3、查看TestTable表的内容
4、插入测试数据
这里我要说明一下为什么要在表这里插入测试据?
状态 | TestTable表里MESSAGE的值 | 备注 |
全备份 | 测试表建立成功 | |
插入数据 |
测试表建立成功 开始增量数据库备份测试 |
|
增量备份 |
测试表建立成功 开始增量数据库备份测试 |
|
还原全备份 |
测试表建立成功 |
|
还原增量备份 |
测试表建立成功 开始增量数据库备份测试 |
1
--
插入数据 开始增量数据库备份测试--
2
INSERT
INTO
TestTable(Message)
3
VALUES
(
'
开始增量数据库备份测试
'
)
5、开始增量备份(脱机备份)
1
//
增量备份数据库,脱机,时间戳为20090709170956
2
db2
backup
db TestDB incremental
to
"E:/DB2_Train/Online"
6、模拟灾难,强制删除数据库
1
//
强制删除数据库,模拟灾难现场
2
db2
drop
db TestDB
7、恢复数据库
首先还原至完全离线备份状态,然后还原至增量离线备份状态
7.1、还原至完全离线备份状态
1
//
还原离线完全备份数据库,脱机,时间戳为20090709163256
2
db2
restore
db TestDB
from
"E:/DB2_Train/Online" taken at
20090709163256
这里要注意还原完全备份后TestTable表里Message的值,也是为什么要加入测试数据的原因
7.2、还原至增量离线备份状态
1
//
--
注意:下述语句中,有一个 automatic ,它表示无论有多少个增量备份,系统将全自动检索恢复数据库的顺序并自动恢复数据库。如果没有 automatic ,则需要多次手动恢复数据库,很麻烦而且容易出错
2
db2
restore
db TestDB incremental automatic
from
"E:/DB2_Train/Online" taken at
20090709170956
3
//
然后提示想继续吗y
OR
n,然后点击y进行恢复
4
Step7、DB2联机备份和恢复实验
联
机备份数据库可以使数据库在备份的同时仍然保持在可用状态。要让数据库支持联机备份,必须更改数据库的日志归档方式。在脱机备份模式下,数据库采用循环日
志方式记录数据库日志,在联机备份模式下,数据库则采用归档日志的方式备份数据库日志。另外,对于联机备份的数据库来说,
活动日志和归档日志就很重要了,一定要经常备份、保存,像银行多数使用的是归档日志的方式,因为银行的数据关乎到民生的生活,哪怕是突然间断电了,数据库崩溃了,但是每一笔的银行交易都需要时时刻刻把交易记录保存下来,所以这里的联机备份模式就很适合这类的应用场景
1、实验开始之前,最好先重新启动数据库实例,并且连接到需要做联机备份的数据库,此例数据库为TestDB
1
db2stop force
2
db2start
3
db2 connect
to
TestDB
2、开始插入测试数据,此处为“开始联机备份恢复的测试”
1
--
开始联机备份恢复测试--
2
INSERT
INTO
TestTable(Message)
3
VALUES
(
'
开始联机备份恢复测试
'
)
3、修改数据库配置文件参数,以启动联机备份模式
1
//
查询数据库配置文件
2
db2 get db cfg
for
TestDB
主要测试的参数为
参数名 | 修改前 | 修改后 |
TRACKMOD | ON | ON |
MIRRORLOGPATH | NULL | E:/DB2_Train/Logs |
LOGRETAIN | OFF | ON |
USEREXIT | OFF | ON |
1
//
参数TRACKMOD设置为ON
2
//
参
数MIRRORLOGPATH设置为E:/DB2_Train/Logs,还有一点需要补充的是,当删除数据库的时候,它会根据数据库配置文件来自动搜寻
相关的文件,因此这个文件夹下面的数据库日志文件同样也会被删除,所以需要将它复制一份放到别的路径下,此例放在了E:/DB2_Train
/Logs_Backup,一定要注意另外保存归档好这些数据库日志文件
3
//
参数LOGRETAIN设置为ON
4
//
参数USEREXIT设置为ON
5
db2
update
db cfg
for
TestDB USING TRACKMOD
ON
MIRRORLOGPATH E:/DB2_Train/Logs LOGRETAIN
ON
USEREXIT
ON
6
7
//
更新配置文件参数好,最好重新启动一下数据库,以使参数设置成功
8
db2stop force
9
db2start
10
db2 connect
to
TestDB
11
12
//
每当更改为联机备份模式的时候,系统会要求你强制离线完全备份一次数据库
4、执行离线完全备份(脱机,时间戳为20090710113202)
1
//
执行联机模式备份之前必须执行离线完全备份一次,否则数据库处于备份暂挂的不可用状态
2
db2
backup
db TestDB
to
"E:/DB2_Train/Online"
5、插入测试数据
1
--
开始联机备份恢复测试--开始增量备份--
2
INSERT
INTO
TestTable(Message)
3
VALUES
(
'
开始联机备份恢复测试--开始增量备份
'
)
6、执行联机在线增量备份,模拟应用在线(联机增量备份,时间戳为20090710115930)
1
//
这里不需要重新断开应用程序连接,就可在线增量备份
2
db2
backup
db TestDB online incremental
to
"E:/DB2_Train/Online"
7、插入测试数据
这里模拟发生了一个应用场景,假设我早上11点钟做了离线完全备份,12点钟做了在线增量备份,但是1点钟突然间发生了不可预见的灾难性事故,数据库崩溃了,在12点钟备份后到1点钟这个时间段我做了一个插入数据“开始联机备份恢复测试-数据库日志”
1
--
开始联机备份恢复测试-数据库日志--
2
INSERT
INTO
TestTable(Message)
3
VALUES
(
'
开始联机备份恢复测试-数据库日志
'
)
这里列出所有备份所对应的TestTable表里Message字段的值
名称 |
ID |
TestTable表里Message字段的值 |
离线完全备份 |
0 测试表建立成功 |
|
在线增量备份 |
0 测试表建立成功 |
|
数据库日志 |
0 测试表建立成功 |
8、保存归档好数据库日志文件
系统默认的数据库日志文件存放位置,此路径由参数MIRRORLOGPATH设置,这里为E:/DB2_Train/Logs
1
//
一定要注意将数据库日志文件复制一份放置到另一个路径上,此处为E:/DB2_Train/Logs_Backup,并且把它归档好,归档的方法下面所述
说
明:Windows操作系统下的数据库备份文件是嵌套在一系列文件夹之下的特殊结构。上例中,D:/DB2_Train
是指备份目录,TESTDB.0是指数据库名称为 TESTDB,DB2 是指实例名称,NODE0000 是指节点名称,CATN0000
是指编目名称,20070801是指备份发生的年月日,形如YYYYMMDD,181241是指备份发生的时间,精确到秒,也就是指 18 点 12
分 41秒,形如HHMMSS,最后的 001 则是备份文件的一个序列号。
9、本例数据库日志归档整理后的文件组织结构
1
//
日志文件最好和数据库备份文件对应起来,这样子到时候比较好查询
10、模拟灾难现场,强制删除数据库
1
//
删除数据库之前,最好先重启一下DB2实例,以断开应用程序和数据库的连接
2
db2stop force
3
db2start
4
//
强制删除数据库
5
db2
drop
db TestDB
11、根据离线完全备份恢复数据库
1
//
离线完全备份恢复数据库
2
db2
restore
db TestDB
from
"E:/DB2_Train/Online" taken at
20090710113202
12、根据在线增量备份恢复数据库
1
//
在线增量备份恢复数据库,记得加上automatic,系统会自动寻找相关的增量备份文件
2
db2
restore
db TestDB incremental automatic
from
"E:/DB2_Train/Online" taken at
20090710115930
3
//
然后根据系统提示,输入y确认恢复
13、前滚恢复数据库,并指定归档日志位置
1
//
前滚恢复数据库,最大程度的保留了数据
2
db2 ROLLFORWARD
DATABASE
TestDB
TO
END
OF
LOGS
AND
COMPLETE OVERFLOW
LOG
PATH("E:/DB2_Train/Logs_Backup/TestDB.
0
/DB2/NODE0000/CATN0000/
20090710
/
115930.001
")
14、查看数据完整性
1
//
查询TestTable表的内容,检查数据的完整性
2
db2 "
select
*
from
TestTable"
15、总结及展望
这
个教程花了我两天的时间来整理和撰写,但是还是感觉到对文章组织结构、逻辑推理方面还远远不够,这篇教程的用意是为了让自己更加深刻的理解DB2数据库的
各种备份和恢复类型,也作为一个知识字典,下次忘记语句了,还可以过来查找,希望自己更加的努力学习DB2数据库,它的魅力实在太大了。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

打开微信,在我中选择设置,选择通用后选择存储空间,在存储空间选择管理,选择要恢复文件的对话选择感叹号图标。教程适用型号:iPhone13系统:iOS15.3版本:微信8.0.24解析1首先打开微信,在我的页面中点击设置选项。2接着在设置页面中找到并点击通用选项。3然后在通用页面中点击存储空间。4接下来在存储空间页面中点击管理。5最后选择要恢复文件的对话,点击右侧的感叹号图标。补充:微信文件一般几天过期1要是微信接收的文件并没有点开过的情况下,那在七十二钟头之后微信系统会清除掉,要是己经查看了微信

Windows恢复环境(WinRE)是用于修复Windows操作系统错误的环境。进入WinRE后,您可以执行系统还原、出厂重置、卸载更新等操作。如果无法引导到WinRE,本文将指导您使用修复程序解决此问题。无法引导到Windows恢复环境如果无法引导至Windows恢复环境,请使用下面提供的修复程序:检查Windows恢复环境的状态使用其他方法进入Windows恢复环境您是否意外删除了Windows恢复分区?执行Windows的就地升级或全新安装下面,我们已经详细解释了所有这些修复。1]检查Wi

在抖音这个充满创意与活力的短视频平台上,我们不仅可以欣赏到各种精彩内容,还能与志同道合的朋友展开深入的交流。其中,聊天火花作为衡量双方互动热度的重要指标,常常在不经意间点燃我们与好友之间的情感纽带。然而,有时由于一些原因,聊天火花可能会断开,那么如果我们想要恢复聊天火花究竟该如何操作呢,这篇教程攻略就将为大家带来详细的内容攻略介绍,希望能帮助到大家。抖音聊天火花断了怎么恢复?1、打开抖音的消息页面,选择好友聊天。2、互发消息聊天。3、连续发消息3天,就可以获得火花标识。在3天基础上,互发图片或视

小米云相册怎么恢复到本地?小米云相册APP中是可以恢复到本地,但是多数的小伙伴不知道小米云相册如何恢复到本地中,接下来就是小编为用户带来的小米云相册恢复到本地方法图文教程,感兴趣的用户快来一起看看吧!小米云相册怎么恢复到本地1、首先打开小米手机中的设置功能,主界面选择【个人头像】;2、然后进入到小米账号的界面,点击【云服务】功能;3、接着跳转到小米云服务的功能,选择其中的【云备份】;4、最后在如下图所示的界面,点击【云相册】即可恢复相册到本地。

furmark怎么看?1、在主界面中设置“运行模式”和“显示模式”,还能调整“测试模式”,点击“开始”按钮。2、等待片刻后,就会看到测试结果,包含了显卡各种参数。furmark怎么算合格?1、用furmark烤机,半个小时左右看一下结果,基本上在85度左右徘徊,峰值87度,室温19度。大号机箱,5个机箱风扇口,前置两个,上置两个,后置一个,不过只装了一个风扇。所有配件都没有超频。2、一般情况下,显卡的正常温度应该在“30-85℃”之间。3、就算是大夏天周围环境温度过高,正常温度也是“50-85℃

在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

标题:hosts文件删除后如何恢复摘要:hosts文件是操作系统中非常重要的一个文件,用于将域名映射到IP地址。如果不小心将hosts文件删除了,可能会导致上网无法访问特定网站或者其他网络问题。本文将介绍如何在Windows和Mac操作系统中恢复被误删的hosts文件。正文:一、Windows操作系统中恢复hosts文件Windows操作系统中的hosts文

Emmo日记是一款专为记录心情而设计的软件,它为你提供了一个私密的日记空间,让你能够记录下每天的重要或琐碎的事情。通过独特的情绪识别技术,Emmo日记还能帮助你更好地理解和处理自己的情绪。但是有的时候发现自己日记被误删了以后却不知道该如何恢复,那么这篇教程攻略就将为大家带来详细的恢复攻略介绍,希望能帮助到各位有需要的小伙伴们。emmo怎么找回之前的日记?1、在emmo选择屏幕左下角【设置】图标点击进入;2、选择屏幕【数据备份与恢复】图标,进入操作即可。
