Working with SQL and the PGD cluster#

PGDクラスターを使用する最初のステップは、 SQLを使用して接続することです。 psql コマンドラインインターフェイスまたはPostgreSQLをサポートするその他のSQLクライアントを使用して接続します。

psql コマンドは既にインストールおよび構成されています。 host-1 コンテナにログインして、クラスター内でコマンドを実行します。

docker compose exec host-1 bash

このコマンドは、 host-1 コンテナ内にシェルを提供し、 PGDクラスターに対してPGDおよびSQLコマンドを実行できます。

PGDクラスター内の接続#

メンテナンスタスクを実行する場合を除き、通常は、クラスター内のすべてのホストのTCPポート6432で実行される接続マネージャーを使用してクラスターに接続します。

  1. クラスター内の書き込みリーダーノードに接続します。

psql -h <host> -p 6432 -U <username> <database>
  1. クラスターには、postgres スーパーユーザーと1つのレプリケートデータベースpgddb のみを除き、ユーザーがいないため、次のコマンドを使用してクラスターに接続します。

psql -h host-1 -p 6432 -U postgres pgddb

このコマンドは、ポート6432のhost-1 コンテナで実行されている接続マネージャーに接続します。これは、クラスター内の書き込みリーダーノードにルーティングされます。 host-1 は、クラスター内のホストの名前に置き換えます。これらはすべて接続マネージャーを実行します。

  1. クラスター内のどのノードに接続しているかを確認します。

select node_name from bdr.local_node_summary;
__OUTPUT__
node_name
-----------
node-1
  1. psql を終了し、別の設定で再接続します。

psql -h host-2 -p 6432 -U postgres pgddb
  1. クラスター内のnode-1 ノードに接続していることを確認します。

select node_name from bdr.local_node_summary;
node_name
-----------
node-1
  1. 接続マネージャーは、クラスター内の書き込みリーダーノードnode-1 に接続をルーティングしています。変更を確認します。

\! pgd group group-1 show --summary
__OUTPUT__
Group Property    | Value
-------------------+---------
Group Name        | group-1
Parent Group Name | pgd
Group Type        | data
Write Leader      | node-1
Commit Scope      |

Tip

psql の`!` コマンドを使用して、psql セッション内からシェルコマンドを直接実行します。 !!!

SQLでの作業#

クラスターに接続したら、 SQLコマンドでの作業を開始します。通常のPostgreSQLデータベースと同様に、テーブルを作成し、データを挿入し、クエリを実行します。

  1. テーブルを作成し、データを挿入します。

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE
);
INSERT INTO users (name, email) VALUES
(Alice, alice@example.com),
(Bob, bob@example.com);
  1. データを照会します。

SELECT * FROM users;
__OUTPUT__
id |  name  |        email
----+--------+---------------------
  2 | Alice  |      alice@example.com
  3 | Bob    |      bob@example.com
(2 rows)

より複雑なクエリーを実行し、テーブルを結合し、PostgreSQLのすべての機能を使用することもできます。 SQL構文とコマンドの詳細については、 PostgreSQL documentation を参照してください。

クラスター全体でのデータの複製#

PGDで重要なのは、これらのSQLコマンドがクラスター全体でレプリケートされることです。 PGDは、レプリケーションを行います。たとえば、そのserial キーはクラスター全体でグローバル一意のキーに自動的に変換されるため、クラスター内の任意のノードにデータを挿入できます。それは競合や重複なしで他のすべてのノードにレプリケートされます。

次のステップ#