联系:手机/微信(+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数据.