日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pgpool 之四 2 pgpool + 2 postgresql 的 stream replication 模式

發布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pgpool 之四 2 pgpool + 2 postgresql 的 stream replication 模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

os: ubuntu 16.04
db: postgresql 9.6.8
pgpool: pgpool-II-3.7.7

pgpool 簡介
準確的名字是Pgpool-II,這里簡稱為pgpool。pgpool 是介于postgresql 服務和 postgresql 客戶端的中間件。它提供如下功能:
1、連接池
2、復制
3、負載均衡
4、限制超過限度的連接
5、并行查詢

具有如下工作模式:
1、原始模式
2、連接池模式
3、復制模式
4、主/備模式
5、并行模式

雖然看上去功能強大,但是配置相對繁瑣。

本次實驗為 node1、node2 兩臺機器,每個節點上均安裝了 postgresql 和 pgpool ,vip 為 192.168.56.100

規劃如下:

192.168.56.100 nodevip #vip,pgpool的高可用連接 192.168.56.92 node1 #postgresql 9.6.8,pgpool 192.168.56.90 node2 #postgresql 9.6.8,pgpool

安裝 postgresql 9.6.8

使用 apt install 方式安裝 postgresql 9.6.8,并配置好 stream replication。
參考<<ubuntu 16.04 安裝 postgresql 的優化設置>>,<<ubuntu 16.04 + apt/make + postgresql 11>>,<<pg_basebackup 配置 stream replication 異步/同步>>

postgres=# \x Expanded display is on. postgres=# postgres=# select * from pg_stat_replication;-[ RECORD 1 ]----+------------------------------ pid | 7402 usesysid | 16384 usename | repl application_name | walreceiver client_addr | 192.168.56.90 client_hostname | client_port | 50798 backend_start | 2019-01-02 13:51:34.979528+08 backend_xmin | 591 state | streaming sent_location | 0/C000060 write_location | 0/C000060 flush_location | 0/C000060 replay_location | 0/C000060 sync_priority | 0 sync_state | async

os 設置

/etc/hosts

# vi /etc/hosts 192.168.56.100 nodevip 192.168.56.92 node1 192.168.56.90 node2

postgres 用戶 ssh 免密登錄,參考<<linux 配置ssh信任>>

$ ssh-keygen -t rsa $ ssh-copy-id postgres@192.168.56.92 $ ssh-copy-id postgres@192.168.56.90

apt install

# apt install make gcc libssl-dev libpam0g libpam0g-dev arping watchdog

sudo,參考<<sudo sudoer 配置>>

# vi /etc/sudoers postgres ALL=(ALL:ALL) NOPASSWD:ALL # chmod +s /sbin/ifconfig; chmod +s /sbin/ip; chmod +s /usr/sbin/arping;mkdir -p /usr/pgpool-3.7.7; chown -R postgres:postgres /usr/pgpool-3.7.7; mkdir -p /var/run/pgpool; chown -R postgres:postgres /var/run/pgpool; mkdir -p /var/log/pgpool; chown -R postgres:postgres /var/log/pgpool;# echo "mkdir -p /var/run/pgpool" >> /etc/rc.local ; echo "chown -R postgres:postgres /var/run/pgpool" >> /etc/rc.local ;

安裝 pgpool

# su - postgres $ cd ~ $ wget http://www.pgpool.net/download.php?f=pgpool-II-3.7.7.tar.gz $ tar -zxvf ./download.php\?f\=pgpool-II-3.7.7.tar.gz $ cd pgpool-II-3.7.7$ ./configure --prefix=/usr/pgpool-3.7.7 -with-pgsql=/usr/lib/postgresql/9.6 \ --with-pgsql-includedir=/usr/include/postgresql \ --with-pgsql-libdir=/usr/lib/postgresql/9.6/lib \ --with-openssl --with-pam $ make $ make install

需要在所有的 postgresql server 節點上安裝必要的 extension。
由于使用的是 apt install 方式,所以需要 root 權限 make install

$ cd ./src/sql $ make $ sudo make install

如果有額外的缺少包錯誤提示,按照錯誤提示安裝就行了。

$ ls -l /usr/lib/postgresql/9.6/lib |grep -i pool -rwxr-xr-x 1 root root 66672 Jan 2 11:23 pgpool_adm.so -rwxr-xr-x 1 root root 46448 Jan 2 11:23 pgpool-recovery.so -rwxr-xr-x 1 root root 30328 Jan 2 11:23 pgpool-regclass.so$ ls -l /usr/share/postgresql/9.6/extension/ |grep -i pool -rw-r--r-- 1 root root 2574 Jan 2 11:23 pgpool_adm--1.0.sql -rw-r--r-- 1 root root 146 Jan 2 11:23 pgpool_adm.control -rw-r--r-- 1 root root 407 Jan 2 11:23 pgpool_recovery--1.0--1.1.sql -rw-r--r-- 1 root root 791 Jan 2 11:23 pgpool_recovery--1.0.sql -rw-r--r-- 1 root root 1002 Jan 2 11:23 pgpool_recovery--1.1.sql -rw-r--r-- 1 root root 178 Jan 2 11:23 pgpool_recovery.control -rw-r--r-- 1 root root 557 Jan 2 11:23 pgpool-recovery.sql -rw-r--r-- 1 root root 283 Jan 2 11:23 pgpool_regclass--1.0.sql -rw-r--r-- 1 root root 152 Jan 2 11:23 pgpool_regclass.control -rw-r--r-- 1 root root 142 Jan 2 11:23 pgpool-regclass.sql

pgpool 函數非必需安裝,但強烈建議安裝 pgpool_adm, pgpool_regclass, pgpool_recovery 函數 。
官方文檔是這樣說的 pgpool_adm is an extension and should be installed on all PostgreSQL servers

在 master 節點的 template1 數據庫上創建 extension,這樣以后新建的數據庫都會有這些 pgpool 的擴展。

postgres=# select * from pg_available_extensions where name like '%pool%';name | default_version | installed_version | comment -----------------+-----------------+-------------------+----------------------------------------------------pgpool_recovery | 1.1 | | recovery functions for pgpool-II for V3.4 or laterpgpool_adm | 1.0 | | Administrative functions for pgPoolpgpool_regclass | 1.0 | | replacement for regclass (3 rows)postgres=# \c template1template1=# create extension pgpool_adm; create extension pgpool_regclass; create extension pgpool_recovery;

pgpool 的配置

有幾個關鍵的配置文件
pool_passwd 用于保存相應客戶端登錄帳號名及md5密碼。
pcp.conf 用于管理查、看節點信息,如加入新節點。該文件主要是存儲用戶名及md5形式的密碼。
pool_hba.conf 用于認證用戶登錄方式,如客戶端IP限制等,類似于postgresql的pg_hba.conf文件。
pgpool.conf 用于設置pgpool的模式,主次數據庫的相關信息等。

pool_passwd

pool_passwd 用于保存 postgresql 用戶名及md5密碼。

$ cd /usr/pgpool-3.7.7/etc $ ../bin/pg_md5 -p -m -u postgres pool_passwd

pcp.conf

pcp.conf 用于管理查、看節點信息,如加入新節點。該文件主要是存儲管理員的用戶名及md5形式的密碼。

$ cd /usr/pgpool-3.7.7/etc $ cp pcp.conf.sample pcp.conf $ ../bin/pg_md5 -u pgpool -p password: b4b8daf4b8ea9d39568719e1e320076f $ ../bin/pg_md5 -u postgres -p password: 7f5b916619bfc00bf19709bcfe544962$ vi pcp.conf pgpool:b4b8daf4b8ea9d39568719e1e320076f postgres:7f5b916619bfc00bf19709bcfe544962

pool_hba.conf

pool_hba.conf 用于認證用戶登錄方式,如客戶端IP限制等,類似于postgresql的pg_hba.conf文件。

$ cd /usr/pgpool-3.7.7/etc $ cp pool_hba.conf.sample pool_hba.conf $ vi pool_hba.conf# TYPE DATABASE USER CIDR-ADDRESS METHOD# "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust host all all ::1/128 trusthost all all 192.168.56.1/32 md5 host all all 192.168.56.90/32 md5 host all all 192.168.56.92/32 md5 host all all 192.168.56.100/32 md5

最后幾條是手動添加的。

pgpool.conf

pgpool.conf 用于設置pgpool的模式,主次數據庫的相關信息等。

功能/模式 原始模式(*3) 復制模式 主/備模式 并行查詢模式 連接池 X O O O 復制 X O X (*1) 負載均衡 X O O (*1) 故障恢復 O O O X 在線恢復 X O (*2) X 并行查詢 X X X O 需要的 服務器數 1 或更多 2 或更多 2 或更多 2 或更多 是否需要 系統數據庫 否 否 否 是O 意味著“可用”, X 意味著“不可用 (*1) 并行查詢模式需要同時打開復制和負載均衡,但是復制和負載均衡無法用于并行查詢模式中的分布式表。 (*2) 在線恢復可以和流復制同時使用。 (*3) 客戶端僅僅是通過 pgpool-II 連接到 PostgreSQL 服務器。這種模式僅僅用于限制到服務器的連接數,或者在多臺機器上啟用故障恢復。 $ cd /usr/pgpool-3.7.7/etc $ cp pgpool.conf.sample-stream pgpool.conf $ vi pgpool.conf

參考<<pgpool 之十一 參數文件 pgpool.conf>>
另外一個節點的 pgpool.conf 相應改動

pgpool 環境變量

# vi /etc/profile PATH=/usr/pgpool-3.7.7/bin:$PATH

至此,安裝完畢。

啟動時需要先啟動 postgresql ,再啟動 pgpool

# /etc/init.d/postgresql start # su - postgres $ pgpool -f /usr/pgpool-3.7.7/etc/pgpool.conf \ -F /usr/pgpool-3.7.7/etc/pcp.conf \ -a /usr/pgpool-3.7.7/etc/pool_hba.conf -n -D 2>&1 &

參考:
http://www.pgpool.net/mediawiki/index.php/Downloads
http://www.pgpool.net/docs/latest/en/html/index.html

總結

以上是生活随笔為你收集整理的pgpool 之四 2 pgpool + 2 postgresql 的 stream replication 模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。