亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

PostgreSQL+pgpool-II復制方案

2024-07-21 02:52:40
字體:
來源:轉載
供稿:網友

PostgreSQL+pgpool-II復制方案

@(學習)[PostgreSQL, pgpool-II, 高可用]

PostgreSQLpgpool-II復制方案Pgpool-II介紹pgpool-II安裝1 安裝pgpool-II yum源并安裝pgpool-II2 添加Pgpool-II運行用戶3 設置pcpconf4 設置Pgpool-II配置文件5 配置backend信息6 修改認證方式61 修改pgpool-II的認證方式為md562 修改PostgreSQL的認證方式為md57 測試pgpool-II同步安裝pgpoolAdmin不推薦1 解壓pgpoolAdmin至web目錄使用戶能訪問其php2 php-fpm運行用戶和pgpool用戶統一3 根據向導完成安裝4 一些細節說明5 phpini的disable_functions設置6 pgpoolAdmin中pcp_stop_pgpool參數總結

1. Pgpool-II介紹

pgpool-II是PostgreSQL服務器之間一種有效的中間件和PostgreSQL數據庫客戶端。它提供了以下功能。

連接池 pgpool-II保存到PostgreSQL服務器的連接,當一個相同新連接(如用戶名、數據庫、協議版本)進來時,重用他們。它減少了連接開銷,提高了系統的整體吞吐量。 復制 pgpool-II可以管理多個PostgreSQL服務器。使用復制功能可以使2個或更多的物理磁盤上創建一個實時備份,這樣服務不會因服務器的磁盤故障而中斷。 負載平衡 如果數據庫是復制的,在任何服務器上執行一個SELECT查詢會返回相同的結果。pgpool-II復制特性的優勢在于減少每個PostgreSQL服務器上的負載,因為它可以使用分布在多個服務器之間進行SELECT查詢,從而提高系統的整體吞吐量。最好是查詢和PostgreSQL服務器數量成一定比例,多用戶同時執行多查詢達到負載均衡最好的效果。 限制連接數 PostgreSQL的最大并發連接數有一定限制的,當超過限制的連接數后,連接會被拒絕。然而,設置增加最大連接數又會增加資源消耗,影響系統性能。pgpool-II也有最大連接數限制,但超過的連接進來時是進行立即排隊,而不是返回一個錯誤。

pgpool-II交互PostgreSQL的后端和前端協議時,起著繼電器的作用。因此,數據庫應用程序(前端)認為pgpool-II是真實的PostgreSQL服務器,服務器(后端)認為pgpool-II是它的客戶端之一。因為pgpool-II在服務器和客戶端是透明的,所以pgpool-II可以使用現有的數據庫應用程序而做到幾乎不修改它們。

環境: CentOS6.8 PostgreSQL9.5 pgpool-II-pg95-3.6.1

2. pgpool-II安裝

2.1 安裝pgpool-II yum源,并安裝pgpool-II

從官網找到相關yum源rpm包,使用rpm安裝后,并使用yum安裝pgpool-II

rpm -ivh http://www.pgpool.net/yum/rpms/3.6/redhat/rhel-6-x86_64/pgpool-II-release-3.6-1.noarch.rpmyum -y install pgpool-II-pg95yum -y install pgpool-II-pg95-debuginfoyum -y install pgpool-II-pg95-develyum -y install pgpool-II-pg95-extensionschkconfig pgpool on # 添加開機啟動service start/stop pgpool # 服務啟/停

2.2 添加Pgpool-II運行用戶

添加Pgpool-II運行用戶,并給相關目錄的讀寫權限

[root@im110 pgpool-II]# useradd pgpool [root@im110 pgpool-II]# passwd pgpoolChanging passWord for user pgpool.New password: Retype new password: passwd: all authentication tokens updated successfully.[root@im110 pgpool-II]# chown -R pgpool.pgpool /etc/pgpool-II[root@im110 pgpool-II]# mkdir -p /var/run/pgpool/[root@im110 pgpool-II]# chown pgpool.pgpool /var/run/pgpool/

修改啟動腳本的pgpool運行用戶: 圖1

2.3 設置pcp.conf

cp /etc/pcp.conf.sample /etc/pcp.conf

內容格式為如下,一行一個,#號為注釋標識

username:[md5 encrypted password]

[md5 encrypted password] 可以使用如下命令生成

$ pg_md5 pgpoolba777e4c2f15c11ea8ac3be7e0440aa0

使用pg_md5 -p會隱藏輸入的密碼

$ pg_md5 -ppassword: your_password

配置文件pcp.conf必須允許pgpool執行用戶可讀。

2.4 設置Pgpool-II配置文件

pgpool.conf是Pgpool-II的主配置文件。啟動Pgpool-II時可以使用 -f 參數指定 pgpool.conf路徑, 默認是使用/etc/pgpool.conf.

Pgpool-II每個模式對應的配置文件模板

圖2

復制一份作為你的配置文件:

# cd /etc# cp pgpool.conf.sample-replication pgpool.conf

2.5 配置backend信息

在pgpool.conf中加入如下格式的配置,其中0為backend主機號,不能重復。

backend_socket_dir = '/tmp'backend_hostname0 = '10.1.0.110'backend_port0 = 5432backend_weight0 = 1backend_data_directory0 = '/var/lib/pgsql/9.5/data/'backend_flag0 = 'ALLOW_TO_FAILOVER'

2.6 修改認證方式

為了更安全,修改認證方式為md5

2.6.1 修改pgpool-II的認證方式為md5

vim /etc/pgpool-II/pool_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS METHODhost all all 10.1.0.0/24 md5# "local" is for Unix domain socket connections onlylocal all all md5# ipv4 local connections:host all all 127.0.0.1/32 md5host all all ::1/128 md5

2.6.2 修改PostgreSQL的認證方式為md5

vim pg_hba.conf

# TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections only# IPv4 local connections:host all all 127.0.0.1/32 trusthost all all 10.1.0.0/24 md5# IPv6 local connections:host all all ::1/128 trust# Allow replication connections from localhost, by a user with the# replication PRivilege.local all postgres md5#local replication postgres peer#host replication postgres 127.0.0.1/32 ident#host replication postgres ::1/128 ident[root@im110 pgpool-II]#

2.7 測試pgpool-II同步

這里作簡單測試,在pgpool-II入口創建數據庫,看各節點是否自動創建,刪除后,看各節點是否自動刪除。

[root@im109 ~]# psql -U postgres -h 10.1.0.115 -p 9999Password for user postgres: psql (9.5.6)Type "help" for help.postgres=# show pool_nodes; node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay ---------+------------+-------+--------+-----------+--------+------------+-------------------+------------------- 0 | 10.1.0.110 | 54321 | up | 0.500000 | master | 0 | true | 0 1 | 10.1.0.109 | 54321 | up | 0.500000 | slave | 0 | false | 0(2 rows)postgres=# postgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres wiseucmsg | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (4 rows)postgres=# create database test01;CREATE DATABASEpostgres=# /q[root@im109 ~]# psql -U postgres -h 10.1.0.110 -p 54321Password for user postgres: psql (9.5.6)Type "help" for help.postgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres test01 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | wiseucmsg | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (5 rows)postgres=# /q[root@im109 ~]# psql -U postgres -h 10.1.0.109 -p 54321 Password for user postgres: psql (9.5.6)Type "help" for help.postgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres test01 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | wiseucmsg | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (5 rows)postgres=# /q[root@im109 ~]# psql -U postgres -h 10.1.0.115 -p 9999 Password for user postgres: psql (9.5.6)Type "help" for help.postgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres test01 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | wiseucmsg | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (5 rows)postgres=# drop database test01;DROP DATABASEpostgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres wiseucmsg | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (4 rows)postgres=# /q[root@im109 ~]# psql -U postgres -h 10.1.0.110 -p 54321Password for user postgres: psql (9.5.6)Type "help" for help.postgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres wiseucmsg | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (4 rows)postgres=# /q[root@im109 ~]# psql -U postgres -h 10.1.0.109 -p 54321Password for user postgres: psql (9.5.6)Type "help" for help.postgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres wiseucmsg | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (4 rows)postgres=# /q[root@im109 ~]#

測試成功,說明從pgpool-II入口操作,各節點會同步數據。

3. 安裝pgpoolAdmin(不推薦)

雖然官網提供此工具,用于頁面管理pgpool,但是我覺得不安全,且可能bug較多。以下文中會有一些bug列出來。 安裝方法:

3.1 解壓pgpoolAdmin至web目錄,使用戶能訪問其php

wget http://www.pgpool.net/download.php?f=pgpoolAdmin-3.5.3.tar.gz -O pgpoolAdmin-3.5.3.tar.gzcd /var/wwwtar -zxvf pgpoolAdmin-3.5.3.tar.gzln -s pgpoolAdmin-3.5.3 pgpooladminmkdir templates_cchmod 777 templates_cchown www conf/pgmgt.conf.phpchmod 644 conf/pgmgt.conf.php

3.2 php-fpm運行用戶和pgpool用戶統一

pgpoolAdmin使用pcp命令控制pgpool啟停,因此需要統一php和pgpool運行用戶,以便pgpoolAdmin從頁面控制pgpool啟停??蓞⒖忌衔闹?strong>2.2步驟操作。

3.3 根據向導完成安裝

訪問安裝頁面,完成檢測,完成安裝。 http://yourweb/pgpooladmin/install/ 圖3

從上圖看到,3.5下面的勾處未有文字提示,我此處為通過。因為我裝了php-psql擴展。從源碼中也可以看出,是檢測pgsql擴展。 圖4

.pcppass文件格式如下(pgpool3.5以下用到): 它的作用是用于指定連接postgresql的連接串,包括主機、端口、用戶、密碼。

host:port:user:password

3.4 一些細節說明

完全設置好的完整功能如下: 圖5 3.4.1) 顯示pgpoolAdmin運行機器的hostname 若php報warning,可在hosts中添加IP對應主機名

[root@im110 pgpoolAdmin-3.5.3]# vim /etc/hosts10.1.0.110 im110

3.4.2) 此處為pgpoolAdmin的登錄用戶,superuser: yes表示在pgpool數據庫中,用戶為管理員用戶。此數據庫可以pgpool下,也可分離到其它postgresql中。若此處非yes,則節點相關操作為不可操作的灰色。代碼中并未指定host,所以只能是使用socket。 圖6

3.4.3) 頁面中顯示節點是否連接,是在pgpool中show pool_nodes命令下的節點status.

[root@im109 ~]# psql -U postgres -h 10.1.0.115 -p 9999Password for user postgres: psql (9.5.6)Type "help" for help.postgres=# show pool_nodes; node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay ---------+------------+-------+--------+-----------+--------+------------+-------------------+------------------- 0 | 10.1.0.110 | 54321 | up | 0.500000 | master | 0 | true | 0 1 | 10.1.0.109 | 54321 | up | 0.500000 | slave | 0 | false | 0(2 rows)

其它命令參考官方文檔: http://www.pgpool.net/docs/latest/en/html/reference.html

3.4.4) pgpool.conf 設置中的健康檢查,檢查postgressql是否啟動 此處是通過連接各節點是否成功來判斷的,因此需要在各節點創建用于連接的角色。 圖7

[root@im110 pgpool-II]# psql -U pgpool -p 54321 -h 10.1.0.110 template1Password for user pgpool: psql (9.5.6)Type "help" for help.template1=>

3.5 php.ini的disable_functions設置

源代碼中php調用的exec執行pcp相關命令, 圖8 因此需要將php.ini配置文件中的disable_functions中的exec去掉,以允許php使用該函數。 圖9

3.6 pgpoolAdmin中pcp_stop_pgpool參數

在pgpool-II3.6中,pcp_stop_pgpool用法如下:

root@im110 pgpooladmin]# pcp_stop_pgpool --helppcp_stop_pgpool - terminate pgpool-IIUsage:pcp_stop_pgpool [OPTION...] Options: -U, --username=NAME username for PCP authentication -h, --host=HOSTNAME pgpool-II host -p, --port=PORT PCP port number -w, --no-password never prompt for password -W, --password force password prompt (should happen automatically) -m, --mode=MODE MODE can be "smart", "fast", or "immediate" -d, --debug enable debug message (optional) -v, --verbose output verbose messages -?, --help print this help

pgpoolAdmin中需要做相應修改。 圖10

4. 總結

此PostgreSQL高可用方案搭建簡單方便,且可以在不影響原來環境的基礎上搭建;生產環境中的pgpoool-II是怎樣的我不好評判。網上此博客寫的不錯,可以看看,PG的兩種集群技術:Pgpool-II與Postgres-XL
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩在线观看| 成人午夜高潮视频| 久久国内精品一国内精品| 国产精品com| 成人亚洲综合色就1024| 精品久久久久久久久久久久久| 亚洲精品福利视频| 国产日韩综合一区二区性色av| 日韩人体视频一二区| 国产在线拍揄自揄视频不卡99| 中文字幕欧美日韩va免费视频| 日韩美女毛茸茸| 欧美性极品xxxx娇小| 日韩精品在线观看视频| 成人www视频在线观看| 欧美资源在线观看| 亚洲一区二区三区在线免费观看| 成人国内精品久久久久一区| 美女性感视频久久久| 欧美在线一区二区视频| 久久精品国亚洲| 国产欧美精品xxxx另类| 亚洲jizzjizz日本少妇| 欧美床上激情在线观看| 日韩在线精品视频| 911国产网站尤物在线观看| 中文字幕精品影院| 午夜精品久久久久久久99热| 国产精品户外野外| 欧美日韩国产精品一区二区不卡中文| 亚洲欧美精品中文字幕在线| 日韩一区在线视频| 日韩高清av一区二区三区| 国产97色在线|日韩| 欧美日韩亚洲一区二区三区| 欧美精品精品精品精品免费| 日本欧美一二三区| 国产精品va在线播放| 中文国产亚洲喷潮| 亚洲日韩第一页| 亚洲老头老太hd| 国产精品嫩草视频| 5252色成人免费视频| 国产精品视频色| www.亚洲男人天堂| 福利一区视频在线观看| 在线激情影院一区| 国产精品福利片| 夜夜嗨av色综合久久久综合网| 亚洲视频一区二区| 欧美裸体xxxx| 国产成人97精品免费看片| 亚洲一区二区中文字幕| 日韩国产一区三区| 亚洲一区中文字幕在线观看| 久久人人爽人人爽人人片av高请| 欧美极品美女视频网站在线观看免费| 精品久久久久久久久久| 成人免费午夜电影| 精品久久久免费| 久久伊人精品一区二区三区| 亚洲国产91色在线| 久久国产精品网站| 美女视频黄免费的亚洲男人天堂| 亚洲美女中文字幕| 亚洲黄页网在线观看| 久久人人爽亚洲精品天堂| 91嫩草在线视频| 欧美电影在线观看完整版| 欧美一区三区三区高中清蜜桃| 国产精品久久久久久久久男| 欧美中文字幕精品| 日韩福利在线播放| 日韩欧美亚洲范冰冰与中字| 欧美日韩亚洲精品一区二区三区| 这里精品视频免费| 欧美另类第一页| 国产精品视频区| 欧美xxxx18性欧美| 精品久久久国产精品999| 国产欧美精品日韩| 欧美激情在线播放| 亚洲精品乱码久久久久久金桔影视| 国产亚洲精品高潮| 精品呦交小u女在线| 日本一区二区三区四区视频| 亚洲精品福利在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲成av人乱码色午夜| 欧美日韩激情美女| 精品国产一区二区三区四区在线观看| 欧美成人亚洲成人日韩成人| 亚洲新中文字幕| 精品国产乱码久久久久久虫虫漫画| 亚洲美女精品久久| 欧美激情在线播放| 亚洲免费成人av电影| 欧美中文字幕视频| 国产精品aaaa| 亚洲影视中文字幕| 亚洲第一av网| 成人国产精品久久久| 福利一区视频在线观看| 欧美电影免费观看高清| 亚洲国产又黄又爽女人高潮的| 亚洲午夜精品久久久久久久久久久久| 欧美日韩中文在线观看| 日韩精品在线视频观看| 国产成人精品免费久久久久| 97超碰色婷婷| 亚洲韩国日本中文字幕| 亚洲理论电影网| xvideos亚洲人网站| 夜夜嗨av色综合久久久综合网| 国产精品盗摄久久久| 成人性生交大片免费看视频直播| 亚洲精品中文字幕av| 国产精品pans私拍| 亚洲最大av网站| 国产精品美女无圣光视频| 亚洲精品按摩视频| 久久成人精品电影| 欧美电影免费播放| 浅井舞香一区二区| 亚洲精品456在线播放狼人| 亚洲丁香婷深爱综合| 欧美人与性动交| 国产精品草莓在线免费观看| 在线视频中文亚洲| 91大神福利视频在线| 欧美电影在线观看| 曰本色欧美视频在线| 精品国产精品三级精品av网址| 欧美精品一二区| 欧美性开放视频| 日韩精品视频在线播放| 国产精品揄拍500视频| 91禁国产网站| 欧美性videos高清精品| 亚洲一区二区三区成人在线视频精品| 欧美精品久久久久久久久| 97精品视频在线观看| 91av在线免费观看| 欧美大尺度电影在线观看| 国产精品一区二区久久| 国产噜噜噜噜久久久久久久久| 一区二区中文字幕| 高清欧美性猛交xxxx| 久久久久www| 欧美第一淫aaasss性| 91精品久久久久久久久久久久久| 亚洲精品自拍偷拍| 91av在线播放视频| 17婷婷久久www| 影音先锋欧美精品| 国产精品视频26uuu| 日本国产一区二区三区| 亚洲国产免费av| 欧美国产极速在线| 色婷婷综合久久久久| www.欧美精品| 国产精品福利观看| 国产精品高清网站| 国产精品视频最多的网站|