PostgreSQL從入門到精通 - 第40講:資料庫不完全恢復
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色許可權、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。
第40講:資料庫不完全恢復
PostgreSQL第40講:1月6日(週六)19:30,釘釘群(35822460)& 影片號(資料庫老陳)直播
內容1:描述不完全恢復步驟
內容2:時間點恢復工作原理
內容3:執行一個不完全恢復
不完全恢復應用場景
由於歸檔日誌丟失,完全恢復失敗。
所有未歸檔的wal日誌檔案都將丟失。
使用者錯誤
一張重要的表被刪除。
表中無效的資料被提交。
時間點恢復如何工作
時間點恢復
假設你在2020年4月28日12:05犯了一個錯誤。您應該刪除資料庫群集,並使用之前所做的基本備份還原新的資料庫群集。然後恢復到12:04:59,停止在錯誤發生之前。
PITR恢復起始點定位
PITR恢復過程重要的兩個因素:
1、從哪裡讀取WAL段/歸檔日誌?
PITR mode–來自配置引數archive_command中設定的存檔目錄。
2、從哪裡讀取檢查點位置?
PITR模式–來自備份標籤檔案。
時間點恢復圖示
Recover the database at 12:15:00 along the timelineId 2
不完全恢復型別
recovery_target = 'immediate' 這個引數指定恢復應該在達到一個一致狀態後儘快結束。在從一個線上備份中恢復時,這意味著備份結束後的那個點。
recovery_target_name (string) 指定pg_create_restore_point()所建立的已命名的恢復點,進行恢復。
recovery_target_time (timestamp) 指定需要恢復到的時間點。
recovery_target_xid (string) 指定按事務 ID進行恢復。
recovery_target_lsn (pg_lsn) 指定按預寫日誌位置的LSN進行恢復。
不完全恢復指導方針
仔細遵循所有步驟:
在恢復前後進行整個資料庫備份。
始終驗證恢復是否成功。
備份和刪除歸檔日誌。
不完全恢復和日誌
恢復前後檢查資料庫日誌
包含錯誤資訊、提示和txid
執行不完全恢復流程
關閉並備份資料庫。
還原備份的所有資料檔案。
設定需要恢復到的時間點,或者某個位置。
生成recovery.signal檔案。
執行資料庫啟動。
把資料庫變成讀寫模式
對全庫做個冷備。
基於時間點恢復案例
當前情況:
目前的時間是2022年3月9日中午12點。
EMPLOYEES表已被刪除。
表在上午11點45分左右被刪除。
資料庫活動最小,因為大多數工作人員目前正在開會,意味著從11點45分以後發生的資料更改很少,丟失的資料也會少,因為這一段的資料在做不完全恢復時會丟失。
必須恢復該表。
執行一個基於時間點的恢復
1、還原備份的所有資料檔案
tar -vxf /backup/base.tar -C $PGDATA
2、修改postgresql.conf檔案
restore_command = 'cp /home/postgres/archive/%f %p'recovery_target_time = '2022-03-09 11:44:59'
3、在$PGDATA目錄下生成recovery.signal檔案
touch recovery.signal
4、執行資料庫啟動。
pg_ctl start
5、執行函式,把資料庫變成讀寫模式
select pg_wal_replay_resume();
表空間基於時間點的恢復
經過實驗證明,PG不支援表空間不完全恢復,如果做了表空間的時間點恢復,我們發現其它表空間也會做時間點恢復,即整個資料庫叢集都做時間點恢復,而不是單個表空間做時間點恢復。
CUUG PostgreSQL技術大講堂系列公開課第40講-資料庫不完全恢復,往期影片及文件,請聯絡CUUG。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/31544987/viewspace-3002705/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- postgresql從入門到精通教程 - 第36講:postgresql邏輯備份SQL
- postgresql從入門到精通 - 第35講:中介軟體PgBouncer部署|PostgreSQL教程SQL
- 【零基礎】PostgreSQL從入門到精通SQL
- 資料庫不完全恢復。資料庫
- 資料庫不完全恢復資料庫
- Flask框架從入門到精通之模型資料庫配置(十一)Flask框架模型資料庫
- oracle資料庫不完全恢復Oracle資料庫
- PostgreSQL從小白到高手教程 - 第41講:postgres表空間備份與恢復SQL
- Docker從入門到精通(七)——容器資料共享Docker
- 大資料架構師從入門到精通大資料架構
- 第5章:從開啟的資料庫備份與恢復之從開啟的資料庫備份中進行不完全恢復資料庫
- Thymeleaf從入門到精通
- LESS從入門到精通
- Git 從入門到精通Git
- Shell從入門到精通
- Promise從入門到精通Promise
- vim從入門到精通
- Charles 從入門到精通
- RabbitMQ從入門到精通MQ
- SAP從入門到精通
- redis從入門到精通Redis
- Oracle Rman 資料庫的不完全恢復Oracle資料庫
- ElasticSearch 7.8.1 從入門到精通Elasticsearch
- Eclipse從入門到精通Eclipse
- RabbitMQ 從入門到精通 (一)MQ
- ActiveMQ從入門到精通(一)MQ
- ActiveMQ從入門到精通(二)MQ
- Kaizen如何從入門到精通?AI
- Celery框架從入門到精通框架
- jsp從入門到精通JS
- Python從入門到精通Python
- Docker 從入門到精通(二) 搭建本地倉庫Docker
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- postgresql備份與恢復資料庫SQL資料庫
- Oracle & MySQL & PostgreSQL資料庫恢復支援OracleMySql資料庫
- 備份和恢復postgreSQL資料庫SQL資料庫
- 使用bbed完成資料庫的不完全恢復資料庫
- WIFI滲透從入門到精通WiFi