postgreSQL 恢復至故障點 精準恢復

ittangzeng發表於2019-01-01

朋友說到一個生產線上表資料被大批次誤操作了,能否恢復。


千萬別跑路,只要資料資料庫,無論是MySQL,PG,Oracle等,只要日誌和備份在,都可以恢復到任意故障點。

只是操作方法不同而已。



可以透過在其它機器基於故障點恢復備份資料


在其它環境中搭建一套PG環境:




編譯安裝的引數特別重要,否則不能啟動,建議分離 data和安裝軟體目錄,這是隻需tar軟體包即可。


1)檢視線上環境基礎配置:


show all;可以看到生產環境的blocksize和wal-segsize


2)採用線上環境版本PG軟體編譯安裝


yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++   openssl-devel cmake 




./configure --prefix=/opt/postgres --with-pgport=5432 --with-python --with-libxml --with-wal-segsize=16 --with-blocksize=8


make && make install




外掛安裝:


cd contrib


make && make install


 


3)基於時間點恢復資料庫:


停資料庫 


# pg_stop 






利用備份恢復


# rm -rf data


tar xvf pgdata.tar 




利用 pg_waldump 找到問題的點,然後修改 recovery.conf 恢復到指定的時間點。


 


複製recovery.conf檔案並修改以指定時間點恢復


# cp $PG_HOME/share/recovery.conf.sample /home/postgres/data 


# vi /opt/postgres/data/recovery.conf 


--新增內容,指定恢復檔案和路徑,%f,%p見上面說明 


restore_command = 'cp /opt/postgres/archive/%f %p' 


recovery_target_time = '2018-12-29 10:24:00+09' 


 


恢復資料後,dump表的資料到生產線即可。






99)這個工作建議手工打造


尤其是確定故障點,然後手工進行恢復,多方面確認,最後才能放心將資料放到生產線。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29497382/viewspace-2287096/,如需轉載,請註明出處,否則將追究法律責任。

相關文章