バックアップなしで、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 - ヘッダー ファイルで見つかりません)。
)。
データを抽出する方法はありますか?
これは環境と状況です。
ハードドライブ: アレイ内の 3 つの SAS ディスクによる RAID 1
OS: Ubuntu 10.04.04 amd64
Postgres: 9.1 (apt-get による (リポジトリ リンクをより高いバージョンの Ubuntu に変更します))
システムが壊れる - しばらくしてから
AAC: Host Adapter BLINK LED 0x56
AACO: Adapter kernel panic'd 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 の DB: 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を使用)。
apt-get postgres バージョンを削除し、docs http://www.postgresql.org/docs/9.1/static/installation.htmlで説明されているようにコンパイルした Ather 。で遊んでconfigure --with-blocksize=BLOCKSIZE
も効果がありませんでした-同じエラーが発生しました
投稿失礼します。
pg_contol は、いくつかの操作によって壊れていました。
というわけで、クラスタはpg_resetxlogによって初期データで正常に復元されました。