Routing functions v5

bdr.create_proxy

Create a proxy configuration.

Synopsis

bdr.create_proxy(proxy_name text, node_group text, proxy_mode text);

Parameters

NameTypeDefaultDescription
proxy_nametextName of the new proxy.
node_grouptextName of the group to be used by the proxy.
proxy_modetext'default'Mode of the proxy. It can be 'default' (listen_port connections follow write leader, no read_listen_port), 'read-only' (no listen_port, read_listen_port connections follow read-only nodes), or 'any' (listen_port connections follow write_leader, read_listen_port connections follow read-only nodes). Default is 'default'.

When proxy_mode is set to 'default', all read options in the proxy config will be set to NULL. When it's set to 'read-only', all write options in the proxy config will be set to NULL. When set to 'any' all options will be set to their defaults.

bdr.alter_proxy_option

Change a proxy configuration

Synopsis

bdr.alter_proxy_option(proxy_name text, config_key text, config_value text);

Parameters

NameTypeDefaultDescription
proxy_nametextName of the proxy to be changed.
config_keytextKey of the option in the proxy to be changed.
config_valuetextNew value to be set for the given key.

The table shows the proxy options (config_key) that can be changed using this function.

OptionDescription
listen_addressAddress for the proxy to listen on. Default is '{0.0.0.0}'
listen_portPort for the proxy to listen on. Default is '6432' in 'default' or 'any' mode and '0' in 'read-only' mode which disables the write leader following port.
max_client_connMaximum number of connections for the proxy to accept. Default is '32767'.
max_server_connMaximum number of connections the proxy can make to the Postgres node. Default is '32767'.
server_conn_timeoutConnection timeout for server connections. Default is '2' (seconds).
server_conn_keepaliveKeepalive interval for server connections. Default is '10' (seconds).
consensus_grace_periodDuration for which proxy continues to route even upon loss of a Raft leader. If set to 0s, proxy stops routing immediately. Default is generally '6' (seconds) for local proxies and '12' (seconds) for global proxies. These values will be overridden if raft_response_timeout, raft_global_election_timeout, or raft_group_election_timeout are changed from their defaults.
read_listen_addressAddress for the read-only proxy to listen on. Default is '{0.0.0.0}'.
read_listen_portPort for the read-only proxy to listen on. Default is '6433' in 'read-only' or 'any' mode and '0' in 'default' mode which disables the read-only port .
read_max_client_connMaximum number of connections for the read-only proxy to accept. Default is '32767'.
read_max_server_connMaximum number of connections the read-only proxy can make to the Postgres node. Default is '32767'.
read_server_conn_keepaliveKeepalive interval for read-only server connections. Default is '10' (seconds).
read_server_conn_timeoutConnection timeout for read-only server connections. Default is '2' (seconds).
read_consensus_grace_periodDuration for which read-only proxy continues to route even upon loss of a Raft leader. Default is 1 hour.

Changing any of these values requires a restart of the proxy.

bdr.drop_proxy

Drop a proxy configuration.

Synopsis

bdr.drop_proxy(proxy_name text);

Parameters

NameTypeDefaultDescription
proxy_nametextName of the proxy to be dropped.

bdr.routing_leadership_transfer

Changing the routing leader transfers the leadership of the node group to another node.

Synopsis

bdr.routing_leadership_transfer(node_group_name text,
              leader_name text,
              transfer_method text DEFAULT 'strict',
              transfer_timeout interval DEFAULT '10s');

Parameters

NameTypeDefaultDescription
node_group_nametextName of group where the leadership transfer is requested.
leader_nametextName of node that will become write leader.
transfer_methodtext'strict'Type of the transfer. It can be 'fast' or the default, 'strict', which checks the maximum lag.
transfer_timeoutinterval'10s'Timeout of the leadership transfer. Default is 10 seconds.