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
- Flask框架從入門到精通之模型資料庫配置(十一)Flask框架模型資料庫
- PostgreSQL從小白到高手教程 - 第41講:postgres表空間備份與恢復SQL
- 大資料架構師從入門到精通大資料架構
- Docker從入門到精通(七)——容器資料共享Docker
- Promise從入門到精通Promise
- LESS從入門到精通
- Git 從入門到精通Git
- SAP從入門到精通
- Python從入門到精通Python
- Thymeleaf從入門到精通
- Eclipse從入門到精通Eclipse
- vim從入門到精通
- Shell從入門到精通
- Oracle & MySQL & PostgreSQL資料庫恢復支援OracleMySql資料庫
- postgresql備份與恢復資料庫SQL資料庫
- Docker 從入門到精通(二) 搭建本地倉庫Docker
- Kaizen如何從入門到精通?AI
- Linux從入門到精通(二)Linux
- ElasticSearch 7.8.1 從入門到精通Elasticsearch
- RabbitMQ 從入門到精通 (一)MQ
- ActiveMQ從入門到精通(一)MQ
- ActiveMQ從入門到精通(二)MQ
- Celery框架從入門到精通框架
- 2018大資料學習路線從入門到精通大資料
- 如何進行Oracle資料庫不完全恢復RBOracle資料庫
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- PostgreSql資料庫的備份和恢復SQL資料庫
- 智慧合約從入門到精通:Lib工具庫(二)
- 智慧合約從入門到精通:Lib工具庫(一)
- 2018最新大資料學習路線從入門到精通大資料
- Realm資料庫 從入門到“放棄”資料庫
- 尚矽谷 springboot 從入門到精通Spring Boot
- Spark SQL | Spark,從入門到精通SparkSQL
- Flink從入門到精通系列文章
- Hello Spark! | Spark,從入門到精通Spark
- WIFI滲透從入門到精通WiFi