Postgresql
已定義表空間的 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
來自表空間的 a 嗎?
您將在文件中找到一個名為的映射
tablespace_map
文件base.tar
。這是文件:
使用 tar 格式模式時,使用者有責任在啟動 PostgreSQL 伺服器之前解壓縮每個 tar 文件。如果還有其他表空間,則需要將它們的 tar 文件解壓縮到正確的位置。在這種情況下,這些表空間的符號連結將由伺服器根據
tablespace_map
文件中包含的base.tar
文件內容創建。連結:https ://www.postgresql.org/docs/9.6/static/app-pgbasebackup.html
我知道您現在當然不需要它,但也許其他人可以使用它。由於我們最近遇到了一些崩潰,這裡是從 pg_basebackup tar 文件恢復的完整描述 - postgresql.freeideas.cz/pg_basebackup-pgbarman-restore-tar-backup/