bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

告訴你如何打造PostgreSQL閃回環境

在 PostgreSQL 數據庫;目前是不支持類似 Oracle 閃回特性;我們知道 Oracle 閃回特性在數據恢復是非常簡單給力。增加數據庫操作人員(開發,DBA)的容錯率。Oracle 閃回特性使用場景:

創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站設計、做網站、宕昌網絡推廣、成都小程序開發、宕昌網絡營銷、宕昌企業策劃、宕昌品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們大的嘉獎;創新互聯為所有大學生創業者提供宕昌建站搭建服務,24小時服務熱線:028-86922220,官方網址:vcdvsql.cn flashback database: 數據庫閃回;多用于數據庫恢復;數據庫,用戶,表空間誤刪。 flashback table : 表閃回;用于數據表恢復;數據表誤刪。 flashback query : 閃回查詢;應用于修復誤操作數據。

對于 PostgreSQL 閃回;校長(德哥)有寫過一系列的文章PostgreSQL flashback(閃回)功能實現與介紹;如今我取巧實現 PostgreSQL 閃回特性。原理參考我之前的文章PostgreSQL恢復誤刪數據。

支持在線數據庫恢復(不推薦),多用于數據表恢復,修復誤操作數據。 支持多次閃回操作;在 flashback query 中恢復的時間點不是很理想;可以重新設定時間點再閃回操作一次。 一. flashback 所需命令

實現 flashback 就是一個有效的數據庫備份/恢復。

備份操作命令有 scp/cp, pg_basebackup, pg_rman。我選 pg_basebackup。因為pg_basebackup 支持異構備份。意味著可以在同一臺服務器在 cp 一個 PostgreSQL 實例。即可以在一臺服務器上實現閃回。 恢復操作有 copy 或者 pg_dump 命令。 二. flashback 所需條件

實現 flashback 可以是在線服務器上操作,也可以是在另一臺服務器上操作。換句話說:可以是一臺服務器或者是兩臺服務器來實現。在一臺服務器上需要更改數據庫端口。由于本環境有清理目錄操作;避免在在線服務器上誤刪目錄。所以建議用兩條服務器來實現。

三. flashback 搭建原理

本文檔采用兩臺服務器來實現。兩臺服務器時間校準,免密碼登錄。

正式數據庫環境:192.168.1.201 閃回數據庫環境:192.168.1.202
3.1 創建腳本cleandir.sh

cleandir腳本用于在pg_basebackup備份前;先清空備份所需的路徑

psql -h 192.168.1.201 -p $PGPORT -t -A -n -cSELECT pg_catalog.pg_tablespace_location(oid) AS Location FROM pg_catalog.pg_tablespace where spcname not in (\'pg_default\',\'pg_global\') -o tablespace_location.txt
awk \'{print rm -rf  $1}\' tablespace_location.txt > cleandir.sh
echo rm -rf $PGDATA >> cleandir.sh 
3.2 創建備份腳本pg_backup.sh

采用pg_basebackup備份;

cleandir.sh
pg_basebackup -F p --progress -D $PGDATA -h 192.168.1.201 -p $PGPORT -U replica 

加入定時任務 crontab 中 例如:每天凌晨過5分執行備份

5 0 * * * pg_backup.sh 
3.3 創建配置文件recovery.conf模板

執行閃回查詢/數據庫恢復。多用時間點進行恢復即(PITR)

restore_command = \'scp postgres@192.168.1.201:**/%f %p\'
recovery_target_time = \'2018-11-10 10:33:12\' 
3.4 創建恢復腳本pg_flashback.sh

pg_flashback.sh 腳本用于數據庫誤操作實現閃回到某個時間點。支持多次閃回。執行閃回 之前;需要配置 recovery.conf 中的 “recovery_target_time” 時間點。即恢復到哪個時間點。
第一次執行;執行

pg_flashback.sh 1 

往后執行閃回;通稱再次執行;執行命令

pg_flashback.sh 2 

當然往后加也行例如:pg_flashback.sh 3
pg_flashback.sh腳本如下

##===========================================================  
##   pg_flashback.sh                
##   created by lottu           
##   2018/11/07    
##   usage: pg_flashback.sh 1                          
##============================================================  
#!/bin/bash
PGHOME=/opt/pgsql96
PGDATA=/data/postgres/data              
LANG=en_US.utf8
PGPORT=5432
PGUSER=postgres
PGDATABASE=postgres
PG_BACK_HOST_IP=192.168.1.202
E_BADARGS=65
E_FAIL=66

if [ $# -ne 1 ];then
 echo Usage: `basename $0` Please invoke this script with one command-line arguments
 exit $E_BADARGS
fi
flashback_path=/data/flash_back
if [ $1 -eq 1 ];then
 echo Info: backup backupset
 backup.sh
else
 rebackup.sh
fi 
echo Info: edit recovery.conf
#scp recovery.conf postgres@192.168.1.202:$PGDATA
cp /home/postgres/recovery.conf $PGDATA
echo Info: begin start database
pg_ctl start -l /home/postgres/log/pg_server.log
if [ $? -eq 0 ];then
 echo Info: start database succes
 sleep 10
 psql -h $PG_BACK_HOST_IP -p 5432 postgres postgres -c select pg_xlog_replay_resume()
else
 echo [Error]: start database fail
 exit $E_FAIL
fi 
四. flashback 實驗驗證 4.1 驗證目的 驗證是否可以閃回/恢復 驗證是否可以多次操作閃回 驗證在閃回的過程中;正式環境是否正常對外服務 4.2 實驗操作 4.2.1 備份數據庫

執行pg_backup.sh腳本。部署成功了是沒這個操作。因為每天都有定時備份。

[postgres@Postgres202 ~]$ pg_backup.sh 
waiting for server to shut down......... done
server stopped 322503/322503 kB (100%), 4/4 tablespaces 
4.2.2 模擬誤操作
lottu=# create table lottu as select * from lottu01 ; SELECT 4 lottu=# select * from lottu; id | text ------+------- 1001 | lottu 1004 | rax 1002 | world 1003 | world (4 rows) -- 獲取時間點;這個時間點“2018-11-10 14:56:56”是我目標恢復時間點。表lottu有4條記錄。
lottu=# select now(); now ------------------------------ 2018-11-10 14:56:56.30188+08 (1 row) -- 在時間點“2018-11-10 14:57:51”;誤操作1 清理表lottu的記錄
lottu=# delete from lottu; DELETE 4 lottu=# select now(); now ------------------------------- 2018-11-10 14:57:51.891931+08 (1 row) -- 誤操作2 刪除表lottu。
lottu=# drop table lottu; DROP TABLE 
獲取時間點;這個時間點“2018-11-10 14:56:56”是我目標恢復時間點。表lottu有4條記錄。 在時間點“2018-11-10 14:57:51”;誤操作1 清理表lottu的記錄 誤操作2 刪除表lottu。 4.2.3 閃回操作

我們先在配置文件 recovery.conf 中的參數“recovery_target_time” 設置為 “2018-11-10 14:57:51”。執行閃回pg_flashback.sh 1

[postgres@Postgres202 ~]$ pg_flashback.sh 1 Info: backup backupset Info: edit recovery.conf Info: begin start database
server starting Info: start database succes
psql: FATAL: the database system is starting up 

閃回數據庫成功啟動;登錄查看表lottu情況:表數據未找回;這不是我所需閃回的目標

[postgres@Postgres202 ~]$ psql lottu lottu
psql (9.6.0) Type help for help. lottu=# \\d lottu Table lottu.lottu Column | Type | Modifiers --------+---------+----------- id | integer | name | text | lottu=# select * from lottu; id | name ----+------ (0 rows) 

在配置文件 recovery.conf 中的參數“recovery_target_time” 設置為 “2018-11-10 14:56:56”。再執行閃回pg_flashback.sh 2

[postgres@Postgres202 ~]$ pg_flashback.sh 2 Info: edit recovery.conf Info: begin start database
server starting Info: start database success
psql: FATAL: the database system is starting up 

再次閃回也成功了。我們在看下表lottu的情況

[postgres@Postgres202 ~]$ psql lottu lottu
psql (9.6.0) Type help for help. lottu=# \\d lottu Table lottu.lottu Column | Type | Modifiers --------+---------+----------- id | integer | name | text | lottu=# select * from lottu; id | name ------+------- 1001 | lottu 1004 | rax 1002 | world 1003 | world (4 rows) 

表 lottu 的數據成功找回。在使用 pg_dump 導出表 lottu 的表結構和數據的腳本;

[postgres@Postgres202 ~]$ pg_dump -d lottu -t lottu.lottu -f lottu.sql [postgres@Postgres202 ~]$ scp lottu.sql postgres@192.168.1.201:/home/postgres 

再到正式數據庫上執行

[postgres@Postgres201 ~]$ psql lottu lottu 
psql (9.6.0) Type help for help. lottu=# \\i lottu.sql SET SET SET SET SET SET SET SET SET SET SET CREATE TABLE ALTER TABLE COPY 4 lottu=# \\d lottu Table lottu.lottu Column | Type | Modifiers --------+---------+----------- id | integer | name | text | lottu=# select * from lottu; id | name ------+------- 1001 | lottu 1004 | rax 1002 | world 1003 | world (4 rows) 

在整個閃回過程;除了最后一步是在正式服務器上執行。前面其他操作都是在閃回數據庫操作。

4.3 實驗結論 可以閃回 可以多次操作 不影響正式環境 五. 其他實現方式參考

PostgreSQL flashback(閃回) 功能實現與介紹

六. 不足 不推薦使用這種方式恢復數據庫。多用于ddl/dml誤操作恢復。 七. 代碼下載

鏈接:https://pan.baidu.com/s/1j8ZNj3yjxj82MnomzxQkfA
提取碼:j4xd

新聞標題:告訴你如何打造PostgreSQL閃回環境
標題來源:http://vcdvsql.cn/article12/chsjgc.html

成都網站建設公司_創新互聯,為您提供網站策劃關鍵詞優化域名注冊網站收錄Google品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司