Postgresql 从Postgres数据文件还原数据

Postgresql 从Postgres数据文件还原数据,postgresql,Postgresql,系统中的Postgres已损坏(原因是RAID),没有任何备份 试图将数据放入另一个有Postgres的Computter(并进行备份) 但当我设置数据目录并运行postgres时,总是会收到一条消息 GET FATAL: database files are incompatible with server 2012-08-15 19:58:38 GET DETAIL: The database cluster was initialized with BLCKSZ 16777216, b

系统中的Postgres已损坏(原因是RAID),没有任何备份

试图将数据放入另一个有Postgres的Computter(并进行备份)

但当我设置数据目录并运行postgres时,总是会收到一条消息

GET FATAL:  database files are incompatible with server
2012-08-15 19:58:38 GET DETAIL:  The database cluster was initialized with BLCKSZ 16777216, but the server was compiled with BLCKSZ 8192.
2012-08-15 19:58:38 GET HINT:  It looks like you need to recompile or initdb.
这是一个非常奇怪的数字16777216(2到24次方-到大)

但是,在编译时我无法重置默认值8192(使用--with blocksize=take no effect;BLCKSZ-我在头文件中找不到它)

)

有提取数据的方法吗

这是环境和环境:

硬盘驱动器:阵列中有3个SAS磁盘的RAID 1

操作系统:ubuntu 10.04.04 amd64

Postgres:9.1(通过apt get(我们将存储库链接更改为更高版本的Ubuntu))

一段时间后,系统崩溃了

AAC:主机适配器闪烁LED 0x56
AACO:适配器内核死机56

(文件系统或硬件错误)

不知怎的,我们得到了数据目录。pg_控制数据显示:

pg_控制版本号:903
目录版本号:201105231
数据库系统标识符:57145305936995276911
数据库群集状态:关闭
PGU控制最后修改日期:2012年8月15日星期二11:50:50
最新检查点位置:1B595668/2000020
先前检查点位置:0/0
最新检查点的重做位置:1B595668/2000020
最新检查点的时间线ID:1
最新检查点的下一个检查点:0/4057946
最新检查点的NextOID:40960
最新检查点的下一个Multixactid:1
最新检查点的下一个多重偏移量:0
最新检查点的oldestXID:670
最新检查点的oldestXID数据库:1344846103
最新检查点的oldestActiveXID:0
最近检查点时间:2012年8月15日星期二11:50:50
最小恢复结束位置:0/0
备份开始位置:0/0
当前墙水平设置:最小值
当前最大连接设置:100
当前最大准备值设置:0
当前最大每次锁定设置:64
最大数据对齐:8
数据库块大小:16777216
每个大关系段的块数:131072
墙块大小:8192
每个WAL段的字节数:16777216
标识符的最大长度:64
索引中的最大列数:2387576020
TOAST区块的最大大小:0
日期/时间类型存储:浮点数
Float4参数传递:通过引用
Float8参数传递:通过引用

首先,我在Ubuntu服务器(硬盘-simple serial 2,Ubuntu10.04 i386,Postgres 9.1)中升级了DB,得到了与上面相同的异常(BLCKSZ)

这就是为什么我在虚拟机中部署了Ubuntu10.04 amd64和英语Postgres 9.1(因为在上一步的错误日志中得到了“”而不是俄语符号) 得到了相同的异常(BLCKSZ)

删除apt get postgres版本并按照文档中所述进行编译的用户。 玩
configure--with blocksize=blocksize
无效-得到相同的错误

对不起,这是我的邮件。 pg_控制被一些操作打破

在Sow中,pg_resetxlog使用初始数据成功恢复了群集。

有关配置内核资源的详细信息,请参阅。也许这个新操作系统的默认/当前设置不允许邮局主管启动


是关于BLCKSZ参数的含义和上下文的详细信息。失败的系统是否运行64位PostgreSQL版本,而新系统是32位版本?如果可能,尝试获取失败系统的PostgreSQL的版本信息可能会揭示问题。让我们知道使用了什么版本、版本和操作系统。Was是自定义版本吗?

16Mb的块大小会非常奇怪,而且因为这两个值看起来也完全是假的:

…在花时间编译具有非标准块大小的Postgre之前,您可能想质疑此数据的完整性

如果查看对应于关系的文件大小,它们是16Mb还是8Kb的倍数?
如果数据库有一些千兆字节的表,那么磁盘上的截止大小是多少(postgres将数据拆分为多个文件的大小)?这应该等于
数据块大小
*
每个大关系段的块
。默认安装为1Gb。

在这种情况下,“将数据放入另一台计算机”的确切含义是什么?你说得对!数据设置看起来像默认设置母猪pg_控制被破坏。我通过复制(pg_控件)获得工作集群。但是列表中只有一个数据库,并且只有函数和自定义类型可用。有没有办法解决,或者应该是另一个问题?
Maximum columns in an index:       2387576020
Maximum size of a TOAST chunk:     0