Using PGD CLI v5.7

What is the PGD CLI?

The PGD CLI is a convenient way to connect to and manage your PGD cluster. To use it, you need a user with PGD superuser privileges or equivalent. The PGD user with superuser privileges is the bdr_superuser role. An example of an equivalent user is edb_admin on an EDB Cloud Service distributed high-availability cluster.

Setting passwords

PGD CLI doesn't interactively prompt for your password. You must pass your password using one of the following methods:

  • Adding an entry to your .pgpass password file, which includes the host, port, database name, user name, and password.
  • Setting the password in the PGPASSWORD environment variable.
  • Including the password in the connection string.

We recommend the first option, as the other options don't scale well with multiple databases, or they compromise password confidentiality.

Running the PGD CLI

Once you have installed pgd-cli, run the pgd command to access the PGD command line interface. The pgd command needs details about the host, port, and database to connect to, along with your username and password.

Passing a database connection string

Use the --dsn flag to pass a database connection string to the pgd command. When you pass the connection string with the --dsn flag, you don't need a configuration file. The flag takes precedence even if a configuration file is present. For example:

pgd nodes list --dsn "host=bdr-a1 port=5432 dbname=bdrdb user=enterprisedb"

See PGD CLI Command reference for a description of the command options.

Specifying a configuration file

If a pgd-cli-config.yml file is in /etc/edb/pgd-cli or $HOME/.edb/pgd-cli, pgd uses it. You can override this behavior using the optional -f or --config-file flag. For example:

pgd nodes list -f /opt/my-config.yml
Output
Node Name Group Name   Node Kind Join State Node Status
--------- ------------ --------- ---------- -----------
kaftan    dc1_subgroup data      ACTIVE     Up         
kaolin    dc1_subgroup data      ACTIVE     Up         
kaboom    dc1_subgroup data      ACTIVE     Up  

Specifying the output format

Use the -o or --output flag to change the default output format to JSON. For example:

pgd nodes list -o json
[
  {
    "node_name": "kaftan",
    "node_group_name": "dc1_subgroup",
    "node_kind_name": "data",
    "join_state": "ACTIVE",
    "node_status": "Up",
    "node_id": 3490219809,
    "node_seq_id": 2,
    "node_local_dbname": "bdrdb"
  },
  {
    "node_name": "kaolin",
    "node_group_name": "dc1_subgroup",
    "node_kind_name": "data",
    "join_state": "ACTIVE",
    "node_status": "Up",
    "node_id": 2111777360,
    "node_seq_id": 1,
    "node_local_dbname": "bdrdb"
  },
  {
    "node_name": "kaboom",
    "node_group_name": "dc1_subgroup",
    "node_kind_name": "data",
    "join_state": "ACTIVE",
    "node_status": "Up",
    "node_id": 2710197610,
    "node_seq_id": 3,
    "node_local_dbname": "bdrdb"
  }
]

The PGD CLI supports the following output formats.

SettingFormatDescription
simpleTabularA simple tabular view. (Default).
jsonJSONPresents the raw data with no formatting. For some commands, the JSON output might show more data than the tabular output, such as extra fields and more detailed messages.
psqlPSQLA tabular view in the style of PSQL output. format.
modernTabularA tabular view which uses box characters to deliniate the table.
markdownMarkdownA Markdown style output which may product long-form, non-tabular output for some commands such as pgd assess.

Accessing the command line help

To list the supported commands, enter:

pgd --help

For help with a specific command and its parameters, enter pgd <command_name> --help. For example:

pgd nodes list --help
Avoiding stale data

The PGD CLI can return stale data on the state of the cluster if it's still connecting to nodes previously parted from the cluster. Edit the pgd-cli-config.yml file, or change your --dsn settings to ensure you are connecting to active nodes in the cluster.