• 数据库异常恢复2-备份文件恢复(快速恢复的手动启动方式)


    (四) 备份文件备份恢复的概念

    本次所说的数据恢复有异于数据的导入导出

    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设置有效路径的情况

    1. --备份物理日志
    2. ontap -s -L 0
    3. --备份逻辑日志,会提示是否保留当前日志
    4. ontape -a

    2. 备份还原冷恢复操作

    • 冷恢复的过程中,会提示抢救没有备份的逻辑日志
    • 冷恢复时:如果创建chunk使用了link,可以使用link指向新的位置,但是大小和偏移量不能变
    • 冷恢复之后为静止状态,需要转为在线

    冷恢复全部文件

    1. #在datadbs5创建test1数据库,创建test1表,插入id=3的数据
    2. > create database test1 in datadbs5 with log;
    3. Database closed.
    4. Database created.
    5. > create table test1(id int);
    6. Table created.
    7. > insert into test1 values(1);
    8. 1 row(s) inserted.
    9. >
    1. [gbasedbt@VM-8-4-centos ~]$ ontape -s
    2. Your evaluation license will expire on 2024-11-02 00:00:00
    3. Please enter the level of archive to be performed (0, 1, or 2) 0
    4. 100 percent done.
    5. File created: /home/gbasedbt/gbase/backup/phy/VM-8-4-centos_1_L0
    6. Please label this tape as number 1 in the arc tape sequence.
    7. This tape contains the following logical logs:
    8. 59
    9. Program over.
    10. [gbasedbt@VM-8-4-centos ~]$ ontape -a
    11. Your evaluation license will expire on 2024-11-02 00:00:00
    12. Performing automatic backup of logical logs.
    13. Do you want to back up the current logical log? (y/n) y
    14. File created: /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000059
    15. Program over.
    1. [gbasedbt@VM-8-4-centos chunks]$ rm -rf datachk5
    2. [gbasedbt@VM-8-4-centos chunks]$ touch datachk5
    • 全部还原
    1. [gbasedbt@VM-8-4-centos chunks]$ ontape -r
    2. Your evaluation license will expire on 2024-11-02 00:00:00
    3. Restore will use level 0 archive file /home/gbasedbt/gbase/backup/phy/VM-8-4-centos_1_L0. Press Return to continue ...
    4. #是否继续还原
    5. Continue restore? (y/n)y
    6. #是否备份当前的遗留在线日志
    7. Do you want to back up the logs? (y/n)n
    8. Your evaluation license will expire on 2024-11-02 00:00:00
    9. #是否进行一级备份文件还原,没有一级备份,不需要
    10. Restore a level 1 archive (y/n) Restore a level 1 archive (y/n)
    11. #是否还原逻辑日志
    12. Do you want to restore log tapes? (y/n)y
    13. #还原之后将会处于静态模式,使用onmode -m进行还原

    3. 热恢复指定数据空间

    • 服务器在线时,且要恢复的数据空间有逻辑日志且不是关键数据空间才可以进行热恢复
      • 热恢复时如果dbspace为在线状态,则ontape恢将在线转为离线

    热恢复指定文件

    1. [gbasedbt@VM-8-4-centos chunks]$ dbaccess test1 -
    2. Your evaluation license will expire on 2024-11-02 00:00:00
    3. Database selected.
    4. > select * from test1;
    5. id
    6. 1
    7. 1 row(s) retrieved.
    8. > drop table test1;
    9. Table dropped.
    1. [gbasedbt@VM-8-4-centos chunks]$ ontape -r -D datadbs5
    2. Your evaluation license will expire on 2024-11-02 00:00:00
    3. DBspace 'datadbs5' is online; restoring 'datadbs5' will bring all chunks
    4. comprising the DBspace OFFLINE and will terminate all active
    5. transactions and queries accessing the DBspace.
    6. #是否将数据库置为离线状态进行还原
    7. OK to continue?y
    8. Restore will use level 0 archive file /home/gbasedbt/gbase/backup/phy/VM-8-4-centos_1_L0. Press Return to continue ...
    9. Archive Tape Information
    10. Tape type: Archive Backup Tape
    11. Online version: GBase Database Server Version 12.10.FC4G1TL
    12. Archive date: Sun Dec 24 16:23:39 2023
    13. User id: gbasedbt
    14. Terminal id: /dev/pts/1
    15. Archive level: 0
    16. Tape device: /home/gbasedbt/gbase/backup/phy/
    17. Tape blocksize (in k): 32
    18. Tape size (in k): system defined for directory
    19. Tape number in series: 1
    20. #是否需要还原上述信息
    21. Continue restore? (y/n)y
    22. Spaces to restore:1 [datadbs5 ]
    23. #是否需要还原一级备份
    24. Restore a level 1 archive (y/n) Restore a level 1 archive (y/n) n、
    25. #是否需要还原逻辑日志
    26. Do you want to restore log tapes? (y/n)y
    27. Roll forward should start with log number 59
    28. Restore will use log backup file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000059. Press Return to continue ...
    29. Rollforward log file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000059 ...
    30. Rollforward log file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000060 ...
    31. Rollforward log file /home/gbasedbt/gbase/backup/log/VM-8-4-centos_1_Log0000000061 ...
    32. Recommendation: continue the warm restore until log 62 is replayed.
    33. The last log that has been restored is: 61. If you want to stop the
    34. restore at this log, choose commit, otherwise, choose suspend.
    35. If you have not performed a backup that includes the log 62,
    36. perform a backup using the ontape -a command. Continue the suspended
    37. log restore using the ontape -l command.
    38. #选择y是还原当前日志信息中的操作,n是不还原当前日志中的操作
    39. Do you want to suspend (y), commit (n) or abort (CTRL/C) logical restore?
    40. n
    1. [gbasedbt@VM-8-4-centos chunks]$ dbaccess test1 -
    2. Your evaluation license will expire on 2024-11-02 00:00:00
    3. Database selected.
    4. > select * from test1;
    5. id
    6. 1
    7. 1 row(s) retrieved.
    8. >

    (九) 针对快速备份的补充——外部文件备份和手动启动快速恢复

    1. 外部文件备份恢复的概述

    • 外部文件备份针对的是正常情况下,将数据空间文件通过cp或者tar的方式备份到其他位置
    • 如果chunk空间出现问题,则通过onclear -ky关闭数据库
    • 进行日志抢救
    • 根据坏的chunk显示,删除或者移动、重命名旧的chunk空间名称
    • 在服务器没有启动时,通过cp或者tar的方式将之前备份的数据空间文件拷贝回来
    • 然后通过ontap -p -e命令将数据库手动启动到快速恢复阶段
    • 然后通过onstat -l前滚所有的逻辑日志,使数据库处于一致的状态
    • 注:外部恢复时,不能进行日志抢救工作,需要提前做
    • 抢救日志的前提是需要设置物理日志和逻辑日志的参数
      • onconfig文件的:TAPEDEV和LTAPEDEV

    2. 操作步骤1-修改参数并设置做备份

    1. --查看信息
    2. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ onstat -g dis
    3. Your evaluation license will expire on 2025-05-26 00:00:00
    4. On-Line -- Up 00:02:32 -- 258344 Kbytes
    5. There are 2 servers found
    6. Server : node1
    7. Server Number : 1
    8. Server Type : IDS
    9. Server Status : Up
    10. Server Version: GBase Database Server Version 12.10.FC4G1TL
    11. Shared Memory : 0x44000000
    12. GBASEDBTDIR : /home/gbasedbt/gbase
    13. ONCONFIG : /home/gbasedbt/gbase/etc/onconfig.node1
    14. SQLHOSTS : /home/gbasedbt/gbase/etc/sqlhosts.node1
    15. Host : iZ2ze5s78e4tanwe5q2znxZ
    16. --如上可知onconfig文件位置在/home/gbasedbt/gbase/etc/onconfig.node1
    17. --更改步骤不进行描述,更改结果如下
    18. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ cat gbase/etc/onconfig.node1 |grep -iE '^TAPEDEV|^LTAPEDEV'
    19. TAPEDEV /home/gbasedbt/BACKUP/BACK
    20. LTAPEDEV /home/gbasedbt/BACKUP/LOGICAL
    21. --按照参数值创建文件
    22. mkdir /home/gbasedbt/BACKUP/BACK
    23. mkdir /home/gbasedbt/BACKUP/LOGICAL
    24. chmod 777 /home/gbasedbt/BACKUP
    25. --重启数据库使参数值生效,生效结果如下
    26. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ onstat -g cfg|grep EDEV
    27. Your evaluation license will expire on 2025-05-26 00:00:00
    28. TAPEDEV /home/gbasedbt/BACKUP/BACK
    29. LTAPEDEV /home/gbasedbt/BACKUP/LOGICAL
    1. --系统备份
    2. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ ontape -s -L 0
    3. Your evaluation license will expire on 2025-05-26 00:00:00
    4. 100 percent done.
    5. File created: /home/gbasedbt/BACKUP/BACK/iZ2ze5s78e4tanwe5q2znxZ_1_L0
    6. Please label this tape as number 1 in the arc tape sequence.
    7. This tape contains the following logical logs:
    8. 26
    9. Program over.
    10. --逻辑备份
    11. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ ontape -a
    12. Your evaluation license will expire on 2025-05-26 00:00:00
    13. Performing automatic backup of logical logs.
    14. Do you want to back up the current logical log? (y/n) y
    15. File created: /home/gbasedbt/BACKUP/LOGICAL/iZ2ze5s78e4tanwe5q2znxZ_1_Log0000000026
    16. Program over.

    3. 操作步骤2-根据数据空间制定相应计划

    1. --查看当前的数据空间
    2. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ onstat -d
    3. Your evaluation license will expire on 2025-05-26 00:00:00
    4. On-Line -- Up 00:00:52 -- 250152 Kbytes
    5. Dbspaces
    6. address number flags fchunk nchunks pgsize flags owner name
    7. 452a5028 1 0x70001 1 2 2048 N BA gbasedbt rootdbs
    8. 453bd308 2 0x60001 2 1 2048 N BA gbasedbt llogdbs
    9. 453bd538 3 0x1070001 3 1 2048 N PBA gbasedbt plogdbs
    10. 453bd768 4 0x60001 4 2 16384 N BA gbasedbt datadbs1
    11. 453bd998 5 0x42001 5 1 16384 N TBA gbasedbt tempdbs1
    12. 453bdbc8 6 0x60011 6 1 32768 N BBA gbasedbt bindbs
    13. 453bddf8 7 0x68001 7 1 2048 N SBA gbasedbt sbdbs
    14. 52c7c028 8 0x60001 8 1 16384 N BA gbasedbt datadbs2
    15. 8 active, 2047 maximum
    16. Note: For BLOB chunks, the number of free pages shown is out of date.
    17. Run 'onstat -d update' for current stats.
    18. Chunks
    19. address chunk/dbs offset size free bpages flags pathname
    20. 452a5258 1 1 0 100000 80759 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootdbs
    21. 52c7c258 2 2 0 1024000 123947 PO-B-- /home/gbasedbt/gbase/node1_dbs/llogdbs
    22. 52c7d028 3 3 0 1024000 0 PO-BE- /home/gbasedbt/gbase/node1_dbs/plogdbs
    23. 52c7e028 4 4 0 128000 125489 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1
    24. 52c7f028 5 5 0 128000 127947 PO-B-- /home/gbasedbt/gbase/node1_dbs/tempdbs1
    25. 52c80028 6 6 0 1024000 ~64000 64000 POBB-- /home/gbasedbt/gbase/node1_dbs/bindbs
    26. 52c81028 7 7 0 1024000 955003 955004 POSB-- /home/gbasedbt/gbase/node1_dbs/sbdbs
    27. Metadata 68943 51302 68943
    28. 52c82028 8 8 0 18750 17551 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs2
    29. 52c83028 9 1 0 50000 36971 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootchk2
    30. 52c84028 10 4 0 250000 249997 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1_2
    31. 10 active, 32766 maximum
    32. NOTE: The values in the "size" and "free" columns for DBspace chunks are
    33. displayed in terms of "pgsize" of the DBspace to which they belong.
    34. Expanded chunk capacity mode: always
    • 由于数据空间有限,所以本次以rootdbs数据空间和数据空间datadbs2为测试案例

    4. 操作步骤3-在datadbs2中创建初始数据库、表和数据

    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ ~]$ dbaccess test -
    2. Your evaluation license will expire on 2025-05-26 00:00:00
    3. Database selected.
    4. > create database test3 in datadbs2 with log;
    5. Database closed.
    6. Database created.
    7. Elapsed time: 0.535 sec
    8. > create table test(id int);
    9. Table created.
    10. Elapsed time: 0.002 sec
    11. > insert into test values(1),(3),(10),(11),(11),(11),(11),(11),(11);
    12. 9 row(s) inserted.
    13. > select * from test;
    14. id
    15. 1
    16. 3
    17. 10
    18. 11
    19. 11
    20. 11
    21. 11
    22. 11
    23. 11
    24. 9 row(s) retrieved.
    25. Elapsed time: 0.032 sec

    5. 操作步骤4-阻塞数据库对数据文件进行备份

    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ls -l
    2. total 16888028
    3. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 bindbs
    4. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 datadbs1
    5. -rw-rw---- 1 gbasedbt gbasedbt 4096000000 Jun 20 21:06 datadbs1_2
    6. -rw-rw---- 1 gbasedbt gbasedbt 307200000 Jun 20 21:06 datadbs2
    7. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 llogdbs
    8. -rw-rw-r-- 1 gbasedbt gbasedbt 0 Jun 17 13:42 plog2
    9. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 plogdbs
    10. -rw-rw---- 1 gbasedbt gbasedbt 102400000 Jun 20 21:06 rootchk2
    11. -rw-rw---- 1 gbasedbt gbasedbt 204800000 Jun 20 21:06 rootdbs
    12. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 sbdbs
    13. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 tempdbs1
    14. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ mkdir test
    15. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ cp root* datadbs2 test/
    16. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ls -l test/
    17. total 600004
    18. -rw-rw---- 1 gbasedbt gbasedbt 307200000 Jun 20 21:06 datadbs2
    19. -rw-rw---- 1 gbasedbt gbasedbt 102400000 Jun 20 21:06 rootchk2
    20. -rw-rw---- 1 gbasedbt gbasedbt 204800000 Jun 20 21:06 rootdbs

    6. 操作步骤5-取消阻塞,并执行一些插入语句

    1. --取消阻塞
    2. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c unblock
    3. Your evaluation license will expire on 2025-05-26 00:00:00
    4. --插入两条数据
    5. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ dbaccess test3 -
    6. Your evaluation license will expire on 2025-05-26 00:00:00
    7. Database selected.
    8. > select * from test;
    9. id
    10. 1
    11. 3
    12. 10
    13. 11
    14. 11
    15. 11
    16. 11
    17. 11
    18. 11
    19. 9 row(s) retrieved.
    20. Elapsed time: 0.001 sec
    21. > insert into test values(12);
    22. 1 row(s) inserted.
    23. Elapsed time: 0.002 sec
    24. > insert into test values(13);
    25. 1 row(s) inserted.
    26. Elapsed time: 0.002 sec
    27. --切换日志和检查点
    28. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -l
    29. Your evaluation license will expire on 2025-05-26 00:00:00
    30. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c
    31. Your evaluation license will expire on 2025-05-26 00:00:00
    32. --插入第二批数据
    33. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ dbaccess test3 -
    34. Your evaluation license will expire on 2025-05-26 00:00:00
    35. Database selected.
    36. > insert into test values(23);
    37. 1 row(s) inserted.
    38. Elapsed time: 0.001 sec
    39. > insert into test values(24);
    40. 1 row(s) inserted.
    41. Elapsed time: 0.004 sec
    42. --再次进行切换日志和检查点
    43. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c
    44. Your evaluation license will expire on 2025-05-26 00:00:00
    45. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -l
    46. Your evaluation license will expire on 2025-05-26 00:00:00
    47. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onmode -c
    48. Your evaluation license will expire on 2025-05-26 00:00:00

    7. 操作步骤6-停止数据库,删掉旧的数据文件,将拷贝的文件改名

    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onclean -ky
    2. Your evaluation license will expire on 2025-05-26 00:00:00
    3. onclean: Cleaning up processes and resources for 'node1'...
    4. - Looking for the master daemon process: 1527798
    5. - Looking for the shmem key: 52574803
    6. - Looking for the shmem key: 52574804
    7. - Looking for semaphore ID: 131118
    8. - Looking for the shmem key: 52574801
    9. - Looking for the shmem key: 52574802
    10. - Looking for the shmem key: 52574805
    11. - Looking for the shmem key: 52574806
    12. - Looking for the shmem key: 52574807
    13. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ rm -rf rootdbs rootchk2 datadbs2
    14. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ cp test/* ./
    15. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ls -l
    16. total 16888032
    17. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 bindbs
    18. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 datadbs1
    19. -rw-rw---- 1 gbasedbt gbasedbt 4096000000 Jun 20 21:06 datadbs1_2
    20. -rw-rw---- 1 gbasedbt gbasedbt 307200000 Jun 20 21:08 datadbs2
    21. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:07 llogdbs
    22. -rw-rw-r-- 1 gbasedbt gbasedbt 0 Jun 17 13:42 plog2
    23. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:07 plogdbs
    24. -rw-rw---- 1 gbasedbt gbasedbt 102400000 Jun 20 21:08 rootchk2
    25. -rw-rw---- 1 gbasedbt gbasedbt 204800000 Jun 20 21:08 rootdbs
    26. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 sbdbs
    27. -rw-rw---- 1 gbasedbt gbasedbt 2097152000 Jun 20 21:06 tempdbs1
    28. drwxrwxr-x 2 gbasedbt gbasedbt 4096 Jun 20 21:06 test

    8. 操作步骤7-抢救日志

    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ontape -S
    2. Your evaluation license will expire on 2025-05-26 00:00:00
    3. Do you want to back up the logs? (y/n)y
    4. File created: /home/gbasedbt/BACKUP/LOGICAL/iZ2ze5s78e4tanwe5q2znxZ_1_Log0000000029
    5. File created: /home/gbasedbt/BACKUP/LOGICAL/iZ2ze5s78e4tanwe5q2znxZ_1_Log0000000030
    6. Program over.

    9. 操作步骤8-进行恢复

    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ontape -p -e
    2. Your evaluation license will expire on 2025-05-26 00:00:00
    3. Your evaluation license will expire on 2025-05-26 00:00:00
    4. External restore failed.
    5. External restore of critical dbspace 'llogdbs' failed.
    6. External restore cannot continue.
    7. Program over.
    8. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ ontape -l
    9. Your evaluation license will expire on 2025-05-26 00:00:00
    10. Logical restore failed
    11. rootdbs which is the ROOT DBspace
    12. is being restored and llogdbs has not been physically restored.
    13. If the ROOT DBspace or a DBspace containing the physical log or a logical
    14. log file is restored, then the ROOT DBspace and all DBspaces containing
    15. a logical log file or physical log file must be physically restored.
    16. Program over.
    17. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onstat -
    18. Your evaluation license will expire on 2025-05-26 00:00:00
    19. Fast Recovery -- Up 00:00:23 -- 250152 Kbytes

    10. 操作步骤9-重启检查数据空间、检查数据

    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onclean -ky
    2. Your evaluation license will expire on 2025-05-26 00:00:00
    3. onclean: Cleaning up processes and resources for 'node1'...
    4. - Looking for the master daemon process: 1529353
    5. - Looking for the shmem key: 52574803
    6. - Looking for the shmem key: 52574804
    7. - Looking for semaphore ID: 163846
    8. - Looking for the shmem key: 52574801
    9. - Looking for the shmem key: 52574802
    10. - Looking for the shmem key: 52574805
    11. - Looking for the shmem key: 52574806
    12. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ oninit -vy
    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ onstat -d
    2. Your evaluation license will expire on 2025-05-26 00:00:00
    3. On-Line -- Up 00:16:14 -- 258344 Kbytes
    4. Dbspaces
    5. address number flags fchunk nchunks pgsize flags owner name
    6. 452a5028 1 0x40001 1 2 2048 N BA gbasedbt rootdbs
    7. 453bd308 2 0x40001 2 1 2048 N BA gbasedbt llogdbs
    8. 453bd538 3 0x1040001 3 1 2048 N PBA gbasedbt plogdbs
    9. 453bd768 4 0x40001 4 2 16384 N BA gbasedbt datadbs1
    10. 453bd998 5 0x42001 5 1 16384 N TBA gbasedbt tempdbs1
    11. 453bdbc8 6 0x40011 6 1 32768 N BBA gbasedbt bindbs
    12. 453bddf8 7 0x48001 7 1 2048 N SBA gbasedbt sbdbs
    13. 52c7c028 8 0x40001 8 1 16384 N BA gbasedbt datadbs2
    14. 8 active, 2047 maximum
    15. Note: For BLOB chunks, the number of free pages shown is out of date.
    16. Run 'onstat -d update' for current stats.
    17. Chunks
    18. address chunk/dbs offset size free bpages flags pathname
    19. 452a5258 1 1 0 100000 80759 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootdbs
    20. 52c7c258 2 2 0 1024000 123947 PO-B-- /home/gbasedbt/gbase/node1_dbs/llogdbs
    21. 52c7d028 3 3 0 1024000 0 PO-BE- /home/gbasedbt/gbase/node1_dbs/plogdbs
    22. 52c7e028 4 4 0 128000 125489 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1
    23. 52c7f028 5 5 0 128000 127947 PO-B-- /home/gbasedbt/gbase/node1_dbs/tempdbs1
    24. 52c80028 6 6 0 1024000 ~63984 64000 POBB-- /home/gbasedbt/gbase/node1_dbs/bindbs
    25. 52c81028 7 7 0 1024000 955003 955004 POSB-- /home/gbasedbt/gbase/node1_dbs/sbdbs
    26. Metadata 68943 51302 68943
    27. 52c82028 8 8 0 18750 17551 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs2
    28. 52c83028 9 1 0 50000 36955 PO-B-- /home/gbasedbt/gbase/node1_dbs/rootchk2
    29. 52c84028 10 4 0 250000 249997 PO-B-- /home/gbasedbt/gbase/node1_dbs/datadbs1_2
    30. 10 active, 32766 maximum
    31. NOTE: The values in the "size" and "free" columns for DBspace chunks are
    32. displayed in terms of "pgsize" of the DBspace to which they belong.
    33. Expanded chunk capacity mode: always
    34. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$
    1. [gbasedbt@iZ2ze5s78e4tanwe5q2znxZ node1_dbs]$ dbaccess test3 -
    2. Your evaluation license will expire on 2025-05-26 00:00:00
    3. Database selected.
    4. > select * from test;
    5. id
    6. 1
    7. 3
    8. 10
    9. 11
    10. 11
    11. 11
    12. 11
    13. 11
    14. 11
    15. 12
    16. 13
    17. 23
    18. 24
    19. 13 row(s) retrieved.
    20. Elapsed time: 0.003 sec
    21. >
  • 相关阅读:
    在安装Centos时如何选择磁盘的分区?
    vue3/vue2的兄弟组件的传值
    Mangopi MQ-R:T113-s3(四)Tina系统 适配LCD屏幕
    SDXL微调5分钟入门
    Qt 简约美观的加载动画 第九季
    PTA天梯赛训练 7-8 查验身份证 (15分)
    面向对象思想
    【即将开源】⽤于3D激光雷达SLAM闭环检测的词袋模型BoW3D
    零零信安-D&D数据泄露报警日报【第44期】
    vue 02 Vue模板语法
  • 原文地址:https://blog.csdn.net/qq_59083851/article/details/139843093