sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL9.6beta1用のPGLogical1.1パッケージ

    pglogical 1.1パッケージを、rpmベースとdebベースの両方のディストリビューションでPostgreSQL9.6beta1で利用できるようにしました。これらは、標準のpglogicalパッケージリポジトリからインストールできます。

    なぜPostgresのベータ版のパッケージをリリースするのかと疑問に思われるかもしれません。その理由の1つは、pglogicalを使用して既存のPostgreSQL 9.5または9.4データベースをリアルタイムで9.6beta1に複製し、テストを実行して、ベータリリースに残っているバグを取り除くことができることです。これを行う方法についての簡単なチュートリアルがあります。

    最初のステップは、PostgreSQL 9.6beta1をインストールすることです。これを行う方法については、リリースアナウンスを確認してください。 2番目のステップは、インストール手順ページで説明されているようにpglogicalをインストールすることです。

    次に、実際のレプリケーション設定について説明します。かなり簡単です。 PostgreSQLが論理レプリケーションを許可するように構成されていることを確認することから始めます。

    wal_level = 'logical'
    max_worker_processes = 10   # one per database needed on provider node
                                # one per node needed on subscriber node
    max_replication_slots = 10  # one per node needed on provider node
    max_wal_senders = 10        # one per node needed on provider node
    shared_preload_libraries = 'pglogical'

    上記の設定を変更するには、サーバーを再起動する必要があります。

    また、pg_hba.confで着信レプリケーション接続を許可する必要があります(物理ストリーミングレプリケーションを設定する場合と同様)。 pg_hba.confの行は次のようになります。

    host    replication     postgres        10.0.0.2/32            md5

    詳細については、pg_hbaのドキュメントページを参照してください。

    次に、プロバイダーデータベースにpglogical拡張機能をインストールし、そこにpglogicalノードを作成します。

    CREATE EXTENSION pglogical;
    SELECT pglogical.create_node(
        node_name := 'provider1',
        dsn := 'host=providerhost port=5432 dbname=db'
    );

    次に、新しい9.6データベースでも同じことを行います。

    CREATE EXTENSION pglogical;
    SELECT pglogical.create_node(
        node_name := 'subscriber1',
        dsn := 'host=subscriberhost port=5432 dbname=db'
    );

    接続文字列は、これらのコマンドを実行しているデータベースにつながる必要があることに注意してください。

    プロバイダーデータベースに戻り、複製するテーブルをdefaultに追加します レプリケーションセット。これを行う簡単な方法は、publicにすべてのテーブルを追加することです。 このようなスキーマ:

    SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

    そして最後に、再びサブスクライバーデータベースで、プロバイダーに接続して複製を開始するサブスクリプションを作成します。

    SELECT pglogical.create_subscription(
        subscription_name := 'subscription1',
        provider_dsn := 'host=providerhost port=5432 dbname=db',
        synchronize_structure := true
    );

    ここで、接続文字列は、プロバイダーのpglogicalノードを作成するときに使用したものと同じである必要があります。 synchronize_structure := true これは、pglogicalがすべてのテーブル構造をプロバイダーデータベースからサブスクライバーデータベースにコピーすることを意味します(標準のpg_dumpを使用) 。

    これで、既存のPostgreSQL9.5または9.4データベースと新しいPostgreSQL9.6beta1の間でレプリケーションが機能するようになりました。

    この投稿で使用されている機能と、単なる複製以上の方法に関する追加情報については、pglogicalのドキュメントとプロジェクトのページを確認してください。


    1. PostgreSQL正規表現の単語境界?

    2. PostgreSQLに存在しない場合はCREATEDATABASEをシミュレートしますか?

    3. MacにSQLclをインストールする方法

    4. エラー:テーブル'<table-name>'のユーザー'<userid>'@'<ip-address>'に対してコマンドが拒否されました