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

基于Bash自動(dòng)化實(shí)現(xiàn)PostgreSQL主從復(fù)制的實(shí)戰(zhàn)指南

 更新時(shí)間:2026年03月06日 08:40:57   作者:ElioXu  
文章介紹了基于Bash自動(dòng)化實(shí)現(xiàn)PostgreSQL主從復(fù)制的步驟,適用于Ubuntu/Debian系統(tǒng),適用于PostgreSQL?16/17版本,腳本自動(dòng)識(shí)別版本、配置主從庫(kù),并詳細(xì)解析了腳本邏輯和參數(shù),需要的朋友可以參考下

基于 Bash 自動(dòng)化實(shí)現(xiàn) PostgreSQL 主從復(fù)制
支持 Ubuntu / Debian 系統(tǒng)(APT)
適用于 PostgreSQL 16 / 17 最新版本

一、PostgreSQL 主從架構(gòu)原理

PostgreSQL 主從復(fù)制(Streaming Replication)工作流程:

  1. 主庫(kù)寫(xiě)入數(shù)據(jù)
  2. 生成 WAL 日志
  3. 從庫(kù)實(shí)時(shí)拉取 WAL
  4. 重放日志實(shí)現(xiàn)數(shù)據(jù)同步

簡(jiǎn)單理解:

主庫(kù)負(fù)責(zé)寫(xiě)入
從庫(kù)負(fù)責(zé)讀取 + 數(shù)據(jù)備份

適合:

  • 讀寫(xiě)分離
  • 數(shù)據(jù)容災(zāi)
  • 高可用架構(gòu)基礎(chǔ)

二、架構(gòu)流程圖(Mermaid)

flowchart LR
    A[Client 寫(xiě)入] --> B[Primary 主庫(kù)]
    B --> C[生成 WAL 日志]
    C --> D[Replica 從庫(kù)]
    D --> E[重放 WAL 同步數(shù)據(jù)]

三、自動(dòng)化部署腳本

#!/bin/bash

PRIMARY_IP="192.168.1.10"
REPLICA_IP="192.168.1.11"
REPL_USER="repl_user"
REPL_PASS="YourStrongPassword"

set -e

echo "=== PostgreSQL 一主一從自動(dòng)化部署腳本 ==="
echo "1. 安裝并配置為主庫(kù) (Primary)"
echo "2. 安裝并配置為從庫(kù) (Replica)"
read -p "請(qǐng)選擇模式 (1/2): " MODE

sudo apt update
sudo apt install -y postgresql postgresql-contrib

PG_VER=$(psql --version | grep -oE '[0-9]+' | head -1)
DATA_DIR="/var/lib/postgresql/$PG_VER/main"
CONF_DIR="/etc/postgresql/$PG_VER/main"

if [ "$MODE" == "1" ]; then

    sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/ " $CONF_DIR/postgresql.conf

    sudo -u postgres psql -c "CREATE ROLE $REPL_USER WITH REPLICATION LOGIN ENCRYPTED PASSWORD '$REPL_PASS';"

    echo "host replication $REPL_USER $REPLICA_IP/32 md5" | sudo tee -a $CONF_DIR/pg_hba.conf

    sudo systemctl restart postgresql

elif [ "$MODE" == "2" ]; then

    sudo systemctl stop postgresql
    sudo rm -rf $DATA_DIR/*

    sudo -u postgres PGPASSWORD=$REPL_PASS pg_basebackup \
        -h $PRIMARY_IP \
        -D $DATA_DIR \
        -U $REPL_USER \
        -v -P -R \
        --slot=replica_slot_1 -C

    sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/ " $CONF_DIR/postgresql.conf

    sudo systemctl start postgresql

else
    echo "無(wú)效選項(xiàng)"
    exit 1
fi

sudo systemctl status postgresql --no-pager

四、腳本邏輯逐步解析

1?? set -e 的作用

set -e

作用:

一旦有命令執(zhí)行失敗,腳本立即退出

防止錯(cuò)誤被忽略。

2?? 自動(dòng)識(shí)別 PostgreSQL 版本

PG_VER=$(psql --version | grep -oE '[0-9]+' | head -1)

作用:

自動(dòng)匹配安裝版本路徑,例如:

/var/lib/postgresql/16/main

避免寫(xiě)死版本號(hào)。

3?? 主庫(kù)模式做了什么?

? 開(kāi)啟監(jiān)聽(tīng)所有 IP
? 創(chuàng)建復(fù)制賬號(hào)
? 修改 pg_hba.conf 允許從庫(kù)連接
? 重啟數(shù)據(jù)庫(kù)

核心:

CREATE ROLE repl_user WITH REPLICATION LOGIN PASSWORD 'xxx';

4?? 從庫(kù)模式做了什么?

? 停止數(shù)據(jù)庫(kù)
? 刪除舊數(shù)據(jù)目錄
? 執(zhí)行 pg_basebackup 拉取數(shù)據(jù)
? 自動(dòng)生成 standby.signal 文件

五、pg_basebackup 參數(shù)詳解

pg_basebackup -h 主庫(kù)IP -D 數(shù)據(jù)目錄 -U 用戶 -v -P -R --slot=replica_slot_1 -C
參數(shù)作用
-h主庫(kù)地址
-D數(shù)據(jù)存放目錄
-U復(fù)制賬號(hào)
-v顯示詳細(xì)日志
-P顯示進(jìn)度條
-R自動(dòng)生成恢復(fù)配置
--slot使用復(fù)制槽
-C自動(dòng)創(chuàng)建復(fù)制槽

六、生產(chǎn)環(huán)境注意事項(xiàng)

1. 必須放通 5432 端口

檢查:

ufw status

2. 復(fù)制槽風(fēng)險(xiǎn)

如果從庫(kù)長(zhǎng)期宕機(jī):

主庫(kù) WAL 會(huì)堆積

可能導(dǎo)致磁盤(pán)爆滿。

建議:

定期檢查:

SELECT * FROM pg_replication_slots;

3. 主庫(kù)參數(shù)建議調(diào)整

在 postgresql.conf 中增加:

wal_level = replica
max_wal_senders = 10
max_replication_slots = 10

七、驗(yàn)證主從是否成功

主庫(kù)執(zhí)行:

SELECT * FROM pg_stat_replication;

看到狀態(tài)為:

streaming

說(shuō)明正常。

從庫(kù)執(zhí)行:

SELECT pg_is_in_recovery();

返回:

t

說(shuō)明當(dāng)前為從庫(kù)狀態(tài)。

總結(jié)

這套腳本適用于:

  • 內(nèi)網(wǎng)雙機(jī)部署
  • 實(shí)驗(yàn)環(huán)境
  • 小型生產(chǎn)環(huán)境

以上就是基于Bash自動(dòng)化實(shí)現(xiàn)PostgreSQL主從復(fù)制的實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Bash PostgreSQL主從復(fù)制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 查看postgresql數(shù)據(jù)庫(kù)用戶系統(tǒng)權(quán)限、對(duì)象權(quán)限的方法

    查看postgresql數(shù)據(jù)庫(kù)用戶系統(tǒng)權(quán)限、對(duì)象權(quán)限的方法

    這篇文章主要介紹了查看postgresql數(shù)據(jù)庫(kù)用戶系統(tǒng)權(quán)限、對(duì)象權(quán)限的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • navicat連接postgresql、人大金倉(cāng)等數(shù)據(jù)庫(kù)報(bào)錯(cuò)解決辦法

    navicat連接postgresql、人大金倉(cāng)等數(shù)據(jù)庫(kù)報(bào)錯(cuò)解決辦法

    在使用Navicat操作數(shù)據(jù)庫(kù)時(shí),遇到數(shù)據(jù)報(bào)錯(cuò)是一個(gè)常見(jiàn)的問(wèn)題,這類問(wèn)題可能涉及多個(gè)方面,下面這篇文章主要給大家介紹了關(guān)于navicat連接postgresql、人大金倉(cāng)等數(shù)據(jù)庫(kù)報(bào)錯(cuò)的解決辦法,需要的朋友可以參考下
    2024-08-08
  • postgresql 賦權(quán)語(yǔ)句 grant的正確使用說(shuō)明

    postgresql 賦權(quán)語(yǔ)句 grant的正確使用說(shuō)明

    這篇文章主要介紹了postgresql 賦權(quán)語(yǔ)句 grant的正確使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 詳解PostgreSQL 語(yǔ)法中關(guān)鍵字的添加

    詳解PostgreSQL 語(yǔ)法中關(guān)鍵字的添加

    這篇文章主要介紹了詳解PostgreSQL 語(yǔ)法中關(guān)鍵字的添加的相關(guān)資料,這里說(shuō)明下在parser語(yǔ)法解析模塊添加關(guān)鍵字,需要的朋友可以參考下
    2017-08-08
  • PostgreSQL limit的神奇作用詳解

    PostgreSQL limit的神奇作用詳解

    這篇文章主要介紹了PostgreSQL limit的神奇作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-09-09
  • postgresql 中的幾個(gè) timeout參數(shù) 用法說(shuō)明

    postgresql 中的幾個(gè) timeout參數(shù) 用法說(shuō)明

    這篇文章主要介紹了postgresql中的幾個(gè)timeout參數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 在Ubuntu中安裝Postgresql數(shù)據(jù)庫(kù)的步驟詳解

    在Ubuntu中安裝Postgresql數(shù)據(jù)庫(kù)的步驟詳解

    PostgreSQL 是一款強(qiáng)大的,開(kāi)源的,對(duì)象關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)。它支持所有的主流操作系統(tǒng),包括 Linux、Unix(AIX、BSD、HP-UX,SGI IRIX、Mac OS、Solaris、Tru64) 以及 Windows 操作系統(tǒng)。本文給大家介紹了在Ubuntu中安裝Postgresql數(shù)據(jù)庫(kù)的步驟,需要的朋友可以參考下。
    2017-09-09
  • PostgreSQL pg_trgm 模糊搜索完全指南

    PostgreSQL pg_trgm 模糊搜索完全指南

    PostgreSQL的pg_trgm擴(kuò)展通過(guò)三字符組合實(shí)現(xiàn)模糊文本搜索,支持處理拼寫(xiě)錯(cuò)誤和部分匹配,下面就來(lái)詳細(xì)的介紹一下PostgreSQL pg_trgm 模糊搜索完全指南,感興趣的可以了解一下
    2025-11-11
  • postgreSQL數(shù)據(jù)庫(kù)默認(rèn)用戶postgres常用命令分享

    postgreSQL數(shù)據(jù)庫(kù)默認(rèn)用戶postgres常用命令分享

    這篇文章主要介紹了postgreSQL數(shù)據(jù)庫(kù)默認(rèn)用戶postgres常用命令分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 淺談PostgreSQL消耗的內(nèi)存計(jì)算方法

    淺談PostgreSQL消耗的內(nèi)存計(jì)算方法

    這篇文章主要介紹了淺談PostgreSQL消耗的內(nèi)存計(jì)算方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01

最新評(píng)論

泰安市| 资源县| 望都县| 东山县| 广水市| 文成县| 海晏县| 呼和浩特市| 辽阳市| 弥渡县| 马公市| 黄平县| 霍城县| 会东县| 汪清县| 鄂伦春自治旗| 化州市| 公安县| 邯郸市| 商丘市| 连山| 淮滨县| 固安县| 永宁县| 齐河县| 叙永县| 辽宁省| 巴林左旗| 西充县| 武功县| 桦南县| 开平市| 宜良县| 沾益县| 岑溪市| 长丰县| 眉山市| 安陆市| 宜阳县| 塔河县| 九龙坡区|