得到了 Postgres 损坏的系统(原因是 RAID),没有任何备份。
尝试使用 Postgres 将数据放入另一台计算机(并进行备份)。
但是总是当我设置数据目录并运行 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= 无效;BLCKSZ - 我在头文件中找不到它)
)。
有什么方法可以提取数据?
这是环境和情况:
硬盘:RAID 1,阵列中有 3 个 SAS 磁盘
操作系统:ubuntu 10.04.04 amd64
Postgres:9.1(通过 apt-get(我们将存储库链接更改为更高版本的 Ubuntu))
系统坏了 - 一段时间后
AAC:主机适配器 BLINK LED 0x56
AACO:适配器内核恐慌 56
(文件系统或硬件错误)
不知何故,我们得到了数据目录。pg_conroldata 显示:
pg_control 版本号:903
目录版本号:201105231
数据库系统标识符:5714530593695276911
数据库集群状态:关闭
pg_control 最后修改时间:2012 年 8 月 15 日星期二 11:50:50
最新检查点位置:1B595668/2000020
先前检查点位置:0/0
最新检查点REDO 位置:1B595668/2000020
最新检查点的 TimeLineID:1
最新检查点的 NextXID:0/4057946
最新检查点的 NextOID:40960
最新检查点的 NextMultiXactId:1
最新检查点的 NextMultiOffset:0
最新检查点的最旧XID:670
最新检查点最旧XID 的数据库:1344846103
最新检查点最旧ActiveXID:0
最新检查点时间:2012 年 8 月 15 日星期二 11:50:50
最小恢复结束位置:0/0
备份开始位置:0/0
当前 wal_level 设置:最小
当前 max_connections 设置:100
当前 max_prepared_xacts 设置:0
当前 max_locks_per_xact 设置:64
最大数据对齐:8
数据库块大小:16777216
每个大关系段的块:131072
WAL 块大小:8192
每个 WAL 段的字节数:16777216
标识符的最大长度:64
索引中的最大列数:2387576020
TOAST 块的最大大小:0
日期/时间类型存储:浮点数
Float4 参数传递:通过引用
Float8 参数传递:通过引用
首先,我努力在 Ubuntu 服务器(硬盘 - 简单串行 2、Ubuntu 10.04 i386、Postgres 9.1)中升级 DB,并在上面遇到相同的异常(使用 BLCKSZ)。
这就是为什么我在虚拟机中部署了带有英文 Postgres 9.1 的 Ubuntu 10.04 amd64(因为在上一步的错误日志中得到了“ ? ”而不是俄罗斯符号)得到了同样的异常(使用 BLCKSZ)。
Ather 已删除 apt-get postgres 版本并按照文档http://www.postgresql.org/docs/9.1/static/installation.html中的描述对其进行编译。玩configure --with-blocksize=BLOCKSIZE
没有效果 - 得到同样的错误
对不起,为了帖子。
pg_contol 被一些操作破坏了。
Sow,集群通过 pg_resetxlog 成功恢复,并带有初始数据。