PgPool ADM extension

Edgar Silva Leitão
Edgar Silva Leitão

pgpool_adm is a PgPool extension for PostgreSQL that provides functions similar to the PCP commands. This article explains how to install and use the pgpool_adm extension.

Community PostgreSQL

List of packages available:

pgpool-II-pg10-extensions.x86_64 : PostgreSQL extensions for pgpool-II
pgpool-II-pg11-extensions.x86_64 : PostgreSQL extensions for pgpool-II
pgpool-II-pg12-extensions.x86_64 : PostgreSQL extensions for pgpool-II
pgpool-II-pg13-extensions.x86_64 : PostgreSQL extensions for pgpool-II
pgpool-II-pg14-extensions.x86_64 : PostgreSQL extensions for pgpool-II
pgpool-II-pg15-extensions.x86_64 : PostgreSQL extensions for pgpool-II
pgpool-II-pg16-extensions.x86_64 : PostgreSQL extensions for pgpool-II

Installation example:

dnf install pgpool-II-pg16-extensions

Once installed, you can find the following extensions in the PostgreSQL lib directory:

/usr/pgsql-16/lib/pgpool_adm.so  
/usr/pgsql-16/lib/pgpool-recovery.so 
/usr/pgsql-16/lib/pgpool-regclass.so

EPAS

List of packages available:

edb-as13-pgpool41-extensions.x86_64 : The server extension modules for pgpool
edb-as13-pgpool42-extensions.x86_64 : The server extension modules for pgpool
edb-as13-pgpool43-extensions.x86_64 : The server extension modules for pgpool
edb-as13-pgpool44-extensions.x86_64 : The server extension modules for pgpool
edb-as13-pgpool45-extensions.x86_64 : The server extension modules for pgpool
edb-as14-pgpool43-extensions.x86_64 : The server extension modules for pgpool
edb-as14-pgpool44-extensions.x86_64 : The server extension modules for pgpool
edb-as14-pgpool45-extensions.x86_64 : The server extension modules for pgpool
edb-as15-pgpool44-extensions.x86_64 : The server extension modules for pgpool
edb-as15-pgpool45-extensions.x86_64 : The server extension modules for pgpool
edb-as16-pgpool44-extensions.x86_64 : The server extension modules for pgpool
edb-as16-pgpool45-extensions.x86_64 : The server extension modules for pgpool

Installation example:

yum install -y edb-as16-pgpool45-extensions

Once installed, you can find the following extensions in the PostgreSQL lib directory:

/usr/edb/as16/lib/pgpool_adm.so 
/usr/edb/as16/lib/pgpool-recovery.so

pgpool_adm extension

The pgpool_adm.so provides functions that work similar to PCP commands, the pgpool-recovery.so is used for online recovery (not covered in this article), and the pgpool-regclass.so is an obsolete extension used from PostgreSQL 8.0 to 9.3. Its functionality is now part of PostgreSQL core. This article focuses only on the pgpool_adm.so extension.

To create the extension in any PostgreSQL database, you do not need to add it to shared_preload_libraries. Simply connect to any database and create the extension, for example:

\c postgres

CREATE EXTENSION pgpool_adm;

Functions

PCP_NODE_INFO()

Expected values:

  • node_id (int);
  • pgpool_host (text);
  • pcp_port (int);
  • pcp_username (text);
  • pcp_user_password(text).

Example:

SELECT * FROM pcp_node_info(0, '192.168.1.249', 9898, 'pcpuser', '12345678');

PCP_HEALTH_CHECK_STATS()

Expected values:

  • node_id (int);
  • pgpool_host (text);
  • pcp_port (int);
  • pcp_username (text);
  • pcp_user_password(text).

Example:

SELECT * FROM pcp_health_check_stats(0, '192.168.1.249' ,9898, 'pcpuser', '12345678');

PCP_POOL_STATUS()

Expected values:

  • pgpool_host (text);
  • pcp_port (int);
  • pcp_username (text);
  • pcp_user_password(text).

Example:

SELECT * FROM pcp_pool_status('192.168.1.249', 9898, 'pcpuser', '12345678');

You can also filter by backend:

SELECT * FROM pcp_pool_status('192.168.1.249', 9898, 'pcpuser', '12345678') WHERE item ~ 'backend.*0';

PCP_NODE_COUNT()

Expected values:

  • pgpool_host (text);
  • pcp_port (int);
  • pcp_username (text);
  • pcp_user_password(text).

Example:

SELECT * FROM pcp_node_count('192.168.1.249', 9898, 'pcpuser', '12345678');

PCP_DETACH_NODE()

Expected values:

  • node_id (int);
  • gracefully (boolean);
  • pgpool_host (text);
  • pcp_port (int);
  • pcp_username (text);
  • pcp_user_password(text).

Example:

SELECT * FROM pcp_detach_node(2, true, '192.168.1.249' ,9898, 'pcpuser', '12345678');

PCP_ATTACH_NODE()

Expected values:

  • node_id (int);
  • pgpool_host (text);
  • pcp_port (int);
  • pcp_username (text);
  • pcp_user_password(text).

Example:

SELECT * FROM pcp_attach_node(2,'192.168.1.249', 9898, 'pcpuser', '12345678');

Was this article helpful?

0 out of 0 found this helpful