最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL數(shù)據(jù)庫備份還原全攻略

 更新時(shí)間:2024年04月02日 11:37:32   作者:小馬穿云  
本文主要介紹邏輯備份和連續(xù)歸檔方式的備份及還原,文件系統(tǒng)級備份由于比較簡單,這里不在贅述,以下操作使用的數(shù)據(jù)庫版本為PostgreSQL 12.5,不同的數(shù)據(jù)庫版本在進(jìn)行連續(xù)歸檔操作時(shí)會(huì)有細(xì)微差異,需要的朋友可以參考下

前言

  • 邏輯備份
    即SQL轉(zhuǎn)儲(chǔ)方式,使用pg_dump和pg_dumpall進(jìn)行備份。邏輯備份在恢復(fù)時(shí),介于邏輯備份與故障時(shí)間點(diǎn)之間的數(shù)據(jù)難以恢復(fù),所以邏輯備份適用于留存某個(gè)時(shí)間點(diǎn)的備份或進(jìn)行跨平臺(tái)跨版本的數(shù)據(jù)遷移。
  • 文件系統(tǒng)級備份
    即拷貝數(shù)據(jù)文件的完整目錄,備份時(shí)需要關(guān)閉數(shù)據(jù)庫。恢復(fù)數(shù)據(jù)庫時(shí),只需將數(shù)據(jù)目錄復(fù)制到原來的位置。該方式實(shí)際工作中很少使用。
  • 連續(xù)歸檔
    該方式是把一個(gè)文件系統(tǒng)級別的全量備份和WAL(預(yù)寫式日志)級別的增量備份結(jié)合起來。當(dāng)需要恢復(fù)時(shí),我們先恢復(fù)文件系統(tǒng)級別的備份,然后重放備份的WAL文件,把系統(tǒng)恢復(fù)到之前的某個(gè)狀態(tài)。

本文主要介紹邏輯備份和連續(xù)歸檔方式的備份及還原,文件系統(tǒng)級備份由于比較簡單,這里不在贅述。

以下操作使用的數(shù)據(jù)庫版本為PostgreSQL 12.5,不同的數(shù)據(jù)庫版本在進(jìn)行連續(xù)歸檔操作時(shí)會(huì)有細(xì)微差異。

一、邏輯備份

1.pg_dump工具

以下為pg_dump工具的常用參數(shù)選項(xiàng)(更多參數(shù)可使用pg_dump --help查看)

聯(lián)接選項(xiàng):
-h, --host=主機(jī)名  數(shù)據(jù)庫服務(wù)器的主機(jī)名或套接字目錄
-U, --username=名字  以指定的數(shù)據(jù)庫用戶聯(lián)接
-d, --dbname=DBNAME  對數(shù)據(jù)庫 DBNAME備份
-p, --port=端口號  數(shù)據(jù)庫服務(wù)器的端口號
-w, --no-password  永遠(yuǎn)不提示輸入口令
-W, --password   強(qiáng)制口令提示 (自動(dòng))
--role=ROLENAME   在轉(zhuǎn)儲(chǔ)前運(yùn)行SET ROLE

一般選項(xiàng):
-f, --file=FILENAME   輸出文件或目錄名,導(dǎo)出到指定文件
-F, --format= p|c|d|t 導(dǎo)出文件格式(p|c|d|t)
		p:plain-輸出普通文字SQL腳本(默認(rèn));
		c:custom-輸出自定義歸檔格式,適用于pg_restore導(dǎo)入,該格式是最靈活導(dǎo)出方式,允許在導(dǎo)入時(shí)自定義選擇和重			排序歸檔條目。該格式默認(rèn)啟用壓縮;
		d:directory-輸出文件夾歸檔格式,適用于pg_restore導(dǎo)入。該格式會(huì)創(chuàng)建一個(gè)文件夾,一個(gè)表對應(yīng)一個(gè)文件。該格式默認(rèn)啟用壓縮,并且支持并行導(dǎo)出;
		t:tar-輸出tar壓縮歸檔格式,適用于pg_restore導(dǎo)入。該格式將文件夾歸檔格式產(chǎn)生的文件夾壓縮成tar壓縮包。但該格式不支持壓縮(文件夾歸檔已經(jīng)壓縮了),并且在導(dǎo)入時(shí)也不能更改相關(guān)的表順序。
控制輸出內(nèi)容選項(xiàng):
-s, --schema-only   只轉(zhuǎn)儲(chǔ)模式, 不包括數(shù)據(jù) 
-a, --data-only    只轉(zhuǎn)儲(chǔ)數(shù)據(jù),不包括模式
-t, --table=TABLE   只轉(zhuǎn)儲(chǔ)指定名稱的表
-T, --exclude-table=TABLE 不轉(zhuǎn)儲(chǔ)指定名稱的表
-C, --create     在轉(zhuǎn)儲(chǔ)中包括創(chuàng)建數(shù)據(jù)庫語句
-c, --clean:包含drop刪除語句,建議與--if-exists同時(shí)使用;
--if-exists,drop刪除語句時(shí)帶上IF EXISTS指令
-n, --schema=SCHEMA   只轉(zhuǎn)儲(chǔ)指定名稱的模式
-N, --exclude-schema=SCHEMA 不轉(zhuǎn)儲(chǔ)已命名的模式
-O, --no-owner    在明文格式中, 忽略恢復(fù)對象所屬者
-S, --superuser=NAME   在明文格式中使用指定的超級用戶名
--column-inserts    以帶有列名的INSERT命令形式轉(zhuǎn)儲(chǔ)數(shù)據(jù)
--inserts     以INSERT命令,而不是COPY命令的形式轉(zhuǎn)儲(chǔ)數(shù)據(jù)
--disable-triggers   在只恢復(fù)數(shù)據(jù)的過程中禁用觸發(fā)器
--exclude-table-data=TABLE 不轉(zhuǎn)儲(chǔ)指定名稱的表中的數(shù)據(jù)
--no-synchronized-snapshots 在并行工作集中不使用同步快照
--no-tablespaces    不轉(zhuǎn)儲(chǔ)表空間分配信息
--no-unlogged-table-data  不轉(zhuǎn)儲(chǔ)沒有日志的表數(shù)據(jù)
--quote-all-identifiers  所有標(biāo)識(shí)符加引號,即使不是關(guān)鍵字
--section=SECTION   備份命名的節(jié) (數(shù)據(jù)前, 數(shù)據(jù), 及 數(shù)據(jù)后)
--serializable-deferrable 等到備份可以無異常運(yùn)行
--snapshot=SNAPSHOT   為轉(zhuǎn)儲(chǔ)使用給定的快照
--strict-names    要求每個(gè)表和/或schema包括模式以匹配至少一個(gè)實(shí)體

常用示例:

#備份schema及數(shù)據(jù),指定數(shù)據(jù)庫pg_hive,指定文件為pg_hive20210108.sql
pg_dump -h 127.0.0.1 -U postgres -d pg_hive -f /opt/pg_hive20210108.sql

#只備份schema
pg_dump -h 127.0.0.1 -U postgres -d pg_hive -s -f /opt/pg_hive20210108.sql

#只備份數(shù)據(jù)
pg_dump -h 127.0.0.1 -U postgres -d pg_hive -a -f /opt/pg_hive20210108.sql

#備份單個(gè)表
pg_dump -h 127.0.0.1 -U postgres -d pg_hive –t table1 -f /opt/pg_hive20210108.sql

#備份多個(gè)表
pg_dump -h 127.0.0.1 -U postgres -d pg_hive –t table1 –t table2 -f /opt/pg_hive20210108.sql

#以帶有列名的INSERT命令形式轉(zhuǎn)儲(chǔ)數(shù)據(jù)
pg_dump -h 127.0.0.1 -U postgres -d pg_hive --column-inserts -f /opt/pg_hive20210108.sql

#指定導(dǎo)出格式為自定義格式(二進(jìn)制形式)
pg_dump -h 127.0.0.1 -U postgres -d pg_hive -Fc -f /opt/pg_hive20210108.dump

#使用gzip壓縮轉(zhuǎn)儲(chǔ)(針對大型數(shù)據(jù)庫)
pg_dump -h 127.0.0.1 -U postgres -d pg_hive | gzip > /opt/pg_hive20210108_gz.sql.gz

#使用split切片文件(針對大型數(shù)據(jù)庫)
/pg_dump -h 127.0.0.1 -U postgres -d pg_hive | split -b 100m - /opt/pg_hive20210108_sp.sql

2.pg_dumpall工具

相對于pg_dump只能備份單個(gè)庫,pg_dumpall可以備份整個(gè)PostgreSql實(shí)例中所有的數(shù)據(jù),包括角色和表空間定義。

使用示例:

#備份整個(gè)postgresql實(shí)例中所有的數(shù)
pg_dumpall -h 127.0.0.1 -U postgres  -f /opt/pg_hive20210108_all.sql

二、邏輯備份還原

邏輯備份的還原命令為psql和pg_restore:

如果使用pg_dump未指定format(即未使用-F參數(shù)),則導(dǎo)出的是SQL腳本,導(dǎo)入時(shí)需用psql命令,否則用pg_restore還原。因這2個(gè)還原工具大部分參數(shù)與pg_dump含義相近,可使用命令后加–help查看詳細(xì)參數(shù)。

常用示例:

#pg_dump備份時(shí)未指定format,還原時(shí)用psql
psql -h 127.0.0.1 -U postgres -d pg_hive -f /opt/pg_hive20210108.sql

#pg_dump備份時(shí)候使用-F參數(shù)指定format,還原時(shí)用pg_restore 
pg_restore -h 127.0.0.1 -U postgres -d pg_hive /opt/pg_hive20210108.dump

#還原gzip壓縮數(shù)據(jù)庫備份
gunzip -c /opt/pg_hive20210108_gz.sql.gz | psql -h 127.0.0.1 -U postgres -d pg_hive

#還原切片數(shù)據(jù)庫備份
cat /opt/pg_hive20210108_sp.sql* | psql -h 127.0.0.1 -U postgres -d pg_hive

三、連續(xù)歸檔備份

連續(xù)歸檔是通過基礎(chǔ)備份和wal日志相結(jié)合的方式進(jìn)行備份,恢復(fù)的時(shí)候可以選擇恢復(fù)到指定的時(shí)間點(diǎn)、指定事務(wù)點(diǎn)、或者完全恢復(fù)到wal日志的最新位置。

操作步驟如下:

1、創(chuàng)建備份目錄

#創(chuàng)建基礎(chǔ)備份目錄
mkdir -p /data/pg_base
#創(chuàng)建wal日志備份目錄
mkdir -p /data/pg_archive

注意新建備份文件夾的權(quán)限及所有者,否則會(huì)備份失敗

#更新備份文件夾的所有者
chown postgres:postgres /data/pg_base
chown postgres:postgres /data/pg_archive

2、修改配置文件

打開postgresql.conf配置文件,修改以下3個(gè)參數(shù):

vi postgresql.conf

#wal_level中有三個(gè)主要的參數(shù):minimal、archive和hot_standby。1.minimal是默認(rèn)的值,它僅寫入崩潰或者突發(fā)關(guān)機(jī)時(shí)所需要的信息(不建議使用)。2.archive是增加wal歸檔所需的日志(最常用)。3.hot_standby是在備用服務(wù)器上增加了運(yùn)行只讀查詢所需的信息,一般實(shí)在流復(fù)制的時(shí)候使用到
wal_level = archive
#開啟歸檔模式
archive_mode = on
#備份wal日志,每天生成一個(gè)日期命名的文件夾
archive_command = 'DIR=/data/pg_archive/`date +%F`; test ! -d $DIR && mkdir -p $DIR; test ! -f $DIR/%f && cp %p $DIR/%f'

3、重啟pg數(shù)據(jù)庫

命令為:pg_ctl restart

在這里插入圖片描述

4、創(chuàng)建表

該步驟為測試備份及恢復(fù)效果使用

--創(chuàng)建表,插入10條測試數(shù)據(jù):
create table test (id integer);
insert into test values(generate_series(1,10));

5、做基礎(chǔ)備份

pg_basebackup -Ft -Pv -Xf -z -Z5 -D /data/pg_base/`date +%F`

為了測試備份和恢復(fù)效果,再插入10條數(shù)據(jù),并進(jìn)行手動(dòng)切換wal日志,執(zhí)行如下sql:

#插入數(shù)據(jù)
insert into test values(generate_series(1,10));
#切換wal日志
select pg_switch_wal();

四、連續(xù)歸檔恢復(fù)

1、創(chuàng)建data文件夾

#重命名原來的data文件夾
mv /pgsql/postgresql/data   /pgsql/postgresql/data.bak
#創(chuàng)建新的data文件夾
mkdir data 

2、解壓基礎(chǔ)備份至新建的data文件夾

#拷貝基礎(chǔ)備份到新建data文件夾
cp /data/pg_base/2021-01-15/base.tar.gz /pgsql/postgresql/data
#解壓文件
tar -zxvf base.tar.gz
#刪除基礎(chǔ)備份中的wal日志和postmaster.pid文件
Cd /pgsql/postgresql/data
rm -rf pg_wal
rm -rf postmaster.pid
#創(chuàng)建archive_status文件夾
mkdir -p pg_wal/archive_status

3、修改配置文件

vi postgresql.conf

#修改restore_command為要恢復(fù)的wal日志目錄
restore_command = 'cp /data/pg_archive/2021-01-15/%f %p'

4、新建recovery.signal文件

#恢復(fù)時(shí)依賴該文件,恢復(fù)至最新wal位置,文件無需添加內(nèi)容
touch recovery.signal

5、賦權(quán)并啟動(dòng)數(shù)據(jù)庫

#新建的data文件夾更改所有者
chown -R  postgres:postgres /pgsql/postgresql/data
#修改data目錄權(quán)限,否則會(huì)因?yàn)槟夸洐?quán)限過大無法啟動(dòng)數(shù)據(jù)庫
chmod 0700 data -R
#啟動(dòng)數(shù)據(jù)庫
pg_ctl start

6、驗(yàn)證恢復(fù)效果

如下圖,已通過基礎(chǔ)備份和wal日志恢復(fù)全部數(shù)據(jù)。

在這里插入圖片描述

總結(jié)

新創(chuàng)建文件夾時(shí)注意文件夾的歸屬及權(quán)限,否則會(huì)導(dǎo)致備份或恢復(fù)失敗。

以上就是PostgreSQL數(shù)據(jù)庫備份還原全攻略的詳細(xì)內(nèi)容,更多關(guān)于PostgreSQL備份還原的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志

    PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志

    在?般的?產(chǎn)環(huán)境中,數(shù)據(jù)庫都需要開啟歸檔模式,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • PostgreSQL高效處理上億級圖片URL與MD5映射關(guān)系的設(shè)計(jì)方案

    PostgreSQL高效處理上億級圖片URL與MD5映射關(guān)系的設(shè)計(jì)方案

    在現(xiàn)代數(shù)據(jù)密集型應(yīng)用中,如內(nèi)容去重系統(tǒng)、圖像搜索引擎、CDN 緩存管理或電商反爬監(jiān)控平臺(tái),常常需要存儲(chǔ)海量圖片的 URL 與其內(nèi)容哈希(如MD5)的映射關(guān)系,本文將講述如何在 PostgreSQL 中安全、高效、可擴(kuò)展地處理上億級圖片-MD5 映射數(shù)據(jù),需要的朋友可以參考下
    2026-01-01
  • PostgreSQL容器磁盤I/O監(jiān)控與優(yōu)化指南

    PostgreSQL容器磁盤I/O監(jiān)控與優(yōu)化指南

    在數(shù)據(jù)庫運(yùn)維工作中,磁盤 I/O 性能直接影響著 PostgreSQL 的查詢響應(yīng)速度和事務(wù)處理能力,本文給大家介紹了PostgreSQL容器磁盤I/O監(jiān)控與優(yōu)化指南,需要的朋友可以參考下
    2025-05-05
  • PostgreSQL12同步流復(fù)制搭建及主備切換方式

    PostgreSQL12同步流復(fù)制搭建及主備切換方式

    這篇文章主要介紹了PostgreSQL12同步流復(fù)制搭建及主備切換方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • PostgreSQL如何用psql運(yùn)行SQL文件

    PostgreSQL如何用psql運(yùn)行SQL文件

    文章介紹了兩種運(yùn)行預(yù)寫好的SQL文件的方式:首先連接數(shù)據(jù)庫后執(zhí)行,或者直接通過psql命令執(zhí)行,需要注意的是,文件路徑在Linux系統(tǒng)中應(yīng)使用斜杠/,而不是反斜杠\,否則會(huì)報(bào)Permission denied錯(cuò)誤
    2024-12-12
  • PostgreSQL遠(yuǎn)程連接配置的實(shí)現(xiàn)

    PostgreSQL遠(yuǎn)程連接配置的實(shí)現(xiàn)

    本文主要介紹了在Windows上通過Navicat遠(yuǎn)程連接PostgreSQL的配置方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-06-06
  • Postgresql 截取字符串的案例

    Postgresql 截取字符串的案例

    這篇文章主要介紹了Postgresql 截取字符串的案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL .history 文件詳解

    PostgreSQL .history 文件詳解

    本文解釋了PostgreSQL的.history文件(時(shí)間線歷史文件)的重要性、格式、作用及備份恢復(fù)方案,該文件記錄時(shí)間線切換事件,對PITR、備庫構(gòu)建和pg_rewind等操作至關(guān)重要,誤刪會(huì)導(dǎo)致備份失敗、備庫重建等問題,感興趣的朋友一起看看吧
    2026-04-04
  • 從原理到實(shí)戰(zhàn)詳解PostgreSQL如何進(jìn)行性能優(yōu)化

    從原理到實(shí)戰(zhàn)詳解PostgreSQL如何進(jìn)行性能優(yōu)化

    PostgreSQL作為成熟的開源關(guān)系型數(shù)據(jù)庫,以其豐富的特性和高擴(kuò)展性受到廣泛青睞,但如果不對其內(nèi)部原理與配置參數(shù)進(jìn)行深入理解并合理調(diào)優(yōu),往往難以發(fā)揮其最佳性能,本文我們就來看看PostgreSQL性能優(yōu)化的相關(guān)技巧吧
    2025-07-07
  • GP如何查詢并刪除重復(fù)數(shù)據(jù)

    GP如何查詢并刪除重復(fù)數(shù)據(jù)

    這篇文章主要介紹了GP如何查詢并刪除重復(fù)數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

精河县| 天水市| 瓦房店市| 沧州市| 林芝县| 宜兴市| 宿州市| 任丘市| 视频| 齐河县| 新巴尔虎左旗| 萍乡市| 永新县| 文登市| 库车县| 东阿县| 英超| 乌拉特中旗| 定日县| 太康县| 景洪市| 阜平县| 泰州市| 聂拉木县| 金华市| 湖口县| 沅江市| 延川县| 岚皋县| 湘西| 工布江达县| 徐州市| 平安县| 教育| 同心县| 肥乡县| 景宁| 水城县| 石首市| 漳平市| 阿城市|