国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

pg_rman備份工具

IT那活兒 / 817人閱讀
pg_rman備份工具

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!

  
pg_rman簡介:

pg_rman是一款專門為postgresql設(shè)計的在線備份恢復(fù)的工具。其支持在線(熱備份)和基于時間點備份方式。

它是一個開源的PostgreSQL備份軟件,使用的是pg_start_backup(), copy, pg_stop_backup()的備份模式,因為是文件拷貝模式,所以pg_rman必須在數(shù)據(jù)庫節(jié)點上運行。



pg_rman的安裝

提示:在安裝pg_rman之前,建議安裝一套主從環(huán)境。

1.1 安裝依賴

yum install -y bison flex readline-devel zlib-deve1 zlib zlib-devel gcc

1.2 下載地址

https://github.com/ossc-db/pg_rman/releases

1.3 編譯安裝

tar xf pg_rman-1.3.14-pg14.tar.gz
make && make install

1.4 創(chuàng)建備份目錄

mkdir /pg_rman_backup/{fullbackup,walbackup,pg_srvlog} -p
chown -R postgres:postgres /pg_rman_backup

1.5 修改環(huán)境變量

vim /etc/profile
export BACKUP_PATH=/pg_rman_backup/fullbackup
export ARCLOG_PATH=/pg_rman_backup/walbackup
export SRVLOG_PATH=/pg_rman_backup/pg_srvlog

1.6 開啟postgres歸檔

vim postgresql.conf
archive_mode = on
archive_command = DATE=`date +%Y%m%d`; DIR="/pg_rman_backup/walbackup/"; (test -d $DIR || mkdir -p $DIR) && cp %p $DIR/%f

1.7 pg_rman初始化

pg_rman init
如果沒指定環(huán)境變量,可以使用以下命令進行初始化:
pg_rman -B /pg_rman_backup/fullbackup -D /postgres/data -A /pg_rman_backup/walbackup init

pg_rman參數(shù)說明:

vi pg_rman.ini
  • # 歸檔目錄

    ARCLOG_PATH=/home/postgres/arch
  • # 數(shù)據(jù)庫錯誤日志目錄

    SRVLOG_PATH=/home/postgres/data/log
  • # 壓縮數(shù)據(jù)

    COMPRESS_DATA = YES
  • # 保存歸檔文件個數(shù)

    KEEP_ARCLOG_FILES = 10
  • # 保存歸檔的天數(shù)

    KEEP_ARCLOG_DAYS = 10
  • # 備份冗余度

    KEEP_DATA_GENERATIONS = 3
  • # 保存?zhèn)浞菁瘯r間

    KEEP_DATA_DAYS = 10
  • # 保存日志文件個數(shù)

    KEEP_SRVLOG_FILES = 10
  • # 保存日志文件天數(shù)

    KEEP_SRVLOG_DAYS = 10

說明:
以上pg_rman.ini配置文件中指定的是pg_rman的備份策略,如果沒有在配置文件中指定,也可以每次在備份過程中用以下參數(shù)用來指定備份策略。
除此之外還詳細介紹了一些額外的使用參數(shù),如下所示:

1)Usage

  • pg_rman OPTION init
  • pg_rman OPTION backup
  • pg_rman OPTION restore
  • pg_rman OPTION show [DATE]
  • pg_rman OPTION show detail [DATE]
  • pg_rman OPTION validate [DATE]
  • pg_rman OPTION delete DATE
  • pg_rman OPTION purge

2)Common Options

  • # 數(shù)據(jù)庫存儲區(qū)域的路徑位置
    -D, --pgdata=PATH
  • # 存檔存儲區(qū)的路徑位置
    -A, --arclog-path=PATH
  • # 服務(wù)器日志存儲區(qū)域的路徑位置
    -S, --srvlog-path=PATH
  • # 檢查一下,看看能做些什么

    -c, --check

  • # 詳細顯示消息的詳細信息
    -v, --verbose
  • # 顯示已處理文件的進度

    -P, --progress

3)Backup options
  • # 備份模式=完全模式、增量模式或歸檔模式

    -b, --backup-mode=full, incremental, or archive

  • # 使用serverlog,還可以備份服務(wù)器日志文件

    -s, --with-serverlog

  • # 壓縮數(shù)據(jù)使用zlib壓縮數(shù)據(jù)備份

    -Z, --compress-data

  • # 平滑檢查點在備份之前平滑檢查點

    -C, --smooth-checkpoint

  • # 完全備份出錯:切換到完全備份模式

    -F, --full-backup-on-error

  • # NUM保留完整數(shù)據(jù)備份的NUM代

    --keep-data-generations=NUM

  • # 保留足夠的數(shù)據(jù)備份以恢復(fù)到N天前

    --keep-data-days=NUM

  • # NUM保留歸檔文件的數(shù)量

    --keep-arclog-files=NUM

  • # 以天為單位修改存檔的WAL

    --keep-arclog-days=DAY

  • # NUM保留服務(wù)器日志數(shù)

    --keep-srvlog-files=NUM

  • # 在DAY中修改服務(wù)器日志

    --keep-srvlog-days=DAY

  • # 從備用主機進行備份時備用主機的主機名

    --standby-host=HOSTNAME

  • # 從備用端口進行備份時的備用端口
    --standby-port=PORT
4)Restore options
  • # 恢復(fù)將繼續(xù)的時間戳

    --recovery-target-time

  • # 恢復(fù)目標(biāo)xid事務(wù)ID

    --recovery-target-xid

  • # 恢復(fù)目標(biāo),包括我們是否在恢復(fù)后立即停止

    --recovery-target-inclusive

  • # 恢復(fù)到特定時間線

    --recovery-target-timeline

  • # 硬拷貝復(fù)制archivelog不是硬鏈接

    --hard-copy

  • # 顯示全部也顯示已刪除的備份

    -a, --show-all

  • # 強制刪除早于給定日期的備份
    -f, --force
5)Connection options
  • # 要連接的數(shù)據(jù)庫

    -d, --dbname=DBNAME

  • # 主機名、數(shù)據(jù)庫服務(wù)器、主機或套接字目錄

    -h, --host=HOSTNAME

  • # 端口數(shù)據(jù)庫服務(wù)器端口

    -p, --port=PORT

  • # 要連接的用戶名

    -U, --username=USERNAME

  • # 無密碼。從不提示輸入密碼

    -w, --no-password

  • # 密碼強制密碼提示
    -W, --password
6)Generic options
  • # 安靜,不顯示任何信息或調(diào)試消息

    -q, --quiet

  • # 調(diào)試顯示調(diào)試消息

    --debug

  • # 幫助顯示此幫助,然后退出

    --help

  • # 版本輸出版本信息,然后退出

    --version


pg_rman全量備份

2.1 創(chuàng)建數(shù)據(jù)

create database test;
create table t1 (id int);
insert into t1 values (1);

2.2 進行全量備份

pg_rman backup --backup-mode=full --with-serverlog –progress
提示:如果沒有指定環(huán)境變量,可以使用如下命令進行備份:
pg_rman --backup-path /pg_rman_backup/fullbackup --pgdata 
/postgres/data --arclog-path /pg_rman_backup/walbackup
backup -b full -s --srvlog-path=/pg_rman_backup/pg_srvlog -U
postgres -d postgres -h 127.0.0.1 -p 5432
提示:以上為主節(jié)點的全量備份,如果想備節(jié)點進行全量備份,可以在備節(jié)點使用如下命令進行全量備份:
pg_rman -B /pg_rman_backup/fullbackup -A 
/pg_rman_backup/walbackup -D /postgres/data backup -b full -
s -S /pg_rman_backup/pg_srvlog -U postgres -d postgres -h
10.0.0.10 -p 5432 --standby-host=10.0.0.11 --standby-
port=5432

2.3 校驗備份集

如上,我們已得到一個全庫備份。因此只需要從驗證備份開始。
pg_rman validate

2.4 列出備份集

pg_rman show


增量備份

重點注意:
增量備份是基于文件系統(tǒng)的update time時間線.
增量備份前提:
  • 必須要有個對應(yīng)的全庫備份。
  • 當(dāng)全庫備份后需要驗證備份集。

3.1 插入一行數(shù)據(jù)

insert into t1 values (2);
3.2 進行增量備份
pg_rman backup --backup-mode incremental --progress --compress-data
如果沒有設(shè)置環(huán)境變量,可以使用如下命令:
pg_rman --backup-path /pg_rman_backup/fullbackup --pgdata 
/postgres/data --arclog-path /pg_rman_backup/walbackup
backup --backup-mode incremental --progress --compress-data
-U postgres -d postgres -h 127.0.0.1 -p 5432
提示:如果是主備環(huán)境,可以使用如下命令:
pg_rman -B /pg_rman_backup/fullbackup -D /postgres/data -A 
/pg_rman_backup/walbackup backup --backup-mode incremental -
-progress --compress-data -U postgres -d postgres -h
10.0.0.10 -p 5432 --standby-host=10.0.0.11 --standby-
port=5432

3.3 校驗備份集

pg_rman validate


刪除備份

4.1 強制刪除比規(guī)定日期更舊的備份

pg_rman delete  -f 2022-08-16 20:28:21
pg_rman purge

4.2 指定備份刪除

pg_rman delete 2022-08-16 20:28:21
pg_rman purge


數(shù)據(jù)恢復(fù)

5.1 全量備份的恢復(fù)

1)刪除數(shù)據(jù)庫數(shù)據(jù)

drop database test;

2)停止數(shù)據(jù)庫

pg_ctl stop

3)進行數(shù)據(jù)恢復(fù):(EndTime)

pg_rman restore -B /pg_rman_backup/fullbackup/ --recovery-target-time "2022-08-16 20:14:58" --hard-copy

4)查看數(shù)據(jù)

如下圖所示,已成功將全量的數(shù)據(jù)恢復(fù):

提示:

  • --如果不指定recovery-target-time,則恢復(fù)到最新時間。
  • --如果不指定hard-copy,則歸檔日志目錄里的歸檔日志是使用的硬連接指向備份目錄中的歸檔日志,加了這個參數(shù)的話,則是直接把備份目錄中的歸檔日志拷貝到歸檔日志目錄。

5.2 增量備份的恢復(fù)

1)刪除數(shù)據(jù)庫數(shù)據(jù)

drop database test;

2)停止數(shù)據(jù)庫

pg_ctl stop

3)進行數(shù)據(jù)恢復(fù):(EndTime)

pg_rman restore -B /pg_rman_backup/fullbackup/ --recovery-target-time "2022-08-16 20:15:01" --hard-copy

4)查看數(shù)據(jù)

如下圖所示,已成功將增量的數(shù)據(jù)恢復(fù):



備份策略演練

說明:

以上我們演練了全量增量的備份,以及全量增量的恢復(fù),除次之外pg_rman還可以指定備份的策略進行備份,例如備份以及歸檔備份的備份冗余度,備份以及歸檔備份保留的天數(shù)等,以下我們就以備份冗余度保存的份數(shù)進行演練:

6.1 修改配置文件

修改配置文件,添加如下參數(shù),這里我們保留3份:
vi pg_rman.ini
KEEP_DATA_GENERATIONS = 3

6.2 進行備份

同樣的操作執(zhí)行4次以上:
pg_rman -B /pg_rman_backup/fullbackup -A 
/pg_rman_backup/walbackup -D /postgres/data backup -b full -
s -S /pg_rman_backup/pg_srvlog -U postgres -d postgres -h
10.0.0.10 -p 5432 --standby-host=10.0.0.11 --standby-
port=5432
pg_rman validate
如下圖所示,我們做了3次全備份,做第4次全備份的時候會第1次的備份從catalog里面刪除。

本文作者:張學(xué)衡(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/129265.html

相關(guān)文章

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<