PostgreSQL從小白到高手教程 - 第41講:postgres表空間備份與恢復
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色許可權、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。
第41講:表空間備份與恢復
PostgreSQL第41講:1月13日(週六)19:30,釘釘群(35822460)& 影片號(資料庫老陳)直播
內容1:表空間備份與恢復的意義
內容2:PostgreSQL表空間概念
內容3:基於表空間備份
內容4:基於表空間的完全恢復
表空間備份與恢復的意義
PostgreSQL資料庫備份所存在的問題:
1、PG備份工具備份的總是整個資料目錄,資料量大,備份時間長。
2、PG備份工具恢復時總是恢復整個資料目錄,資料量大,恢復時間長。
3、使用表空間的備份與恢復,可以減少備份資料,縮短備份與恢復的時間。
Tablespaces
· PostgreSQL中的表空間是基本目錄之外的附加資料區域,此功能已在版本8.0中實現。
· 初始化資料庫後預設的表空間有pg_default、pg_global。
· pg_global表空間的物理檔案位置在資料目錄的global目錄中,它用來儲存系統表。
· pg_default表空間的物理檔案位置在資料目錄的base子目錄中,是template0和template1資料庫的預設表空間。
· 建立資料庫時,預設從template1資料庫進行克隆,因此除非特別指定了新建資料庫的表空間,否則預設使用template1使用的表空間,即pg_default表空間。
PostgreSQL表空間物理檔案位置
建立表空間時產生的目錄命名規則:
PG _ 'Major version' _ 'Catalogue version number'
例如:
sampledb=# create tablespace new_tblspc location '/home/postgres/tblspc';
$ ls -l /home/postgres/tblspc/
total 4
drwx------ 4 postgres postgres PG_12_201909212
新建表空間的目錄由pg_tblspc子目錄中的軟連結定址,連結名與表空間的OID值相同。
postgres=# select oid,spcname from pg_tablespace;
oid | spcname
-------+------------
1663 | pg_default
1664 | pg_global
90208 | new_tblspc
(3 rows)
$ ls -l $PGDATA/pg_tblspc/
total 0
lrwxrwxrwx. 1 postgres postgres 90208 -> /home/postgres/tblspc
· 如果在表空間下建立一個新的資料庫(OID是90209),那麼它的目錄將在版本特定的子目錄下建立:
ls -l /home/postgres/tblspc/PG_12_201909212
total 4
drwxr-x---. 2 postgres postgres 4096 Mar 30 09:27 90209
· 在base目錄下建立的資料庫上建立新表指定到新建的表空間:
testdb=# create table test1 (id int) tablespace new_tblspc;
testdb=# SELECT pg_relation_filepath('test1');
pg_relation_filepath
---------------------------------------------
pg_tblspc/90208/PG_12_201909212/16385/90210 #在新表空間目錄下建立資料庫目錄
執行pg_basebackup備份
示例
產生壓縮的tar包,-Ft引數指定:
pg_basebackup -D bk1 -Ft -z -P
此備份花的時間比較長,但是節省空間。支援表空間檔案存放在其它目錄下。
產生跟原始檔一樣的格式,即原樣格式,-Fp引數指定:
pg_basebackup -D bk2 -Fp -P
此備份方式很快,但是不節省空間。如果有表空間路徑放在其它目錄下,則備份失敗。
執行表空間備份
示例
資料庫中執行開始備份函式
select pg_start_backup('tbs');
使用tar命令進行備份(備份tblspc表空間所在的目錄)
cp -rf /home/postgres/tblspc /home/postgres/bk1
cp $PGDATA/backup_lable /home/postgres/bk1
資料庫中執行結束備份函式
select pg_stop_backup();
執行一個基於表空間備份的完全恢復
PG支援基於表空間(除了pg_global之外)級別的完全恢復,因為pg_global表空間比較特殊,其中包括控制檔案,而控制檔案不能使用備份的進行恢復。
1、轉儲備份的表空間目錄到目標位置
cp -rf /backup/PG_12_201909212 /home/postgres/tblspc
2、轉儲backup_lable檔案到$PGDATA目錄下
cp /backup/backup_lable $PGDATA
3、建立recovery.signal
4、修改postgresql.conf檔案
restore_command = 'cp /home/postgres/archives/%f %p'
recovery_target_timeline = 'latest'
5、啟動資料庫,表空間所包含的表能夠實現完全恢復
pg_ctl start
總結
PostgreSQL資料庫支援表空間的備份與完全恢復,不支援表空間下某個資料庫的備份與恢復。
備份與恢復時針對的是整個表空間所在的目錄。
執行表空間恢復後資料庫正常使用,資料完整,證明表空間備份恢復是可行的。
CUUG PostgreSQL技術大講堂系列公開課第41講-表空間備份與恢復,往期影片及文件,請聯絡CUUG。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/31544987/viewspace-3003615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL從小白到高手教程 - 第47講:JMETER工具使用SQLJMeter
- postgresql從入門到精通教程 - 第36講:postgresql邏輯備份SQL
- 【物理熱備】(下)備份恢復系統表空間 手工備份恢復
- Postgresql 備份與恢復SQL
- mysql無備份恢復-獨立表空間MySql
- 表空間級資料庫備份恢復資料庫
- DB2 使用表空間備份恢復庫DB2
- 歸檔模式下,offline表空間備份與恢復模式
- Postgresql 備份恢復SQL
- Oracle12c多租戶資料庫備份與恢復 - 備份表空間Oracle資料庫
- 備份與恢復系列 九 丟失表空間資料檔案的還原與恢復
- 《MySQL 入門教程》第 06 篇 備份與恢復MySql
- 非系統表空間損壞,rman備份恢復
- mysql 無備份恢復drop資料-共享表空間MySql
- postgresql備份與恢復資料庫SQL資料庫
- undo表空間檔案丟失恢復(1)--有備份
- RAC 恢復(備份後建立的表空間(leviton)恢復後會自動重建)
- 【管理篇備份恢復】rman恢復測試(一) 表空間資料檔案
- 【備份恢復】從備份恢復資料庫資料庫
- PostgreSQL從入門到精通 - 第40講:資料庫不完全恢復SQL資料庫
- 備份與恢復--一個表空間能否被多個資料庫讀寫?資料庫
- Oracle rman 備份與恢復 臨時表空間的檔案問題解決Oracle
- Oracle 11g RMAN恢復-只讀表空間的恢復(備份是在表空間只讀狀態下做的)Oracle
- 備份與恢復--從備份的歸檔日誌中恢復資料
- Grafana 備份恢復教程Grafana
- 表空間不完全恢復(全備--備份控制檔案--刪除表空間andy--日誌檔案)
- PostgreSQL12中實現增量備份與任意時間點恢復SQL
- 循序漸進oracle第7章:備份與恢復之RMAN的簡單備份與恢復Oracle
- 恢復表空間到不同的ASM磁碟組ASM
- 第5章:從開啟的資料庫備份與恢復之從開啟的資料庫備份中完全恢復資料庫
- 備份與恢復:polardb資料庫備份與恢復資料庫
- undo表空間檔案丟失恢復(2)--無備份有redo的情況下恢復
- undo表空間檔案丟失恢復(3)--無備份無redo的情況下恢復
- undo表空間檔案丟失恢復(4)--無備份無recover的情況下恢復
- 執行RMAN表空間及時點恢復——使用者管理備份和恢復手冊
- 《PostgreSQL 指南:內幕探索》之基礎備份與時間點恢復(上)SQL
- PostGreSql12.6的備份恢復SQL
- 備份和恢復postgreSQL資料庫SQL資料庫