IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    pdu完美支持金仓数据库恢复(KingbaseES)

    惜分飞发表于 2025-04-08 11:41:53
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:pdu完美支持金仓数据库恢复(KingbaseES)

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    最近朋友对pdu进行了一些完善,让其可以比较好的支持电科金仓数据库(KingbaseES)的v8/v9版本
    使用pdu直接unload数据

    [kingbase@xifenfei ~]$ isql -Usystem test
    Password for user system: 
    isql (V9.0)
    Licesen Type: SALES-企业版.
    Type "help" for help.
    
    test=# select version();
             version         
    -------------------------
     KingbaseES V009R002C010
    (1 row)
    
    test=# \dt
            List of relations
     Schema | Name  | Type  | Owner  
    --------+-------+-------+--------
     public | t_xff | table | system
    (1 row)
    
    test=# drop table walminer_contents;
    DROP TABLE
    test=# select * from t_xff;
     id |       name       
    ----+------------------
      1 | 汉字
      2 | xff测试
      3 | 惜分飞测试
      4 | www.xifenfei.com
    (4 rows)
    
    test=# insert into t_xff values(5,'www.xifenfie.com
    test'# www.orasos.com');
    INSERT 0 1
    test=# select * from t_xff;
     id |       name       
    ----+------------------
      1 | 汉字
      2 | xff测试
      3 | 惜分飞测试
      4 | www.xifenfei.com
      5 | www.xifenfie.com+
        | www.orasos.com
    (5 rows)
    
    test=# checkpoint;
    CHECKPOINT
    

    pdu直接unload恢复

    test.public=# b; 
    开始初始化...
     -pg_database:</data/kingbase/v9/data/global/1262>
    
    数据库:test 
          -pg_schema:</data/kingbase/v9/data/base/13856/2615>
          -pg_class:</data/kingbase/v9/data/base/13856/1259> 共132行
          -pg_attribute:</data/kingbase/v9/data/base/13856/1249> 共8863行
          模式:
            -->public 1张表
    
    数据库:kingbase 
          -pg_schema:</data/kingbase/v9/data/base/13857/2615>
          -pg_class:</data/kingbase/v9/data/base/13857/1259> 共131行
          -pg_attribute:</data/kingbase/v9/data/base/13857/1249> 共8855行
          模式:
            -->public 0张表
    PDU.public=# use test;    
    |----------------------------------------|
    |          模式             |  表数量    |
    |----------------------------------------|
    |    public                 |  1         |
    |----------------------------------------|
    test.public=# set public;
    |--------------------------------------------------|
    |               表名                  |  表大小    |
    |--------------------------------------------------|
    |    t_xff                            |  8.00 KB   |
    |--------------------------------------------------|
    
            仅显示表大小排名前 1 的表名
    test.public=# param exmode sql;
    -------------------------------------------------------------------
    |              参数                |             当前值           |
    -------------------------------------------------------------------
    |    startwal                      |                              |
    |    endwal                        |                              |
    |    starttime                     |                              |
    |    endtime                       |                              |
    |    resmode(Data Restore Mode)    |              TX              |
    |    exmode(Data Export Mode)      |              SQL             |
    ------------------------------------------------------------------
    test.public=# unload tab t_xff;
    正在解析表 <t_xff>. 已解析数据页: 1, 已解析数据: 5 条
    表名<t_xff>-</data/kingbase/v9/data/base/13856/16384> 解析完成, 1 个数据页 ,共计 5 条数据. 成功 5 条; 失败 0 条 
    COPY文件路径为:<test/public/t_xff.sql>
    
    test.public=# unload ddl;
    
    DDL导出完成. 文件路径: test/DDL/public_ddl.sql, 共计 1 张表
    

    查看恢复结果,证明可以完美恢复金仓中表的数据

    [root@xifenfei pdu]# cat test/public/t_xff.sql
    INSERT INTO t_xff VALUES(1,'汉字');
    INSERT INTO t_xff VALUES(2,'xff测试');
    INSERT INTO t_xff VALUES(3,'惜分飞测试');
    INSERT INTO t_xff VALUES(4,'www.xifenfei.com');
    INSERT INTO t_xff VALUES(5,'www.xifenfie.com
    www.orasos.com');
    [root@xifenfei pdu]# cat test/DDL/public_ddl.sql
    CREATE SCHEMA public;
    set search_path to public;
    CREATE TABLE t_xff(
            id int,
            name varchar
    );
    

    pdu恢复金仓数据库delete数据
    删除数据尝试恢复

    test=# delete from t_xff where id in(4,2);
    DELETE 2
    test=# checkpoint;
    CHECKPOINT
    test=# select * from t_xff;
     id |       name       
    ----+------------------
      1 | 汉字
      3 | 惜分飞测试
      5 | www.xifenfie.com+
        | www.orasos.com
    (3 rows)
    

    使用pdu恢复被删除数据

    PDU.public=# use test;
    |----------------------------------------|
    |          模式             |  表数量    |
    |----------------------------------------|
    |    public                 |  1         |
    |----------------------------------------|
    test.public=# set public;
    |--------------------------------------------------|
    |               表名                  |  表大小    |
    |--------------------------------------------------|
    |    t_xff                            |  8.00 KB   |
    |--------------------------------------------------|
    
            仅显示表大小排名前 1 的表名
    test.public=# scan t_xff;
    
    正在扫描表<t_xff>的删除记录...
    
    开始扫描归档目录
    |-起始文件<000000010000000000000005>
    |-终点文件<000000010000000000000009>
    
    正在扫描中
    
    -------------------------------------------------------------------
    当前为 事务号恢复 模式,扫描结果将以 事务号 为单位进行输出
    ---------------------------------------------------------------------
    
    读取到最后的日志段: 0/504EC68: 
    
    
    扫描结束,当前扫描的时间段为
    |-开始时间:2025-04-06 19:13:15.280234 CST
    |-结束时间:2025-04-08 01:45:59.493354 CST
    
    ---------------------------------------------------------------------------------------------------------
     时间戳:2025-04-08 01:45:59.493354 CST | 事务号:1120 | 数据文件oid:16384 | toast文件oid:0 |待恢复条数:2 
    ---------------------------------------------------------------------------------------------------------
    test.public=# restore del 1120;
    开始扫描归档目录
    |-起始文件<000000010000000000000005>
    |-终点文件<000000010000000000000009>
    
    正在扫描中
    读取到最后的日志段: 0/504EC68: 
    |-已解析出2条数据读取到最后的日志段: 0/504EC68: 
    
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    解析结果:成功 2, 失败 0 (即对应FPW未找到), 共计2条数据
    恢复出的csv文件路径为<restore/public/t_xff_1120.csv>
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    扫描结束,当前扫描的时间段为
    |-开始时间:2025-04-06 19:13:15.280234 CST
    |-结束时间:2025-04-08 01:45:59.493354 CST
    
    restore完成
    test.public=# exit;
    [root@xifenfei pdu]# cat restore/public/t_xff_1120.csv
    2       xff测试
    4       www.xifenfei.com
    

    通过上述测试,证明pdu工具可以完美的恢复金仓中刚刚被删除的delete数据.

    • pg删除数据恢复—pdu恢复pg delete数据
    • PostgreSQL恢复工具—pdu恢复单个表文件
    • 删除Oracle数据文件/临时文件
    • 通过修改基表(link$)让非public dblink变为public
    • PostgreSQL恢复工具—pdu工具介绍
    • PostgreSQL解析wal日志之—walminer
    • 触发器引起ORA-04091
    • mysqldump+mysqlbinlog恢复测试
    • mysql 使用二进制日志文件恢复数据库
    • 通过修改col$.col#改变列展示顺序
    • 表dml操作权限授权给public,导致只读用户失效
    • 数据文件重命名


沪ICP备19023445号-2号
友情链接