Pgpool-II安装部署
Pgpool-II部署
There are six different running modes in Pgpool-II: streaming
replication mode, logical replication mode, main replica mode (slony
mode), ?本地復(fù)制? mode, raw mode and ?快照等素? mode. In any mode, Pgpool-II
provides connection pooling, and automatic fail over. Online recovery
can be used only with streaming replication mode and native
replication mode.
Those modes are exclusive each other and cannot be changed after
starting the server. You should make a decision which to use in the
early stage of designing the system. If you are not sure, it is
recommended to use the streaming replication mode.
The streaming replication mode can be used with PostgreSQL servers
operating streaming replication. In this mode, PostgreSQL is
responsible for ?同步?databases. This mode is widely used and most
recommended way to use Pgpool-II. Load balancing is possible in the
mode.
In the native replication mode, Pgpool-II is responsible for
synchronizing databases. The advantage for the mode is the
synchronization is done in synchronous way: writing to the database
does not return until all of PostgreSQL servers finish the write
operation. However, you could get a similar effect using PostgreSQL
9.6 or later with synchronous_commit = remote_apply being set in streaming replication. If you could use the setting, we strongly
recommend to use it instead of native replication mode because you can
avoid some restrictions in the native replication mode. Since
PostgreSQL does not provide cross node snapshot control, it is
possible that session X can see data on node A committed by session Y
before session Y commits data on node B. If session X tries to update
data on node B based on the data seen on node A, then data consistency
between node A and B might be lost. To avoid the problem, user need to
issue an explicit lock on the data. This is another reason why we
recommend to use streaming replication mode with synchronous_commit =
remote_apply.
Load balancing is possible in the mode.
The logical replication mode can be used with PostgreSQL servers
operating logical replication. In this mode, PostgreSQL is responsible
for synchronizing tables. Load balancing is possible in the mode.
Since logical replication does not replicate all tables, it’s user’s
responsibility to replicate the table which could be load balanced.
Pgpool-II load balances all tables. This means that if a table is not
replicated, Pgpool-II may lookup outdated tables in the subscriber
side.
The main replica mode mode (slony mode) can be used with PostgreSQL
servers operating Slony. In this mode, Slony/PostgreSQL is responsible
for synchronizing databases. Since Slony-I is being obsoleted by
streaming replication, we do not recommend to use this mode unless you
have specific reason to use Slony. Load balancing is possible in the
mode.
The snapshot isolation mode is similar to the native replication mode
and it adds the visibility consistency among nodes. Please note that
there are some limitations in this mode and currently (in Pgpool-II
4.2) this mode is regarded as “experimental” implementation. Be warned that careful testings are required before you implement this in a
production system.
It is necessary to set the transaction isolation level to REPEATABLE
READ. That means you need to set it in postgresql.conf like this:
default_transaction_isolation = ‘repeatable read’
Consistent visibility in SERIAL data type and sequences are not guaranteed.
In the raw mode, Pgpool-II does not care about the database
synchronization. It’s user’s responsibility to make the whole system
does a meaningful thing. Load balancing is not possible in the mode.
1.pgpool安裝
防火墻配置
2.主庫安裝pgpool_recovery
cd pgpool-II-4.2.5/src/sql/pgpool-recovery make && make install su - postgres psql template1 CREATE EXTENSION pgpool_recovery; select * from pg_extension;3.配置
編輯環(huán)境變量
如下是數(shù)據(jù)庫用戶密碼:
more pool_passwd postgres:md53175bce1d3201d16594cebf9d7eb3f9dvim pool_hba.conf host all all 0/0 trustpg_md5 postgres e8a48653851e28c69d0506508fb27fc5vim pcp.conf postgres:e8a48653851e28c69d0506508fb27fc5chmod 0600 /usr/local/pgpool/etc/pool_passwd pgpool -f /usr/local/pgpool/etc/pgpool.conf -a /usr/local/pgpool/etc/pool_hba.conf -k /usr/local/pgpool/etc/pool_passwd -F /usr/local/pgpool/etc/pcp.conf啟動(dòng)失敗可以使用-n選項(xiàng),會(huì)顯示日志,通過報(bào)錯(cuò)信息處理問題
pgpool -npgpool stop"show"在PostgreSQL中是一個(gè)真正的SQL命令,但pgpool-II擴(kuò)展了此命令。連接到pgpool-II后可以使用“show”命令查看pgpool-II的信息,這些命令的說明如下。
·pool_status:獲得pgpool-II的配置信息。
·pool_nodes:獲得后端各節(jié)點(diǎn)的狀態(tài)信息,如后端數(shù)據(jù)庫是否在線。
·pool_processes:顯示pgpool-II的進(jìn)程信息。
·pool_pools:顯示pgpool-II連接池中的各個(gè)連接信息。
·pool_version:顯示pgpool-II的版本。
用如下腳本測(cè)試負(fù)載均衡情況:
vim pgtest.sh while true do psql -h 192.168.124.61 -U postgres -p 9999 << ! show pool_nodes \q ! sleep 0.1 done5.壓力測(cè)試
pgbench -i -p 9999 -h 192.168.124.61 pgbench -p 9999 -T 10 -h 192.168.124.616.臨時(shí)關(guān)庫
In this case you can use backend_flag to avoid failover. By setting
below in pgpool.conf will avoid failover of backend0.
backend_flag0 = DISALLOW_TO_FAILOVER
This will take effect by reloading or restarting Pgpool-II. If this flag is set, failover will not happen if the backend is not
available. While the backend is not available, clients wil get error
message:
psql: error: could not connect to server: FATAL: failed to create a
backend connection DETAIL: executing failover on backend
After restarting the backend, clients can connect as usual. To allow failover on the backend again, you can set:
backend_flag0 = ALLOW_TO_FAILOVER
and reload or restart Pgpool-II.
7.使用pg_rewind需要在主庫進(jìn)行如下配置
listen_addresses = '*' archive_mode = on archive_command = 'cp "%p" "/var/lib/pgsql/archivedir/%f"' max_wal_senders = 10 max_replication_slots = 10 wal_level = replica hot_standby = on wal_log_hints = on8.配置互信
[all servers]# cd ~/.ssh [all servers]# ssh-keygen -t rsa -f id_rsa_pgpool [all servers]# ssh-copy-id -i id_rsa_pgpool.pub postgres@192.168.124.61 [all servers]# ssh-copy-id -i id_rsa_pgpool.pub postgres@192.168.124.62 [all servers]# ssh-copy-id -i id_rsa_pgpool.pub postgres@192.168.124.63[all servers]# su - postgres [all servers]$ cd ~/.ssh [all servers]$ ssh-keygen -t rsa -f id_rsa_pgpool [all servers]$ ssh-copy-id -i id_rsa_pgpool.pub postgres@server1 [all servers]$ ssh-copy-id -i id_rsa_pgpool.pub postgres@server2 [all servers]$ ssh-copy-id -i id_rsa_pgpool.pub postgres@server39.配置密碼
這個(gè)后面在測(cè)試
目前先使用這個(gè)辦法
pg_md5 --md5auth -u postgres helloosdbapg_md5 pgpool10.新從庫落后太多配置
pg_rewind -D /postgres --source-server='host=192.168.124.64 user=postgres password=postgres'11.老主庫恢復(fù)為新從庫
pcp_recovery_node -h localhost -Upgpool -n0總結(jié)
以上是生活随笔為你收集整理的Pgpool-II安装部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速排序原理及实现
- 下一篇: matlab2013b电机模型,电机数学