PostgreSQL的 archive_mode 參數(shù)配置示例詳解
PostgreSQL的 archive_mode 參數(shù)詳解
一 archive_mode 參數(shù)概述
1.1. 基本定義
-- archive_mode 控制是否啟用 WAL 歸檔 archive_mode = on|off|always
1.2. 三個(gè)選項(xiàng)的對(duì)比
| 選項(xiàng) | 描述 | 使用場(chǎng)景 | 重啟要求 |
|---|---|---|---|
| off | 禁用歸檔 | 開(kāi)發(fā)/測(cè)試環(huán)境 | 不需要 |
| on | 啟用歸檔 | 生產(chǎn)環(huán)境、主節(jié)點(diǎn) | 需要重啟 |
| always | 總是歸檔 | 備用服務(wù)器、所有節(jié)點(diǎn) | 需要重啟 |
二 off 模式
2.1. 配置和特性
archive_mode = off
2.2. 行為特點(diǎn)
-- 禁用 WAL 歸檔 - 不執(zhí)行 archive_command - 不保留歸檔的 WAL 文件 - 只能進(jìn)行完整備份,不能進(jìn)行 PITR - 節(jié)省磁盤(pán)空間和 I/O 開(kāi)銷
2.3. 使用場(chǎng)景
# 適用于: # - 開(kāi)發(fā)/測(cè)試環(huán)境 # - 不需要時(shí)間點(diǎn)恢復(fù)的環(huán)境 # - 磁盤(pán)空間有限的場(chǎng)景 # - 臨時(shí)數(shù)據(jù)庫(kù) # 配置示例 echo "archive_mode = off" >> /var/lib/postgresql/14/main/postgresql.conf
三 on 模式
3.1. 配置和特性
archive_mode = on
3.2. 行為特點(diǎn)
-- 啟用 WAL 歸檔 - 執(zhí)行 archive_command 歸檔完成的 WAL 文件 - 支持時(shí)間點(diǎn)恢復(fù) (PITR) - 支持基于 WAL 的備份策略 - 在主服務(wù)器上正常工作 - 在備用服務(wù)器上不歸檔
3.3. 必需的相關(guān)配置
# postgresql.conf - on 模式配置 archive_mode = on wal_level = replica # 必須為 replica 或 logical archive_command = 'cp %p /archive/%f' # 必須設(shè)置歸檔命令 # 可選配置 archive_timeout = 300 # 歸檔超時(shí)(秒)
3.4. 使用場(chǎng)景
# 適用于: # - 生產(chǎn)環(huán)境主節(jié)點(diǎn) # - 需要時(shí)間點(diǎn)恢復(fù)的環(huán)境 # - 基于 WAL 的備份策略 # - 高可用集群的主節(jié)點(diǎn)
四 always 模式
4.1. 配置和特性
archive_mode = always
4.2. 行為特點(diǎn)
-- 總是啟用 WAL 歸檔 - 在主服務(wù)器和備用服務(wù)器上都執(zhí)行歸檔 - 備用服務(wù)器也歸檔其接收的 WAL - 支持級(jí)聯(lián)復(fù)制環(huán)境中的歸檔 - 增加備用服務(wù)器的 I/O 負(fù)載
4.3. 必需的相關(guān)配置
# postgresql.conf - always 模式配置 archive_mode = always wal_level = replica # 必須為 replica 或 logical archive_command = 'cp %p /archive/%f' # 必須設(shè)置歸檔命令 # 在備用服務(wù)器上還需要 hot_standby = on
4.4. 使用場(chǎng)景
# 適用于: # - 級(jí)聯(lián)復(fù)制環(huán)境 # - 所有節(jié)點(diǎn)都需要?dú)w檔的集群 # - 備用服務(wù)器也需要 PITR 能力的環(huán)境 # - 多層級(jí)備份架構(gòu)
五 配置驗(yàn)證和檢查
5.1. 檢查當(dāng)前 archive_mode
-- 查看當(dāng)前 archive_mode 設(shè)置
SELECT name, setting, unit, context, pending_restart
FROM pg_settings
WHERE name = 'archive_mode';
name | setting | unit | context | pending_restart
--------------+---------+------+------------+-----------------
archive_mode | on | | postmaster | f
(1 row)
-- 檢查歸檔相關(guān)參數(shù)
SELECT name, setting, pending_restart
FROM pg_settings
WHERE name IN ('archive_mode', 'wal_level', 'archive_command', 'archive_timeout');5.2. 驗(yàn)證歸檔狀態(tài)
-- 檢查歸檔統(tǒng)計(jì)信息
SELECT * FROM pg_stat_archiver;
-- 輸出示例:
archived_count | last_archived_wal | last_archived_time | failed_count | last_failed_wal | last_failed_time | stats_reset
----------------+--------------------------+-------------------------------+--------------+-----------------+------------------+-----------------------
--------
451 | 0000000100000001000000D9 | 2025-11-27 17:49:22.393339+08 | 0 | | | 2025-11-25 09:03:40.58
2174+08
(1 row)
-- 檢查未歸檔的 WAL 文件
SELECT count(*) as pending_archive
FROM pg_ls_archive_statusdir()
WHERE name LIKE '%.ready';六 配置示例
6.1. 開(kāi)發(fā)環(huán)境配置
# 開(kāi)發(fā)環(huán)境 - 禁用歸檔 archive_mode = off wal_level = minimal archive_command = ''
6.2. 生產(chǎn)主節(jié)點(diǎn)配置
# 生產(chǎn)主節(jié)點(diǎn) - 啟用歸檔 archive_mode = on wal_level = replica archive_command = 'test ! -f /var/lib/postgresql/wal_archive/%f && cp %p /var/lib/postgresql/wal_archive/%f' archive_timeout = 300 max_wal_senders = 10
6.3. 級(jí)聯(lián)復(fù)制備用節(jié)點(diǎn)配置
# 備用節(jié)點(diǎn) - 總是歸檔 archive_mode = always wal_level = replica archive_command = 'test ! -f /var/lib/postgresql/wal_archive/%f && cp %p /var/lib/postgresql/wal_archive/%f' archive_timeout = 300 hot_standby = on max_wal_senders = 5
6.4. 高可用集群配置
# 主節(jié)點(diǎn)配置 archive_mode = on wal_level = replica archive_command = 'rsync -av %p backup-server:/wal_archive/%f' # 備用節(jié)點(diǎn)配置 (可能升級(jí)為主節(jié)點(diǎn)) archive_mode = always wal_level = replica archive_command = 'rsync -av %p backup-server:/wal_archive/%f' hot_standby = on
七 修改 archive_mode
7.1. 修改步驟
# 1. 修改 postgresql.conf echo "archive_mode = on" >> /var/lib/postgresql/14/main/postgresql.conf # 2. 設(shè)置歸檔命令(如果啟用歸檔) echo "archive_command = 'cp %p /archive/%f'" >> /var/lib/postgresql/14/main/postgresql.conf # 3. 確保 wal_level 正確 echo "wal_level = replica" >> /var/lib/postgresql/14/main/postgresql.conf # 4. 重啟 PostgreSQL(從 off 到 on/always 需要重啟) systemctl restart postgresql # 5. 驗(yàn)證修改 psql -c "SELECT name, setting FROM pg_settings WHERE name = 'archive_mode';"
7.2. 修改注意事項(xiàng)
-- 重要提醒: -- 1. 從 off 切換到 on/always 需要重啟 PostgreSQL -- 2. 從 on/always 切換到 off 需要重啟 PostgreSQL -- 3. 啟用歸檔必須設(shè)置有效的 archive_command -- 4. 啟用歸檔要求 wal_level = replica 或 logical -- 5. 確保歸檔目錄存在且有正確權(quán)限 -- 檢查是否需要重啟 SELECT name, setting, pending_restart FROM pg_settings WHERE name = 'archive_mode' AND pending_restart;
到此這篇關(guān)于PostgreSQL的 archive_mode 參數(shù)詳解的文章就介紹到這了,更多相關(guān)postgresql archive_mode 參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL中設(shè)置和管理數(shù)據(jù)庫(kù)索引的操作指南
索引是數(shù)據(jù)庫(kù)管理系統(tǒng)中的一個(gè)重要特性,能夠顯著提高查詢性能,PostgreSQL 作為一個(gè)強(qiáng)大的開(kāi)源關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),提供了多種類型的索引結(jié)構(gòu),以滿足不同的需求,本文將詳細(xì)介紹 PostgreSQL 中如何設(shè)置和管理索引,需要的朋友可以參考下2025-06-06
PostgreSQL之分區(qū)表(partitioning)
通過(guò)合理的設(shè)計(jì),可以將選擇一定的規(guī)則,將大表切分多個(gè)不重不漏的子表,這就是傳說(shuō)中的partitioning。比如,我們可以按時(shí)間切分,每天一張子表,比如我們可以按照某其他字段分割,總之了就是化整為零,提高查詢的效能2016-11-11
PostgreSQL中調(diào)用存儲(chǔ)過(guò)程并返回?cái)?shù)據(jù)集實(shí)例
這篇文章主要介紹了PostgreSQL中調(diào)用存儲(chǔ)過(guò)程并返回?cái)?shù)據(jù)集實(shí)例,本文給出一創(chuàng)建數(shù)據(jù)表、插入測(cè)試數(shù)據(jù)、創(chuàng)建存儲(chǔ)過(guò)程、調(diào)用創(chuàng)建存儲(chǔ)過(guò)程和運(yùn)行效果完整例子,需要的朋友可以參考下2015-01-01
PostgreSQL數(shù)據(jù)庫(kù)儲(chǔ)存空間不足的解決方案
在使用 PostgreSQL 數(shù)據(jù)庫(kù)時(shí),可能會(huì)遇到存儲(chǔ)空間不足的問(wèn)題,這個(gè)問(wèn)題不僅會(huì)影響數(shù)據(jù)庫(kù)的正常運(yùn)行,還可能導(dǎo)致數(shù)據(jù)丟失或應(yīng)用程序出現(xiàn)故障,因此,了解如何應(yīng)對(duì)這種情況至關(guān)重要,所以本文給大家就介紹了PostgreSQL數(shù)據(jù)庫(kù)儲(chǔ)存空間不足的解決方案,需要的朋友可以參考下2024-07-07
postgres 實(shí)現(xiàn)查詢某條數(shù)據(jù)的排名
這篇文章主要介紹了postgres 實(shí)現(xiàn)查詢某條數(shù)據(jù)的排名,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
PostgreSQL pg_archivecleanup與清理archivelog的操作
這篇文章主要介紹了PostgreSQL pg_archivecleanup與清理archivelog的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
解決sqoop import 導(dǎo)入到hive后數(shù)據(jù)量變多的問(wèn)題
這篇文章主要介紹了解決sqoop import 導(dǎo)入到hive后數(shù)據(jù)量變多的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
PostgreSQL實(shí)現(xiàn)透視表查詢的方法詳解
PostgreSQL 8.3版本發(fā)布時(shí),引入了一個(gè)名為tablefunc的新擴(kuò)展,這個(gè)擴(kuò)展提供了一組非常有趣的函數(shù),其中之一是交叉表函數(shù),用于創(chuàng)建數(shù)據(jù)透視表,這就是我們將在本文中討論的內(nèi)容,本文給大家介紹了PostgreSQL實(shí)現(xiàn)透視表查詢的方法,需要的朋友可以參考下2024-12-12

