pg_autoctl do tmux
pg_autoctl do tmux - Set of facilities to handle tmux interactive sessions
Synopsis
pg_autoctl do tmux provides the following commands:
pg_autoctl do tmux
+ compose Set of facilities to handle docker compose sessions
script Produce a tmux script for a demo or a test case (debug only)
session Run a tmux session for a demo or a test case
stop Stop pg_autoctl processes that belong to a tmux session
wait Wait until a given node has been registered on the monitor
clean Clean-up a tmux session processes and root dir
pg_autoctl do tmux compose
config Produce a docker compose configuration file for a demo
script Produce a tmux script for a demo or a test case (debug only)
session Run a tmux session for a demo or a test case
Description
An easy way to get started with pg_auto_failover in a localhost only formation with three nodes is to run the following command:
$ PG_AUTOCTL_DEBUG=1 pg_autoctl do tmux session \
--root /tmp/pgaf \
--first-pgport 9000 \
--nodes 4 \
--layout tiled
This requires the command tmux
to be available in your PATH. The
pg_autoctl do tmux session
commands prepares a self-contained root
directory where to create pg_auto_failover nodes and their configuration,
then prepares a tmux script, and then runs the script with a command such as:
/usr/local/bin/tmux -v start-server ; source-file /tmp/pgaf/script-9000.tmux
The tmux session contains a single tmux window multiple panes:
one pane for the monitor
one pane per Postgres nodes, here 4 of them
one pane for running
pg_autoctl watch
one extra pane for an interactive shell.
Usually the first two commands to run in the interactive shell, once the formation is stable (one node is primary, the other ones are all secondary), are the following:
$ pg_autoctl get formation settings
$ pg_autoctl perform failover
Using docker compose to run a distributed system
The same idea can also be implemented with docker compose to run the nodes, and still using tmux to have three control panels this time:
one pane for the docker compose cumulative logs of all the nodes
one pane for running
pg_autoctl watch
one extra pane for an interactive shell.
For this setup, you can use the following command:
PG_AUTOCTL_DEBUG=1 pg_autoctl do tmux compose session \
--root ./tmux/citus \
--first-pgport 5600 \
--nodes 3 \
--async-nodes 0 \
--node-priorities 50,50,0 \
--sync-standbys -1 \
--citus-workers 4 \
--citus-secondaries 0 \
--citus \
--layout even-vertical
The pg_autoctl do tmux compose session
command also takes care of
creating external docker volumes and referencing them for each node in the
docker compose file.
pg_autoctl do tmux session
This command runs a tmux session for a demo or a test case.
usage: pg_autoctl do tmux session [option ...]
--root path where to create a cluster
--first-pgport first Postgres port to use (5500)
--nodes number of Postgres nodes to create (2)
--async-nodes number of async nodes within nodes (0)
--node-priorities list of nodes priorities (50)
--sync-standbys number-sync-standbys to set (0 or 1)
--skip-pg-hba use --skip-pg-hba when creating nodes
--citus start a Citus formation
--citus-workers number of Citus workers to create (2)
--citus-secondaries number of Citus secondaries to create (0)
--layout tmux layout to use (even-vertical)
--binpath path to the pg_autoctl binary (current binary path)
pg_autoctl do tmux compose session
This command runs a tmux session for a demo or a test case. It generates a docker compose file and then uses docker compose to drive many nodes.
usage: pg_autoctl do tmux compose session [option ...]
--root path where to create a cluster
--first-pgport first Postgres port to use (5500)
--nodes number of Postgres nodes to create (2)
--async-nodes number of async nodes within nodes (0)
--node-priorities list of nodes priorities (50)
--sync-standbys number-sync-standbys to set (0 or 1)
--skip-pg-hba use --skip-pg-hba when creating nodes
--layout tmux layout to use (even-vertical)
--binpath path to the pg_autoctl binary (current binary path)