web-dev-qa-db-ja.com

テーブルスペースが定義されたpg_basebackup

次のテーブルスペースを持つデータベースがあります。

pgwb=# \db
                   List of tablespaces
    Name    | Owner |              Location
------------+-------+-------------------------------------
 bspace     | pgwb  | /data1/tablespaces/TS_B_SPACE/tests
 meta       | pgwb  | /data1/tablespaces/metadata/tests
 mspace     | pgwb  | /data1/tablespaces/TS_M_SPACE/tests
 nspace     | pgwb  | /data1/tablespaces/TS_N_SPACE/tests
 pg_default | pgwb  |
 pg_global  | pgwb  |
 uspace     | pgwb  | /data1/tablespaces/TS_U_SPACE/tests
(7 rows)

これらは、以下でシンボリックリンクとして参照されます。

pgwb@BLIXSQL0:/data1/pgwb/pg_tblspc> ls -l /data1/pgwb/pg_tblspc
total 0
lrwxrwxrwx 1 pgwb users 35 May  9 09:17 16536 -> /data1/tablespaces/TS_U_SPACE/tests
lrwxrwxrwx 1 pgwb users 35 May  9 09:17 16537 -> /data1/tablespaces/TS_B_SPACE/tests
lrwxrwxrwx 1 pgwb users 35 May  9 09:17 16538 -> /data1/tablespaces/TS_N_SPACE/tests
lrwxrwxrwx 1 pgwb users 35 May  9 09:17 16539 -> /data1/tablespaces/TS_M_SPACE/tests
lrwxrwxrwx 1 pgwb users 33 May  9 09:17 16540 -> /data1/tablespaces/metadata/tests

PITリカバリー用のデータベースをセットアップしました。

ベースバックアップを作成するには、pg_basbackupを次のように使用します。

pg_basebackup --xlog --format=t -D /data1/backup/`date +%Y%m%d`

バックアップフォルダには、次のファイルがあります。

pgwb@BLIXSQL0:/data1/backup/20170510> ls -l
total 62772
-rw-r--r-- 1 pgwb users   289792 May 10 13:51 16536.tar
-rw-r--r-- 1 pgwb users  2821120 May 10 13:51 16537.tar
-rw-r--r-- 1 pgwb users  2821120 May 10 13:51 16538.tar
-rw-r--r-- 1 pgwb users   371712 May 10 13:51 16539.tar
-rw-r--r-- 1 pgwb users   716800 May 10 13:51 16540.tar
-rw-r--r-- 1 pgwb users 57170432 May 10 13:51 base.tar

これでクラッシュが発生し、これらのtarファイルから復元する必要がありますが、シンボリックリンクの宛先がわかりません。

どうすればこれを解決できますか?テーブルスペースからpg_dumpが必要ですか?

2
Wolfgang Brandl

tablespace_mapファイルにbase.tarという名前のマッピングファイルがあります。

ここにドキュメントがあります:

Tar形式モードを使用する場合、PostgreSQLサーバーを起動する前に各tarファイルを解凍するのはユーザーの責任です。追加のテーブルスペースがある場合は、それらのtarファイルを正しい場所に解凍する必要があります。この場合、それらのテーブルスペースのシンボリックリンクは、tablespace_mapファイルに含まれているbase.tarファイルの内容に従ってサーバーによって作成されます。

リンク: https://www.postgresql.org/docs/9.6/static/app-pgbasebackup.html

1
Arkhena

あなたは確かに今それを必要としませんが、多分他の人がそれを使うことができたでしょう。最近いくつかのクラッシュに直面したので、ここにpg_basebackup tarファイルからの復元の完全な説明があります- postgresql.freeideas.cz/pg_basebackup-pgbarman-restore-tar-backup/

0
JosMac