联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
最近朋友对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数据.