1. 程式人生 > >pgpool 3.7.5 環境搭建

pgpool 3.7.5 環境搭建

  1. 將rpm包上傳到/opt目錄
  1. 配置環境變數

vim /etc/profile

末尾增加:

export PG_DATA=/opt/postgresql/data/pg96

export PG_HOME=/opt/postgresql/pg96

export PATH=$PG_HOME/bin/:$PATH

使環境變數生效

source /etc/profile

截圖如下:

  1. 配置/etc/hosts

vim /etc/hosts

增加如下:

10.33.26.118 master

10.33.26.119 slave

10.33.26.117 vip

截圖如下:

  1. 安裝pgpool

cd /opt

rpm -ivh libevent-2.0.21-4.el7.x86_64.rpm

rpm -ivh libmemcached-1.0.16-5.el7.x86_64.rpm

rpm -ivh pgpool-II-pg96-3.7.5-1pgdg.rhel7.x86_64.rpm

  1. 更改/etc/pgpool-II所有者為postgres

chown -R postgres:postgres /etc/pgpool-II/

  1. 安裝net-tools

rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm

  1. 授權ifconfig, 讓普通使用者可以使用ifconfig

chmod u+s /sbin/ifconfig

chmod u+s /usr/sbin

  1. 建立pg目錄

mkdir /opt/pgpool

chown -R postgres:postgres /opt/pgpool

  1. 設定postgres密碼

passwd postgres                         --請設定為[email protected]++, 以便日後問題排查

  1. 切換到postgres使用者,配置免密碼登陸

su postgres

cd ~

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub

[email protected]

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

  1. 配置pool_hba.conf

cd /etc/pgpool-II

vim pool_hba.conf

host    all         all         0.0.0.0/0          md5

截圖如下:

  1. 配置pgpool.conf

修改主,備主的pgpool.conf, 將eno16777736 改成 網絡卡名稱, 10.33.26.117 改成 vip地址

然後將主的pgpool.conf檔案 上傳至 10.33.26.118 的/etc/pgpool-II目錄,將備的pgpool.conf檔案 上傳至 10.33.26.119 的/etc/pgpool-II目錄,覆蓋原來的檔案

  1. 配置pgpool.conf

vim pcp.conf

增加一行:

postgres:e8a48653851e28c69d0506508fb27fc5

截圖如下:

pg_md5 -p -m -u postgres pool_passwd

輸入postgres

  1. 上傳failover_stream.sh到/opt/pgpool
  1. 切換到root使用者,建立目錄並授權:

mkdir /var/log/pgpool

mkdir /var/run/postgresql

mkdir /var/run/pgpool

chown -R postgres:postgres /var/log/pgpool

chown -R postgres:postgres /var/run/postgresql

chown -R postgres:postgres /var/run/pgpool

chown -R postgres:postgres /opt/postgresql

chown postgres:postgres /opt/pgpool/failover_stream.sh

chmod 777  /opt/pgpool/failover_stream.sh

  1. 增加pg動態庫

vi /etc/ld.so.conf

/opt/postgresql/pg96/lib

截圖如下:

ldconfig

ldconfig -p 

  1. 切換到postgres使用者,啟動pgpool

su postgres

pgpool -n -d -D > /opt/pgpool/pgpool.log 2>&1 &

檢視啟動是否正常:

tail -f /opt/pgpool/pgpool.log

  1. 檢視pg叢集狀態(10.33.26.118)

psql -h vip -p 9999

密碼是postgres

show pool_nodes

若出現如下, 則代表配置成功

  1. 若主機掛掉或者網路異常時, pgpool會做主備切換,原來的主機(primary)變成備機(standby), 並且狀態改成了down,  如下圖所示:

  1. 將down的伺服器重新加入pgpool管理

先停止down掉伺服器上的pgpool和postgresql服務

pgpool -m fast stop

pg_ctl stop -D $PG_DATA

檢查主機pg_hba.conf檔案, 紅框中應該改成從機IP

vim $PG_DATA/pg_hba.conf

    pg_ctl reload -D $PG_DATA

檢查從機的postgresql.conf

vim $PG_DATA/postgresql.conf

是否有hot_standby = on 配置

pg_rewind  --target-pgdata $PG_DATA --source-server='host=10.33.26.119 port=5432 user=postgres dbname=postgres password=postgres' -P

若如下現下圖所示, 則代表恢復成功。

若出現如下情況,

則需要修改配置檔案postgresql.conf增加兩個引數, 如下圖所示:

vim /opt/postgresql/data/pg96/postgresql.conf

wal_log_hints=on

full_page_writes = on

然後重啟服務:

/opt/postgresql/pg96/bin/pg_ctl start -D /opt/postgresql/data/pg96

/opt/postgresql/pg96/bin/pg_ctl stop -m fast -D /opt/postgresql/data/pg96

再執行

/opt/postgresql/pg96/bin/pg_rewind  --target-pgdata /opt/postgresql/data/pg96 --source-server='host=10.33.26.119 port=5432 user=postgres dbname=postgres password=postgres' -P

vim $PG_DATA/recovery.conf

standby_mode = on    # 說明該節點是從伺服器

primary_conninfo = 'host=10.33.26.119 port=5432 user=replica password=replica'  # 主伺服器的資訊以及連線的使用者

recovery_target_timeline = 'latest'

截圖如下:

啟動postgresql服務

pg_ctl start -D $PG_DATA

檢視postgresql主從複製是否成功

select client_addr,sync_state from pg_stat_replication;

啟動pgpool服務

pgpool -n -d -D > /opt/pgpool/pgpool.log 2>&1 &

重新加入pgpool叢集

如果讓master重新加入, 執行pcp_attach_node -d -U postgres -h vip -p 9898 -n 0

如果slave重新加入,執行pcp_attach_node -d -U postgres -h vip -p 9898 -n 1

檢視是否加入叢集:

psql -h vip -p 9999

show pool_nodes;

若無法加入叢集:

重啟pgpool

pgpool -m fast stop

pgpool -n -d -D > /opt/pgpool/pgpool.log 2>&1 &

  1. 若自動切換失敗, 則需要手動切換, 切換命令為

pg_ctl promote -D $PG_DATA

pgpool.conf 主:

# ---------------------------- # pgPool-II configuration file # ---------------------------- # # This file consists of lines of the form: # #   name = value # # Whitespace may be used.  Comments are introduced with "#" anywhere on a line. # The complete list of parameter names and allowed values can be found in the # pgPool-II documentation. # # This file is read on server startup and when the server receives a SIGHUP # signal.  If you edit the file on a running system, you have to SIGHUP the # server for the changes to take effect, or use "pgpool reload".  Some # parameters, which are marked below, require a server shutdown and restart to # take effect. #

#------------------------------------------------------------------------------ # CONNECTIONS #------------------------------------------------------------------------------

# - pgpool Connection Settings -

listen_addresses = '*'                                    # Host name or IP address to listen on:                                    # '*' for all, '' for no TCP/IP connections                                    # (change requires restart) port = 9999                                    # Port number                                    # (change requires restart) socket_dir = '/var/run/postgresql'                                    # Unix domain socket path                                    # The Debian package defaults to                                    # /var/run/postgresql                                    # (change requires restart) listen_backlog_multiplier = 2                                    # Set the backlog parameter of listen(2) to                                    # num_init_children * listen_backlog_multiplier.                                    # (change requires restart) serialize_accept = off                                    # whether to serialize accept() call to avoid thundering herd problem                                    # (change requires restart)

# - pgpool Communication Manager Connection Settings -

pcp_listen_addresses = '*'                                    # Host name or IP address for pcp process to listen on:                                    # '*' for all, '' for no TCP/IP connections                                    # (change requires restart) pcp_port = 9898                                    # Port number for pcp                                    # (change requires restart) pcp_socket_dir = '/var/run/postgresql'                                    # Unix domain socket path for pcp                                    # The Debian package defaults to                                    # /var/run/postgresql                                    # (change requires restart)

# - Backend Connection Settings -

backend_hostname0 = 'master'                                    # Host name or IP address to connect to for backend 0 backend_port0 = 5432                                    # Port number for backend 0 backend_weight0 = 1                                    # Weight for backend 0 (only in load balancing mode) backend_data_directory0 = '/opt/postgresql/data'                                    # Data directory for backend 0 backend_flag0 = 'ALLOW_TO_FAILOVER'                                    # Controls various backend behavior                                    # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER backend_hostname1 = 'slave' backend_port1 = 5432 backend_weight1 = 1 backend_data_directory1 = '/opt/postgresql/data' backend_flag1 = 'ALLOW_TO_FAILOVER'

# - Authentication -

enable_pool_hba = on                                    # Use pool_hba.conf for client authentication pool_passwd = 'pool_passwd'                                    # File name of pool_passwd for md5 authentication.                                    # "" disables pool_passwd.                                    # (change requires restart) authentication_timeout = 60                                    # Delay in seconds to complete client authentication                                    # 0 means no timeout.

# - SSL Connections -

ssl = off                                    # Enable SSL support                                    # (change requires restart) #ssl_key = './server.key'                                    # Path to the SSL private key file                                    # (change requires restart) #ssl_cert = './server.cert'                                    # Path to the SSL public certificate file                                    # (change requires restart) #ssl_ca_cert = ''                                    # Path to a single PEM format file                                    # containing CA root certificate(s)                                    # (change requires restart) #ssl_ca_cert_dir = ''                                    # Directory containing CA root certificate(s)                                    # (change requires restart)

#------------------------------------------------------------------------------ # POOLS #------------------------------------------------------------------------------

# - Concurrent session and pool size -

num_init_children = 32                                    # Number of concurrent sessions allowed                                    # (change requires restart) max_pool = 4                                    # Number of connection pool caches per connection                                    # (change requires restart)

# - Life time -

child_life_time = 300                                    # Pool exits after being idle for this many seconds child_max_connections = 0                                    # Pool exits after receiving that many connections                                    # 0 means no exit connection_life_time = 0                                    # Connection to backend closes after being idle for this many seconds                                    # 0 means no close client_idle_limit = 0                                    # Client is disconnected after being idle for that many seconds                                    # (even inside an explicit transactions!)                                    # 0 means no disconnection

#------------------------------------------------------------------------------ # LOGS #------------------------------------------------------------------------------

# - Where to log -

log_destination = 'stderr'                                    # Where to log                                    # Valid values are combinations of stderr,                                    # and syslog. Default to stderr.

# - What to log -

log_line_prefix = '%t: pid %p: '   # printf-style string to output at beginning of each log line.

log_connections = off                                    # Log connections log_hostname = off                                    # Hostname will be shown in ps status                                    # and in logs if connections are logged log_statement = off                                    # Log all statements log_per_node_statement = off                                    # Log all statements                                    # with node and backend informations log_standby_delay = 'none'                                    # Log standby delay                                    # Valid values are combinations of always,                                    # if_over_threshold, none

# - Syslog specific -

syslog_facility = 'LOCAL0'                                    # Syslog local facility. Default to LOCAL0 syslog_ident = 'pgpool'                                    # Syslog program identification string                                    # Default to 'pgpool'

# - Debug -

debug_level = 0                                    # Debug message verbosity level                                    # 0 means no message, 1 or more mean verbose

#log_error_verbosity = default          # terse, default, or verbose messages

#client_min_messages = notice           # values in order of decreasing detail:                                         #   debug5                                         #   debug4                                         #   debug3                                         #   debug2                                         #   debug1                                         #   log                                         #   notice                                         #   warning                                         #   error

#log_min_messages = warning             # values in order of decreasing detail:                                         #   debug5                                         #   debug4                                         #   debug3                                         #   debug2                                         #   debug1                                         #   info                                         #   notice                                         #   warning                                         #   error                                         #   log                                         #   fatal                                         #   panic

#------------------------------------------------------------------------------ # FILE LOCATIONS #------------------------------------------------------------------------------

pid_file_name = '/var/run/pgpool/pgpool.pid'                                    # PID file name                                    # (change requires restart) logdir = '/var/log/pgpool'                                    # Directory of pgPool status file                                    # (change requires restart)

#------------------------------------------------------------------------------ # CONNECTION POOLING #------------------------------------------------------------------------------

connection_cache = on                                    # Activate connection pools                                    # (change requires restart)

                                   # Semicolon separated list of queries                                    # to be issued at the end of a session                                    # The default is for 8.3 and later reset_query_list = 'ABORT; DISCARD ALL'                                    # The following one is for 8.2 and before #reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'

#------------------------------------------------------------------------------ # REPLICATION MODE #------------------------------------------------------------------------------

replication_mode = off                                    # Activate replication mode                                    # (change requires restart) replicate_select = off                                    # Replicate SELECT statements                                    # when in replication mode                                    # replicate_select is higher priority than                                    # load_balance_mode.

insert_lock = on                                    # Automatically locks a dummy row or a table                                    # with INSERT statements to keep SERIAL data                                    # consistency                                    # Without SERIAL, no lock will be issued lobj_lock_table = ''                                    # When rewriting lo_creat command in                                    # replication mode, specify table name to                                    # lock

# - Degenerate handling -

replication_stop_on_mismatch = off                                    # On disagreement with the packet kind                                    # sent from backend, degenerate the node                                    # which is most likely "minority"                                    # If off, just force to exit this session

failover_if_affected_tuples_mismatch = off                                    # On disagreement with the number of affected                                    # tuples in UPDATE/DELETE queries, then                                    # degenerate the node which is most likely                                    # "minority".                                    # If off, just abort the transaction to                                    # keep the consistency

#------------------------------------------------------------------------------ # LOAD BALANCING MODE #------------------------------------------------------------------------------

load_balance_mode = on                                    # Activate load balancing mode                                    # (change requires restart) ignore_leading_white_space = on                                    # Ignore leading white spaces of each query white_function_list = ''                                    # Comma separated list of function names                                    # that don't write to database                                    # Regexp are accepted black_function_list = 'nextval,setval,nextval,setval'                                    # Comma separated list of function names                                    # that write to database                                    # Regexp are accepted

database_redirect_preference_list = ''                                    # comma separated list of pairs of database and node id.                                    # example: postgres:primary,mydb[0-4]:1,mydb[5-9]:2'                                    # valid for streaming replicaton mode only.

app_name_redirect_preference_list = ''                                    # comma separated list of pairs of app name and node id.                                    # example: 'psql:primary,myapp[0-4]:1,myapp[5-9]:standby'                                    # valid for streaming replicaton mode only. allow_sql_comments = off                                    # if on, ignore SQL comments when judging if load balance or                                    # query cache is possible.                                    # If off, SQL comments effectively prevent the judgment                                    # (pre 3.4 behavior).

#------------------------------------------------------------------------------ # MASTER/SLAVE MODE #------------------------------------------------------------------------------

master_slave_mode = on                                    # Activate master/slave mode                                    # (change requires restart) master_slave_sub_mode = 'stream'                                    # Master/slave sub mode                                    # Valid values are combinations slony or                                    # stream. Default is slony.                                    # (change requires restart)

# - Streaming -

sr_check_period = 5                                    # Streaming replication check period                                    # Disabled (0) by default sr_check_user = 'replica'                                    # Streaming replication check user                                    # This is necessary even if you disable                                    # streaming replication delay check with                                    # sr_check_period = 0 sr_check_password = 'replica'                                    # Password for streaming replication check user sr_check_database = 'postgres'                                    # Database name for streaming replication check delay_threshold = 0                                    # Threshold before not dispatching query to standby node                                    # Unit is in bytes                                    # Disabled (0) by default

# - Special commands -

follow_master_command = ''                                    # Executes this command after master failover                                    # Special values:                                    #   %d = node id                                    #   %h = host name                                    #   %p = port number                                    #   %D = database cluster path                                    #   %m = new master node id                                    #   %H = hostname of the new master node                                    #   %M = old master node id                                    #   %P = old primary node id                                    #   %r = new master port number                                    #   %R = new master database cluster path                                    #   %% = '%' character

#------------------------------------------------------------------------------ # HEALTH CHECK #------------------------------------------------------------------------------

health_check_period = 10                                    # Health check period                                    # Disabled (0) by default health_check_timeout = 20                                    # Health check timeout                                    # 0 means no timeout health_check_user = 'postgres'                                    # Health check user health_check_password = 'postgres'                                    # Password for health check user health_check_database = 'postgres'                                    # Database name for health check. If '', tries 'postgres' frist, then 'template1'

health_check_max_retries = 0                                    # Maximum number of times to retry a failed health check before giving up. health_check_retry_delay = 1                                    # Amount of time to wait (in seconds) between retries. connect_timeout = 10000                                    # Timeout value in milliseconds before giving up to connect to backend.                                    # Default is 10000 ms (10 second). Flaky network user may want to increase                                    # the value. 0 means no timeout.                                    # Note that this value is not only used for health check,                                    # but also for ordinary conection to backend.

#------------------------------------------------------------------------------ # FAILOVER AND FAILBACK #------------------------------------------------------------------------------

failover_command = '/opt/pgpool/failover_stream.sh %d %P %H %R'                                    # Executes this command at failover                                    # Special values:                                    #   %d = node id                                    #   %h = host name                                    #   %p = port number                                    #   %D = database cluster path                                    #   %m = new master node id                                    #   %H = hostname of the new master node                                    #   %M = old master node id                                    #   %P = old primary node id                                    #   %r = new master port number                                    #   %R = new master database cluster path                                    #   %% = '%' character failback_command = ''                                    # Executes this command at failback.                                    # Special values:                                    #   %d = node id                                    #   %h = host name                                    #   %p = port number                                    #   %D = database cluster path                                    #   %m = new master node id                                    #   %H = hostname of the new master node                                    #   %M = old master node id                                    #   %P = old primary node id                                    #   %r = new master port number                                    #   %R = new master database cluster path                                    #   %% = '%' character

fail_over_on_backend_error = on                                    # Initiates failover when reading/writing to the                                    # backend communication socket fails                                    # If set to off, pgpool will report an                                    # error and disconnect the session.

search_primary_node_timeout = 300                                    # Timeout in seconds to search for the                                    # primary node when a failover occurs.                                    # 0 means no timeout, keep searching                                    # for a primary node forever.

#------------------------------------------------------------------------------ # ONLINE RECOVERY #------------------------------------------------------------------------------

recovery_user = 'nobody'                                    # Online recovery user recovery_password = ''                                    # Online recovery password recovery_1st_stage_command = ''                                    # Executes a command in first stage recovery_2nd_stage_command = ''                                    # Executes a command in second stage recovery_timeout = 90                                    # Timeout in seconds to wait for the                                    # recovering node's postmaster to start up                                    # 0 means no wait client_idle_limit_in_recovery = 0                                    # Client is disconnected after being idle                                    # for that many seconds in the second stage                                    # of online recovery                                    # 0 means no disconnection                                    # -1 means immediate disconnection

#------------------------------------------------------------------------------ # WATCHDOG #------------------------------------------------------------------------------

# - Enabling -

use_watchdog = on                                     # Activates watchdog                                     # (change requires restart)

# -Connection to up stream servers -

trusted_servers = ''                                     # trusted server list which are used                                     # to confirm network connection                                     # (hostA,hostB,hostC,...)                                     # (change requires restart) ping_path = '/bin'                                     # ping command path                                     # (change requires restart)

# - Watchdog communication Settings -

wd_hostname = 'master'                                     # Host name or IP address of this watchdog                                     # (change requires restart) wd_port = 9000                                     # port number for watchdog service                                     # (change requires restart) wd_priority = 1                                     # priority of this watchdog in leader election                                     # (change requires restart)

wd_authkey = ''                                     # Authentication key for watchdog communication                                     # (change requires restart)

wd_ipc_socket_dir = '/var/run/postgresql'                                     # Unix domain socket path for watchdog IPC socket                                     # The Debian package defaults to                                     # /var/run/postgresql                                     # (change requires restart)

# - Virtual IP control Setting -

delegate_IP = '10.33.26.117'                                     # delegate IP address                                     # If this is empty, virtual IP never bring up.                                     # (change requires restart) if_cmd_path = '/sbin'                                     # path to the directory where if_up/down_cmd exists                                      # (change requires restart) if_up_cmd = 'ifconfig ens33:0 inet 10.33.26.117 netmask 255.255.255.0'                                     # startup delegate IP command                                     # (change requires restart) if_down_cmd = 'ifconfig ens33:0 down'                                     # shutdown delegate IP command                                     # (change requires restart) arping_path = '/usr/sbin'                                     # arping command path                                     # (change requires restart) arping_cmd = 'arping -U 10.33.26.117 -w 1'                                     # arping command                                     # (change requires restart)

# - Behaivor on escalation Setting -

clear_memqcache_on_escalation = on                                     # Clear all the query cache on shared memory                                     # when standby pgpool escalate to active pgpool                                     # (= virtual IP holder).                                     # This should be off if client connects to pgpool                                     # not using virtual IP.                                     # (change requires restart) wd_escalation_command = ''                                     # Executes this command at escalation on new active pgpool.                                     # (change requires restart) wd_de_escalation_command = ''                                     # Executes this command when master pgpool resigns from being master.                                     # (change requires restart)

# - Lifecheck Setting -

# -- common --

wd_monitoring_interfaces_list = ''  # Comma separated list of interfaces names to monitor.                                     # if any interface from the list is active the watchdog will                                     # consider the network is fine                                     # 'any' to enable monitoring on all interfaces except loopback                                     # '' to disable monitoring

wd_lifecheck_method = 'heartbeat'                                     # Method of watchdog lifecheck ('heartbeat' or 'query' or 'external')                                     # (change requires restart) wd_interval = 10                                     # lifecheck interval (sec) > 0                                     # (change requires restart)

# -- heartbeat mode --

wd_heartbeat_port = 9694                                     # Port number for receiving heartbeat signal                                     # (change requires restart) wd_heartbeat_keepalive = 2                                     # Interval time of sending heartbeat signal (sec)                                     # (change requires restart) wd_heartbeat_deadtime = 30                                     # Deadtime interval for heartbeat signal (sec)                                     # (change requires restart) heartbeat_destination0 = 'slave'                                     # Host name or IP address of destination 0                                     # for sending heartbeat signal.                                     # (change requires restart) heartbeat_destination_port0 = 9694                                      # Port number of destination 0 for sending                                     # heartbeat signal. Usually this is the                                     # same as wd_heartbeat_port.                                     # (change requires restart) heartbeat_device0 = 'ens33'                                     # Name of NIC device (such like 'eth0')                                     # used for sending/receiving heartbeat                                     # signal to/from destination 0.                                     # This works only when this is not empty                                     # and pgpool has root privilege.                                     # (change requires restart)

#heartbeat_destination1 = 'host0_ip2' #heartbeat_destination_port1 = 9694 #heartbeat_device1 = ''

# -- query mode --

wd_life_point = 3                                     # lifecheck retry times                                     # (change requires restart) wd_lifecheck_query = 'SELECT 1'                                     # lifecheck query to pgpool from watchdog                                     # (change requires restart) wd_lifecheck_dbname = 'template1'                                     # Database name connected for lifecheck                                     # (change requires restart) wd_lifecheck_user = 'nobody'                                     # watchdog user monitoring pgpools in lifecheck                                     # (change requires restart) wd_lifecheck_password = ''                                     # Password for watchdog user in lifecheck                                     # (change requires restart)

# - Other pgpool Connection Settings -

other_pgpool_hostname0 = 'slave'                                     # Host name or IP address to connect to for other pgpool 0                                     # (change requires restart) other_pgpool_port0 = 9999                                     # Port number for othet pgpool 0                                     # (change requires restart) other_wd_port0 = 9000                                     # Port number for othet watchdog 0                                     # (change requires restart) #other_pgpool_hostname1 = 'host1' #other_pgpool_port1 = 5432 #other_wd_port1 = 9000

#------------------------------------------------------------------------------ # OTHERS #------------------------------------------------------------------------------ relcache_expire = 0                                    # Life time of relation cache in seconds.                                    # 0 means no cache expiration(the default).                                    # The relation cache is used for cache the                                    # query result against PostgreSQL system                                    # catalog to obtain various information                                    # including table structures or if it's a                                    # temporary table or not. The cache is                                    # maintained in a pgpool child local memory                                    # and being kept as long as it survives.                                    # If someone modify the table by using                                    # ALTER TABLE or some such, the relcache is                                    # not consistent anymore.                                    # For this purpose, cache_expiration                                    # controls the life time of the cache.

relcache_size = 256                                    # Number of relation cache                                    # entry. If you see frequently:                                    # "pool_search_relcache: cache replacement happend"                                    # in the pgpool log, you might want to increate this number.

check_temp_table = on                                    # If on, enable temporary table check in SELECT statements.                                    # This initiates queries against system catalog of primary/master                                    # thus increases load of master.                                    # If you are absolutely sure that your system never uses temporary tables                                    # and you want to save access to primary/master, you could turn this off.                                    # Default is on.

check_unlogged_table = on                                    # If on, enable unlogged table check in SELECT statements.                                    # This initiates queries against system catalog of primary/master                                    # thus increases load of master.                                    # If you are absolutely sure that your system never uses unlogged tables                                    # and you want to save access to primary/master, you could turn this off.                                    # Default is on.

#------------------------------------------------------------------------------ # IN MEMORY QUERY MEMORY CACHE #------------------------------------------------------------------------------ memory_cache_enabled = off                                    # If on, use the memory cache functionality, off by default memqcache_method = 'shmem'                                    # Cache storage method. either 'shmem'(shared memory) or                                    # 'memcached'. 'shmem' by default                                    # (change requires restart) memqcache_memcached_host = 'localhost'                                    # Memcached host name or IP address. Mandatory if                                    # memqcache_method = 'memcached'.                                    # Defaults to localhost.                                    # (change requires restart) memqcache_memcached_port = 11211                                    # Memcached port number. Mondatory if memqcache_method = 'memcached'.                                    # Defaults to 11211.                                    # (change requires restart) memqcache_total_size = 67108864                                    # Total memory size in bytes for storing memory cache.                                    # Mandatory if memqcache_method = 'shmem'.                                    # Defaults to 64MB.                                    # (change requires restart) memqcache_max_num_cache = 1000000                                    # Total number of cache entries. Mandatory                                    # if memqcache_method = 'shmem'.                                    # Each cache entry consumes 48 bytes on shared memory.                                    # Defaults to 1,000,000(45.8MB).                                    # (change requires restart) memqcache_expire = 0                                    # Memory cache entry life time specified in seconds.                                    # 0 means infinite life time. 0 by default.                                    # (change requires restart) memqcache_auto_cache_invalidation = on                                    # If on, invalidation of query cache is triggered by corresponding                                    # DDL/DML/DCL(and memqcache_expire).  If off, it is only triggered                                    # by memqcache_expire.  on by default.                                    # (change requires restart) memqcache_maxcache = 409600                                    # Maximum SELECT result size in bytes.                                    # Must be smaller than memqcache_cache_block_size. Defaults to 400KB.                                    # (change requires restart) memqcache_cache_block_size = 1048576                                    # Cache block size in bytes. Mandatory if memqcache_method = 'shmem'.                                    # Defaults to 1MB.                                    # (change requires restart) memqcache_oiddir = '/var/log/pgpool/oiddir'                                       # Temporary work directory to record table oids                                    # (change requires restart) white_memqcache_table_list = ''                                    # Comma separated list of table names to memcache                                    # that don't write to database                                    # Regexp are accepted black_memqcache_table_list = ''                                    # Comma separated list of table names not to memcache                                    # that don't write to database                                    # Regexp are accepted  

pgpool.conf 從

# ---------------------------- # pgPool-II configuration file # ---------------------------- # # This file consists of lines of the form: # #   name = value # # Whitespace may be used.  Comments are introduced with "#" anywhere on a line. # The complete list of parameter names and allowed values can be found in the # pgPool-II documentation. # # This file is read on server startup and when the server receives a SIGHUP # signal.  If you edit the file on a running system, you have to SIGHUP the # server for the changes to take effect, or use "pgpool reload".  Some # parameters, which are marked below, require a server shutdown and restart to # take effect. #

#------------------------------------------------------------------------------ # CONNECTIONS #------------------------------------------------------------------------------

# - pgpool Connection Settings -

listen_addresses = '*'                                    # Host name or IP address to listen on:                                    # '*' for all, '' for no TCP/IP connections                                    # (change requires restart) port = 9999                                    # Port number                                    # (change requires restart) socket_dir = '/var/run/postgresql'                                    # Unix domain socket path                                    # The Debian package defaults to                                    # /var/run/postgresql                                    # (change requires restart) listen_backlog_multiplier = 2                                    # Set the backlog parameter of listen(2) to                                    # num_init_children * listen_backlog_multiplier.                                    # (change requires restart) serialize_accept = off                                    # whether to serialize accept() call to avoid thundering herd problem                                    # (change requires restart)

# - pgpool Communication Manager Connection Settings -

pcp_listen_addresses = '*'                                    # Host name or IP address for pcp process to listen on:                                    # '*' for all, '' for no TCP/IP connections                                    # (change requires restart) pcp_port = 9898                                    # Port number for pcp                                    # (change requires restart) pcp_socket_dir = '/var/run/postgresql'                                    # Unix domain socket path for pcp                                    # The Debian package defaults to                                    # /var/run/postgresql                                    # (change requires restart)

# - Backend Connection Settings -

backend_hostname0 = 'master'                                    # Host name or IP address to connect to for backend 0 backend_port0 = 5432                                    # Port number for backend 0 backend_weight0 = 1                                    # Weight for backend 0 (only in load balancing mode) backend_data_directory0 = '/opt/postgresql/data'                                    # Data directory for backend 0 backend_flag0 = 'ALLOW_TO_FAILOVER'                                    # Controls various backend behavior                                    # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER backend_hostname1 = 'slave' backend_port1 = 5432 backend_weight1 = 1 backend_data_directory1 = '/opt/postgresql/data' backend_flag1 = 'ALLOW_TO_FAILOVER'

# - Authentication -

enable_pool_hba = on                                    # Use pool_hba.conf for client authentication pool_passwd = 'pool_passwd'                                    # File name of pool_passwd for md5 authentication.                                    # "" disables pool_passwd.                                    # (change requires restart) authentication_timeout = 60                                    # Delay in seconds to complete client authentication                                    # 0 means no timeout.

# - SSL Connections -

ssl = off                                    # Enable SSL support                                    # (change requires restart) #ssl_key = './server.key'                                    # Path to the SSL private key file                                    # (change requires restart) #ssl_cert = './server.cert'                                    # Path to the SSL public certificate file                                    # (change requires restart) #ssl_ca_cert = ''                                    # Path to a single PEM format file                                    # containing CA root certificate(s)                                    # (change requires restart) #ssl_ca_cert_dir = ''                                    # Directory containing CA root certificate(s)                                    # (change requires restart)

#------------------------------------------------------------------------------ # POOLS #------------------------------------------------------------------------------

# - Concurrent session and pool size -

num_init_children = 32                                    # Number of concurrent sessions allowed                                    # (change requires restart) max_pool = 4                                    # Number of connection pool caches per connection                                    # (change requires restart)

# - Life time -

child_life_time = 300                                    # Pool exits after being idle for this many seconds child_max_connections = 0                                    # Pool exits after receiving that many connections                                    # 0 means no exit connection_life_time = 0                                    # Connection to backend closes after being idle for this many seconds                                    # 0 means no close client_idle_limit = 0                                    # Client is disconnected after being idle for that many seconds                                    # (even inside an explicit transactions!)                                    # 0 means no disconnection

#------------------------------------------------------------------------------ # LOGS #------------------------------------------------------------------------------

# - Where to log -

log_destination = 'stderr'                                    # Where to log                                    # Valid values are combinations of stderr,                                    # and syslog. Default to stderr.

# - What to log -

log_line_prefix =