(四) 备份文件备份恢复的概念
本次所说的数据恢复有异于数据的导入导出
1. 备份工具
gbase8s数据库提供了两种工具进行完成系统物理备份、逻辑日志备份和系统恢复:ontape和onbar
- ontape:提供了基本的系统物理备份、日志备份和恢复能力,其规定必须使用命令行且必须是gbase8s用户
-
- 优点:容易使用
- 缺点:效率相对较低,无法并行
- onbar:可以结合其他存储管理软件进行工作,也可以使用第三方的存储管理软件进行数据库的备份和恢复
-
- 可以将数据库实例恢复到某个时间点
- 可以恢复到某个日志文件
- onbar备份和恢复的性能可以进行监控
- 如果有多个带库驱动器,onbar的备份和恢复可以并行
- 两者的备份和恢复过程相同
- 由于硬件问题,一般使用ontape备份较多
2. 备份的参数
备份会涉及到物理日志和逻辑日志的备份,关于这两个文件的参数如下:
- 物理日志:
-
- TAPEDEV:物理备份的设备路径,如果此处设置了路径,则自动备份和手动备份时会默认选择此路径,也可以手动指定备份路径
- TAPEBLK:磁带写的块大小,可以不改动
- TAPESIZE:磁带或者文件大小,可以不改动
- 逻辑日志
-
- LTAPEDEV:逻辑日志的备份路径
-
-
- 如果设置为/dev/null:则逻辑日志切换后,则会立刻设置为可使用状态,即会丢失逻辑日志备份的机会,逻辑日志中的信息回永远丢失。
- 如果设置为有效路径:则逻辑日志切换后,会设置为待备份状态
- 如果不备份可以设置为/dev/null,如果备份,则需要设置有效路径,且需要定期进行备份逻辑日志,否则逻辑日志写满会阻塞所有的线索
-
-
- LTAPEBLK:块大小,可以不改动
- LTAPSIZE:磁带文件大小,可以不改动
3. 备份的级别
gbase8s的系统备份有三个不同的级别:
- 零级备份:一个基础的备份,包含了在备份命令执行时数据库服务器或者某个数据空间上所有数据的一个拷贝
- 一级备份:包含最后一次零级备份之后所修改的那些数据的拷贝
- 二级备份:包含最后一次零级备份或一级备份之后所修改的那些数据的拷贝
4. 备份启动后对当前数据库状态的检查
- 内部准备,决定是否开始备份
-
- 开启备份后,数据库服务器会临时冻结住逻辑日志的状态,并检查逻辑日志空间
-
-
- 如果剩余的空间低于总数据空间的一半,服务器会中断备份,需要备份逻辑日志,然后再重新执行备份
- onbar的备份工具会自动停止备份,然后进行备份逻辑日志备份,然后重新尝试备份
-
-
- 上述通过检验后,会进行检查点操作,检查点标记了备份的同步点,即哪些页在检查点时刻是一致的。
-
-
- 检查后,服务器通过时间戳判断哪些页是需要备份的,而在时间戳之后创建的页面则不会被备份,物理日志修改前的数据页将备份
-
-
- 服务器会创建一个列表,这个列表包含了每个chunk上需要拷贝备份的页面,在备份检查点时,chunk中没有使用的页不会被备份
- 检查后,后续如果有用户发出更新操作的设计
-
- 备份检查点发出后,如果有用户进行数据库更新操作,
-
-
- 数据库会在指定的dbspacetemp参数指定的临时dbspace中创建临时表,用来存放修改前的记录
- 如果dbspace上没有足够的空间,备份会被终止
-
5. ontape过程中dbspace被备份的顺序
- 首先在磁带上生成控制页的信息,包括备份中包含的dbspace的列表、备份级别、备份的时间戳和日志信息
- 然后备份系统保留页
- 如果是零级备份,在备份时,会执行一次checkpoint,在执行checkpoint时,open事务将会被备份
- 如果系统中包含blobspace,下一步会备份这部分数据库
-
- 每个blobspace部分会包含一个磁带控制页,用来记录这些备份的空间中chunks的映射关系
- 开始备份blobspace时,新的blobspace将会被挂起,直到blobspace备份结束
- 只备份使用过的blobspace页,而不是所有的页
- 普通的dbspace并不会按照特定的顺序进行备份,每个dbspace部分会包含一个磁带控制页,用来记录这些备份的空间chunks的映射关系。在执行checkpoint时没有使用的页面不会被备份
- 当最后一个chunk的最后一个使用的页面备份结束之后,会写一个
(五) 其他特殊对象的备份
1. 简单大对象的日志备份
当使用simple binary-large-object简答大对象数据空间时,需要考虑日志
- blob数据的更新不写日志,当对blob进行更新时,会同时保留旧的blobpage和新的blobpage,而且更新时会在逻辑日志中写入free-map page和free-map list page的记录
- 只有当含有free-map page和free-map list page记录的逻辑日志被备份后,旧的blobpage才会被释放
- 为了保证blobpage尽快释放,需要尽快备份日志
- 而且针对blob,如果新增的blbospace和chunk,增加后不能马上使用,需要新增过程中的逻辑日志被切换才可以使用,可以onmode -l切换
2. 智能大对象的备份
智能大对象的备份分为两部分:元数据和智能大对象子系统
- 元数据的备份:双重比较确定需要备份的页面
-
- 不管智能大对象做几级备份,都需要去读large-object header页面,在内存中生成一个需要备份的页面列表
- 对第一轮检查出来的需要备份的页面,比较之前系统备份时的时间戳、当前系统的时间戳和页面的时间戳:落在备份时间戳和当前时间戳的页面时间戳筛选出来
- 针对大对象的修改,用户可以通过page head,也可以不通过,所以上述第一轮检查不能完全筛选出来需要备份的页面,所以进行了第二轮时间戳的比较
- 智能大对象子系统的备份:
-
- 在sbspace撒花姑娘加锁,读取large-object header partition中的信息,生成需要备份的列表,这些列表也可称作backup descriptor page
- 这些列表被发送到数据库服务器的备份线索,然后扫描和检索这些表
- 在这个过程中,可能会用到large buffer writes,备份线索会把这些页面送到客户端程序
- sbspace的页面备份顺序如下,backup descriptor pages是一种特殊的结构,它用来记录所备份用户数据的偏移量和大小
(六) 逻辑日志备份
1. 逻辑日志的内容和逻辑备份的概述
- 逻辑日志:记录了检查点、DDL语句以及数据库的插入更新操作
-
- 逻辑日志初始化时位于rootdbs上,大多数情况下会新建一个单独存放逻辑日志的数据空间
- 逻辑日志是循环使用的,当逻辑日志使用完毕,会重新开始写第一个逻辑日志文件,其前提是当重写第一个逻辑日志文件时,必须已经被备份
- 逻辑日志备份是把一个或多个逻辑日志文件复制到磁盘或磁带的过程
2. 逻辑备份的重要性
- 提供了恢复所有的事务的能力:恢复分为物理恢复和逻辑恢复
-
- 物理恢复是从备份文件中恢复数据,但是备份文件只存在备份时存在的数据,而在备份时间之后的数据并不包含在物理备份文件中
- 备份文件之后的数据操作都存放在逻辑日志中,如果不备份逻辑日志,则备份文件之后的所有数据都会丢失
- 避免了逻辑日志写满阻塞所有线索的运行:
-
- 日志文件在全部使用之后,需要复用,而在复用之前,需要对已经使用的逻辑日志文件进行备份,如果不备份,服务器所有命令都要被阻塞,直到逻辑日志备份完成
- 如果配置参数LTAPEDEV设置为/dev/null时,不需要对逻辑日志进行备份,逻辑日志写满后会自动标记为已经备份。可以通过onmode -wf和onmode -wm动态修改
- 防止逻辑日志文件所在的磁盘损坏导致数据库无法修复:
-
- 假设设置为/dev/null,如果日志文件所在的磁盘失败,则所有逻辑日志都会丢世,如果使用了备份,则恢复时,可以尽可能的恢复数据,只有仍没有备份的日志文件包含的事务不能恢复
- 可以使用HDR或者RSS技术建立一个备份系统
- 也可以对日志chunk做镜像,当主chunk失败,镜像的chunk仍可以使用,但是镜像chunk不能在同一块磁盘上
- 许多类型的恢复需要追加逻辑日志:恢复工具和恢复方法不同时,可能需要逻辑日志完成一个完整的恢复
-
- 恢复单个dbspace时,逻辑日志可以从备份的时间点追加到当前的时间
3. 逻辑日志的备份策略
- 按需备份:如果使用ontape进行备份,也称作是手动备份
-
- 他会备份所有的没有备份的逻辑日志,但不备份当前的逻辑日志
- 如果使用了这种备份方式,需要多次执行备份命令,且确保两次备份之间,逻辑日志没有使用完毕,否则会阻塞所有的线索(进程)
- 连续日志备份:如果备份数据和日志的磁带设或文件是分开的,则使用使用连续日志备份(自动备份)
-
- 这种备份方式,会在逻辑日志切换或者写满后自动备份
- 注:恢复逻辑日志文件比直接从系统备份中恢复慢,所以当逻辑日志较多时,可以进行一级备份或者二级备份,避免恢复大量的逻辑日志文件
(七) 恢复
1. 恢复的要求
为了保证数据的安全,当进行数据恢复时,需要用到一些配置信息,需要和备份时的参数信息一致
- 配置参数文件:onconfig
- sqlhosts
- onbar恢复,需要emergency boot file(ixbar.#SERVERNUM#)和oncfg
2. 需要恢复的场景和各场景对冷恢复和热恢复的使用
场景
- 整个数据库服务器不能用,无法启动到在线状态
- 关键的dbspace不能用变成离线
- 需要将数据恢复到另一个实例
- 需要搭建HDR或者RSS
- 非关键的dbspace及其镜像的dbspace不能用
场景的恢复使用
- 冷恢复:冷恢复是指服务器处于离线状态,上述场景前四个为冷恢复
- 热恢复:非关键dbspace不能使用,可以在在线状态进行数据恢复,恢复期间,数据库仍可以交易
- 有时候为了尽快恢复服务器的使用,可能冷热混合使用,称为mixed restore,先冷恢复关键dbspace,再热恢复非关键dbspace
3. 针对恢复开始时对没有备份的逻辑日志进行日志抢救
- 在数据库没有启动或者无法启动时,仍然可以进行逻辑备份
- 只能备份那些没有被备份其没有被损坏的逻辑日志
- 抢救的日志和之前备份的日志可以一起回滚
- 在原来的数据库实例进行冷恢复时,如果仍然有没有抢救的日志,在恢复过程中,会提醒备份逻辑日志
4. 物理恢复和逻辑恢复
- 物理恢复是恢复0级备份、1级备份、2级备份中的dbspace和blobspace
- 逻辑恢复是指找到磁带上的逻辑日志备份,通过这些事务把数据恢复到失败前的状态
5. 特殊数据空间sbsapce的恢复过程
- 先从磁带上恢复元数据
- backup-descriptor control page列表列出了用户页面将要被恢复的目标去向,这些列表 的物理地址和extent大小被记录在in-memory表中
- 恢复的客户端程序从磁带上读取那些smart-large-object页面,服务器把他们写入到control page所指明的位置
(八) 备份操作
1. TAPEDEV和LTAPEDEV设置有效路径的情况
bash
--备份物理日志
ontap -s -L 0
--备份逻辑日志,会提示是否保留当前日志
ontape -a
2. 备份还原冷恢复操作
- 冷恢复的过程中,会提示抢救没有备份的逻辑日志
- 冷恢复时:如果创建chunk使用了link,可以使用link指向新的位置,但是大小和偏移量不能变
- 冷恢复之后为静止状态,需要转为在线
冷恢复全部文件
sql
#在datadbs5创建test1数据库,创建test1表,插入id=3的数据
> create database test1 in datadbs5 with log;
Database closed.
Database created.
> create table test1(id int);
Table created.
> insert into test1 values(1);
1 row(s) inserted.
>
bash
[gbasedbt@VM-8-4-centos ~]$ ontape -s
Your evaluation license will expire on 2024-11-02 00:00:00
Please enter the level of archive to be performed (0, 1, or 2) 0
100 percent done.
File created: /home/gbasedbt/gbase/backup/phy/VM-8-4-centos_1_L0
Please label this tape as number 1 in the arc tape sequence.
This tape contains the following logical logs:
59
Program over.
[gbasedbt@VM-8-4-centos ~]$ ontape -a
Your evaluation license will expire on 2024-11-02 00:00:00
Performing automatic backup of logical logs.
Do you want to back up the current logical log? (y/n) y
File created: /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000059
Program over.
bash
[gbasedbt@VM-8-4-centos chunks]$ rm -rf datachk5
[gbasedbt@VM-8-4-centos chunks]$ touch datachk5
- 全部还原
bash
[gbasedbt@VM-8-4-centos chunks]$ ontape -r
Your evaluation license will expire on 2024-11-02 00:00:00
Restore will use level 0 archive file /home/gbasedbt/gbase/backup/phy/VM-8-4-centos_1_L0. Press Return to continue ...
#是否继续还原
Continue restore? (y/n)y
#是否备份当前的遗留在线日志
Do you want to back up the logs? (y/n)n
Your evaluation license will expire on 2024-11-02 00:00:00
#是否进行一级备份文件还原,没有一级备份,不需要
Restore a level 1 archive (y/n) Restore a level 1 archive (y/n)
#是否还原逻辑日志
Do you want to restore log tapes? (y/n)y
#还原之后将会处于静态模式,使用onmode -m进行还原
3. 热恢复指定数据空间
- 服务器在线时,且要恢复的数据空间有逻辑日志且不是关键数据空间才可以进行热恢复
-
- 热恢复时如果dbspace为在线状态,则ontape恢将在线转为离线
热恢复指定文件
bash
[gbasedbt@VM-8-4-centos chunks]$ dbaccess test1 -
Your evaluation license will expire on 2024-11-02 00:00:00
Database selected.
> select * from test1;
id
1
1 row(s) retrieved.
> drop table test1;
Table dropped.
bash
[gbasedbt@VM-8-4-centos chunks]$ ontape -r -D datadbs5
Your evaluation license will expire on 2024-11-02 00:00:00
DBspace 'datadbs5' is online; restoring 'datadbs5' will bring all chunks
comprising the DBspace OFFLINE and will terminate all active
transactions and queries accessing the DBspace.
#是否将数据库置为离线状态进行还原
OK to continue?y
Restore will use level 0 archive file /home/gbasedbt/gbase/backup/phy/VM-8-4-centos_1_L0. Press Return to continue ...
Archive Tape Information
Tape type: Archive Backup Tape
Online version: GBase Database Server Version 12.10.FC4G1TL
Archive date: Sun Dec 24 16:23:39 2023
User id: gbasedbt
Terminal id: /dev/pts/1
Archive level: 0
Tape device: /home/gbasedbt/gbase/backup/phy/
Tape blocksize (in k): 32
Tape size (in k): system defined for directory
Tape number in series: 1
#是否需要还原上述信息
Continue restore? (y/n)y
Spaces to restore:1 [datadbs5 ]
#是否需要还原一级备份
Restore a level 1 archive (y/n) Restore a level 1 archive (y/n) n、
#是否需要还原逻辑日志
Do you want to restore log tapes? (y/n)y
Roll forward should start with log number 59
Restore will use log backup file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000059. Press Return to continue ...
Rollforward log file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000059 ...
Rollforward log file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000060 ...
Rollforward log file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000061 ...
Recommendation: continue the warm restore until log 62 is replayed.
The last log that has been restored is: 61. If you want to stop the
restore at this log, choose commit, otherwise, choose suspend.
If you have not performed a backup that includes the log 62,
perform a backup using the ontape -a command. Continue the suspended
log restore using the ontape -l command.
#选择y是还原当前日志信息中的操作,n是不还原当前日志中的操作
Do you want to suspend (y), commit (n) or abort (CTRL/C) logical restore?
n
sql
[gbasedbt@VM-8-4-centos chunks]$ dbaccess test1 -
Your evaluation license will expire on 2024-11-02 00:00:00
Database selected.
> select * from test1;
id
1
1 row(s) retrieved.
>
(九) 针对快速备份的补充------外部文件备份和手动启动快速恢复
1. 外部文件备份恢复的概述
- 外部文件备份针对的是正常情况下,将数据空间文件通过cp或者tar的方式备份到其他位置
- 如果chunk空间出现问题,则通过onclear -ky关闭数据库
- 进行日志抢救
- 根据坏的chunk显示,删除或者移动、重命名旧的chunk空间名称
- 在服务器没有启动时,通过cp或者tar的方式将之前备份的数据空间文件拷贝回来
- 然后通过ontap -p -e命令将数据库手动启动到快速恢复阶段
- 然后通过onstat -l前滚所有的逻辑日志,使数据库处于一致的状态
- 注:外部恢复时,不能进行日志抢救工作,需要提前做
- 抢救日志的前提是需要设置物理日志和逻辑日志的参数
-
- onconfig文件的:TAPEDEV和LTAPEDEV
2. 操作步骤1-修改参数并设置做备份
bash
--查看信息
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ onstat -g dis
Your evaluation license will expire on 2025-05-26 00:00:00
On-Line -- Up 00:02:32 -- 258344 Kbytes
There are 2 servers found
Server : node1
Server Number : 1
Server Type : IDS
Server Status : Up
Server Version: GBase Database Server Version 12.10.FC4G1TL
Shared Memory : 0x44000000
GBASEDBTDIR : /home/gbasedbt/gbase
ONCONFIG : /home/gbasedbt/gbase/etc/onconfig.node1
SQLHOSTS : /home/gbasedbt/gbase/etc/sqlhosts.node1
Host : iZ2ze5s78e4tanwe5q2znxZ
--如上可知onconfig文件位置在/home/gbasedbt/gbase/etc/onconfig.node1
--更改步骤不进行描述,更改结果如下
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ cat gbase/etc/onconfig.node1 |grep -iE '^TAPEDEV|^LTAPEDEV'
TAPEDEV /home/gbasedbt/BACKUP/BACK
LTAPEDEV /home/gbasedbt/BACKUP/LOGICAL
--按照参数值创建文件
mkdir /home/gbasedbt/BACKUP/BACK
mkdir /home/gbasedbt/BACKUP/LOGICAL
chmod 777 /home/gbasedbt/BACKUP
--重启数据库使参数值生效,生效结果如下
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ onstat -g cfg|grep EDEV
Your evaluation license will expire on 2025-05-26 00:00:00
TAPEDEV /home/gbasedbt/BACKUP/BACK
LTAPEDEV /home/gbasedbt/BACKUP/LOGICAL
bash
--系统备份
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ ontape -s -L 0
Your evaluation license will expire on 2025-05-26 00:00:00
100 percent done.
File created: /home/gbasedbt/BACKUP/BACK/iZ2ze5s78e4tanwe5q2znxZ_1_L0
Please label this tape as number 1 in the arc tape sequence.
This tape contains the following logical logs:
26
Program over.
--逻辑备份
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ ontape -a
Your evaluation license will expire on 2025-05-26 00:00:00
Performing automatic backup of logical logs.
Do you want to back up the current logical log? (y/n) y
File created: /home/gbasedbt/BACKUP/LOGICAL/iZ2ze5s78e4tanwe5q2znxZ_1_Log0000000026
Program over.
3. 操作步骤2-根据数据空间制定相应计划
bash
--查看当前的数据空间
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ onstat -d
Your evaluation license will expire on 2025-05-26 00:00:00
On-Line -- Up 00:00:52 -- 250152 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
452a5028 1 0x70001 1 2 2048 N BA gbasedbt rootdbs
453bd308 2 0x60001 2 1 2048 N BA gbasedbt llogdbs
453bd538 3 0x1070001 3 1 2048 N PBA gbasedbt plogdbs
453bd768 4 0x60001 4 2 16384 N BA gbasedbt datadbs1
453bd998 5 0x42001 5 1 16384 N TBA gbasedbt tempdbs1
453bdbc8 6 0x60011 6 1 32768 N BBA gbasedbt bindbs
453bddf8 7 0x68001 7 1 2048 N SBA gbasedbt sbdbs
52c7c028 8 0x60001 8 1 16384 N BA gbasedbt datadbs2
8 active, 2047 maximum
Note: For BLOB chunks, the number of free pages shown is out of date.
Run 'onstat -d update' for current stats.
Chunks
address chunk/dbs offset size free bpages flags pathname
452a5258 1 1 0 100000 80759 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootdbs
52c7c258 2 2 0 1024000 123947 PO-B-- /home/gbasedbt/gbase/node1_dbs/llogdbs
52c7d028 3 3 0 1024000 0 PO-BE- /home/gbasedbt/gbase/node1_dbs/plogdbs
52c7e028 4 4 0 128000 125489 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1
52c7f028 5 5 0 128000 127947 PO-B-- /home/gbasedbt/gbase/node1_dbs/tempdbs1
52c80028 6 6 0 1024000 ~64000 64000 POBB-- /home/gbasedbt/gbase/node1_dbs/bindbs
52c81028 7 7 0 1024000 955003 955004 POSB-- /home/gbasedbt/gbase/node1_dbs/sbdbs
Metadata 68943 51302 68943
52c82028 8 8 0 18750 17551 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs2
52c83028 9 1 0 50000 36971 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootchk2
52c84028 10 4 0 250000 249997 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1_2
10 active, 32766 maximum
NOTE: The values in the "size" and "free" columns for DBspace chunks are
displayed in terms of "pgsize" of the DBspace to which they belong.
Expanded chunk capacity mode: always
- 由于数据空间有限,所以本次以rootdbs数据空间和数据空间datadbs2为测试案例
4. 操作步骤3-在datadbs2中创建初始数据库、表和数据
sql
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ dbaccess test -
Your evaluation license will expire on 2025-05-26 00:00:00
Database selected.
> create database test3 in datadbs2 with log;
Database closed.
Database created.
Elapsed time: 0.535 sec
> create table test(id int);
Table created.
Elapsed time: 0.002 sec
> insert into test values(1),(3),(10),(11),(11),(11),(11),(11),(11);
9 row(s) inserted.
> select * from test;
id
1
3
10
11
11
11
11
11
11
9 row(s) retrieved.
Elapsed time: 0.032 sec
5. 操作步骤4-阻塞数据库对数据文件进行备份
bash
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ls -l
total 16888028
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 bindbs
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 datadbs1
-rw-rw---- 1 gbasedbt gbasedbt 4096000000 Jun 20 21:06 datadbs1_2
-rw-rw---- 1 gbasedbt gbasedbt 307200000 Jun 20 21:06 datadbs2
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 llogdbs
-rw-rw-r-- 1 gbasedbt gbasedbt 0 Jun 17 13:42 plog2
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 plogdbs
-rw-rw---- 1 gbasedbt gbasedbt 102400000 Jun 20 21:06 rootchk2
-rw-rw---- 1 gbasedbt gbasedbt 204800000 Jun 20 21:06 rootdbs
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 sbdbs
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 tempdbs1
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ mkdir test
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ cp root* datadbs2 test/
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ls -l test/
total 600004
-rw-rw---- 1 gbasedbt gbasedbt 307200000 Jun 20 21:06 datadbs2
-rw-rw---- 1 gbasedbt gbasedbt 102400000 Jun 20 21:06 rootchk2
-rw-rw---- 1 gbasedbt gbasedbt 204800000 Jun 20 21:06 rootdbs
6. 操作步骤5-取消阻塞,并执行一些插入语句
sql
--取消阻塞
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c unblock
Your evaluation license will expire on 2025-05-26 00:00:00
--插入两条数据
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ dbaccess test3 -
Your evaluation license will expire on 2025-05-26 00:00:00
Database selected.
> select * from test;
id
1
3
10
11
11
11
11
11
11
9 row(s) retrieved.
Elapsed time: 0.001 sec
> insert into test values(12);
1 row(s) inserted.
Elapsed time: 0.002 sec
> insert into test values(13);
1 row(s) inserted.
Elapsed time: 0.002 sec
--切换日志和检查点
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -l
Your evaluation license will expire on 2025-05-26 00:00:00
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c
Your evaluation license will expire on 2025-05-26 00:00:00
--插入第二批数据
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ dbaccess test3 -
Your evaluation license will expire on 2025-05-26 00:00:00
Database selected.
> insert into test values(23);
1 row(s) inserted.
Elapsed time: 0.001 sec
> insert into test values(24);
1 row(s) inserted.
Elapsed time: 0.004 sec
--再次进行切换日志和检查点
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c
Your evaluation license will expire on 2025-05-26 00:00:00
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -l
Your evaluation license will expire on 2025-05-26 00:00:00
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c
Your evaluation license will expire on 2025-05-26 00:00:00
7. 操作步骤6-停止数据库,删掉旧的数据文件,将拷贝的文件改名
bash
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onclean -ky
Your evaluation license will expire on 2025-05-26 00:00:00
onclean: Cleaning up processes and resources for 'node1'...
- Looking for the master daemon process: 1527798
- Looking for the shmem key: 52574803
- Looking for the shmem key: 52574804
- Looking for semaphore ID: 131118
- Looking for the shmem key: 52574801
- Looking for the shmem key: 52574802
- Looking for the shmem key: 52574805
- Looking for the shmem key: 52574806
- Looking for the shmem key: 52574807
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ rm -rf rootdbs rootchk2 datadbs2
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ cp test/* ./
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ls -l
total 16888032
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 bindbs
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 datadbs1
-rw-rw---- 1 gbasedbt gbasedbt 4096000000 Jun 20 21:06 datadbs1_2
-rw-rw---- 1 gbasedbt gbasedbt 307200000 Jun 20 21:08 datadbs2
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:07 llogdbs
-rw-rw-r-- 1 gbasedbt gbasedbt 0 Jun 17 13:42 plog2
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:07 plogdbs
-rw-rw---- 1 gbasedbt gbasedbt 102400000 Jun 20 21:08 rootchk2
-rw-rw---- 1 gbasedbt gbasedbt 204800000 Jun 20 21:08 rootdbs
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 sbdbs
-rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 tempdbs1
drwxrwxr-x 2 gbasedbt gbasedbt 4096 Jun 20 21:06 test
8. 操作步骤7-抢救日志
bash
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ontape -S
Your evaluation license will expire on 2025-05-26 00:00:00
Do you want to back up the logs? (y/n)y
File created: /home/gbasedbt/BACKUP/LOGICAL/iZ2ze5s78e4tanwe5q2znxZ_1_Log0000000029
File created: /home/gbasedbt/BACKUP/LOGICAL/iZ2ze5s78e4tanwe5q2znxZ_1_Log0000000030
Program over.
9. 操作步骤8-进行恢复
bash
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ontape -p -e
Your evaluation license will expire on 2025-05-26 00:00:00
Your evaluation license will expire on 2025-05-26 00:00:00
External restore failed.
External restore of critical dbspace 'llogdbs' failed.
External restore cannot continue.
Program over.
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ontape -l
Your evaluation license will expire on 2025-05-26 00:00:00
Logical restore failed
rootdbs which is the ROOT DBspace
is being restored and llogdbs has not been physically restored.
If the ROOT DBspace or a DBspace containing the physical log or a logical
log file is restored, then the ROOT DBspace and all DBspaces containing
a logical log file or physical log file must be physically restored.
Program over.
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onstat -
Your evaluation license will expire on 2025-05-26 00:00:00
Fast Recovery -- Up 00:00:23 -- 250152 Kbytes
10. 操作步骤9-重启检查数据空间、检查数据
bash
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onclean -ky
Your evaluation license will expire on 2025-05-26 00:00:00
onclean: Cleaning up processes and resources for 'node1'...
- Looking for the master daemon process: 1529353
- Looking for the shmem key: 52574803
- Looking for the shmem key: 52574804
- Looking for semaphore ID: 163846
- Looking for the shmem key: 52574801
- Looking for the shmem key: 52574802
- Looking for the shmem key: 52574805
- Looking for the shmem key: 52574806
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ oninit -vy
bash
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onstat -d
Your evaluation license will expire on 2025-05-26 00:00:00
On-Line -- Up 00:16:14 -- 258344 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
452a5028 1 0x40001 1 2 2048 N BA gbasedbt rootdbs
453bd308 2 0x40001 2 1 2048 N BA gbasedbt llogdbs
453bd538 3 0x1040001 3 1 2048 N PBA gbasedbt plogdbs
453bd768 4 0x40001 4 2 16384 N BA gbasedbt datadbs1
453bd998 5 0x42001 5 1 16384 N TBA gbasedbt tempdbs1
453bdbc8 6 0x40011 6 1 32768 N BBA gbasedbt bindbs
453bddf8 7 0x48001 7 1 2048 N SBA gbasedbt sbdbs
52c7c028 8 0x40001 8 1 16384 N BA gbasedbt datadbs2
8 active, 2047 maximum
Note: For BLOB chunks, the number of free pages shown is out of date.
Run 'onstat -d update' for current stats.
Chunks
address chunk/dbs offset size free bpages flags pathname
452a5258 1 1 0 100000 80759 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootdbs
52c7c258 2 2 0 1024000 123947 PO-B-- /home/gbasedbt/gbase/node1_dbs/llogdbs
52c7d028 3 3 0 1024000 0 PO-BE- /home/gbasedbt/gbase/node1_dbs/plogdbs
52c7e028 4 4 0 128000 125489 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1
52c7f028 5 5 0 128000 127947 PO-B-- /home/gbasedbt/gbase/node1_dbs/tempdbs1
52c80028 6 6 0 1024000 ~63984 64000 POBB-- /home/gbasedbt/gbase/node1_dbs/bindbs
52c81028 7 7 0 1024000 955003 955004 POSB-- /home/gbasedbt/gbase/node1_dbs/sbdbs
Metadata 68943 51302 68943
52c82028 8 8 0 18750 17551 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs2
52c83028 9 1 0 50000 36955 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootchk2
52c84028 10 4 0 250000 249997 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1_2
10 active, 32766 maximum
NOTE: The values in the "size" and "free" columns for DBspace chunks are
displayed in terms of "pgsize" of the DBspace to which they belong.
Expanded chunk capacity mode: always
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$
sql
[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ dbaccess test3 -
Your evaluation license will expire on 2025-05-26 00:00:00
Database selected.
> select * from test;
id
1
3
10
11
11
11
11
11
11
12
13
23
24
13 row(s) retrieved.
Elapsed time: 0.003 sec
>