英語マニュアル
2 概要
4 設定
4.1 制限
4.2.11 スナップショットの 再読み込み
この文書は EDB Postgres Replication Serverバージョン7 のアーキテクチャ、インストール、設定、そして使用法を紹介し ます 。 EDB Postgres Replication Server(以降EDB Replication Serverと呼びます )は、PostgreSQL®およびEDB Postgres™Advanced Serverで利用可能なレプリケーションストリーミングシステムです。後者はAdvanced Serverと呼ばれます 。
注意: EDB Replication Server 6.xからEDB Replication Server 7への直接アップグレードはサポートされていません。
以下の説明では、 用語は、言語キーワード、ユーザー指定の値、リテラルなどである任意の単語または単語のグループを指します。用語の正確な意味は、それが使用される文脈によって異なります。
•
イタリック体のフォントは、通常は初めて定義する文章の中に新しい用語を導入します。
•
Fixed-width (mono-spaced) fontは、SQLコマンド、例で使用されている特定のテーブル名および列名、プログラミング言語のキーワードなど、文字通りに指定する必要がある用語に使用されます。例えば、 SELECT * FROM emp;
•
Italic fixed-width fontは、ユーザーが実際の使用法で値を置き換える必要がある用語に使用されます。例えば、 DELETE FROM table_name ;のようにします。
•
角括弧[]は、括弧で囲まれた用語のいずれかが置き換えられることを意味します。たとえば、 [ a | b ]は、「 a 」または「 b 」のいずれかを選択するか、または両方を選択しないことを意味します。
•
中括弧{}は、囲まれた選択肢のうち1つだけを指定する必要があることを示します。たとえば、 { a | b }はa必ず「 b 」または「 b 」のいずれかを指定する必要があることを意味します。
•
省略記号...は、前の用語が繰り返される可能性があることを示します。たとえば、 [ a | b ] ...は、シーケンス「 baaba 」があるかもしれないことを意味します。
•
この文書の情報の大部分はPostgreSQLとEDB Postgres Advanced Serverデータベースシステムの両方に当てはまります。 Advanced Server という用語は、EDB Postgres Advanced Serverを指すために使用されます。 Postgresという用語は、PostgreSQLとAdvanced Serverの両方を総称的に指すために使用されます。これら2つのデータベースシステムを区別する必要がある場合は、特定の名前(PostgreSQLまたはAdvanced Server)が使用されます。
•
PostgreSQLまたはAdvanced Server製品のインストールディレクトリパスは POSTGRES_INSTALL_HOME と呼ばれます。 PostgreSQL Linuxインストールの場合、これはデフォルトで/opt/PostgreSQL/ x .バージョン10以前の場合はx 。それ以降のバージョンでは、PostgreSQLコミュニティパッケージを使用してください。バージョン10以前の対話式インストーラーを使用して実行されたAdvanced Server Linuxインストールの場合、これはデフォルトで/opt/edb/as x . x 。 RPMパッケージを使用して実行されたAdvanced Server Linuxインストールの場合、これはデフォルトで/usr/edb/as x . x 。製品のバージョン番号はxで表され. xまたはバージョン10以降の場合はxx 。
2 概要
RAM
- Xmx中ngxReplicationServer-7.config位置ファイル/usr/edb/rs-7.0/common/etc/sysconfig以下に示すように。これらの変更は、EDB Replication Serverの起動中に適用されます。
CPU
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
9.6
9.6
10
10
11
11
9.6
10
Note: These source and target versions although supported are not tested and formally certified (in the development environment).
9.6
11
10
9.6
10
11
11
9.6
11
10
9.6
9.6
10
10
11
11
9.6
10
Note: These source and target versions although supported are not tested and 正式に認定さ These source and target versions although supported are not tested and (開発環境で)。
9.6
11
10
9.6
10
11
11
9.6
11
10
9.6
9.6
Note: These source and target versions although supported are not tested and 正式に認定さ These source and target versions although supported are not tested and (開発環境で)。
9.6
10
9.6
11
10
9.6
10
10
10
11
11
9.6
11
10
11
11
注 :ポートが開いているときは、システムは外部からアクセス可能であるため、セキュリティ上のリスクがあります。 EDB Replication Serverに必要なポートだけを開いたままにしてください。
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /monitor/etc
Note : For a two-node cluster there will be
EPRS_HOME /client/etc
Note : EPRS_HOME is the directory where the EDB Replication Server package has been installed. The general format of the EPRS_HOME directory is /usr/edb/rs- is the directory where the EDB Replication Server package has been installed. The general format of the directory is /usr/edb/rs- x . x where x . x is the EDB Replication Server version number.
手順1:ファイアウォールの状態を確認します。
手順2:ファイアウォールが無効になっている場合は有効にします。
ステップ3:許可されているすべてのポートを表示します。
ステップ4:着信トラフィック用に開くために許可ポートにポートを追加します。
tcp
オプションを恒久的に設定するために使用されます。なければ --permanentオプション、変更は実行時設定の一部となります。
ステップ4:-- --permanent引数を使用してファイアウォール設定を変更した後に、 FirewallD設定を再読み込みします。
ステップ5:ポートが許可リストに追加されているかどうかを確認します。
デフォルトでは、 iptablesファイアウォールはRHEL / CentOS 6.xの/etc/sysconfig/iptablesファイルに設定を保存します。このファイルを編集して、開いているポート番号にルールを追加します。
ステップ1: /etc/sysconfig/iptablesファイルを開きます。
手順2:次の規則を追加します。
--dport portid -j ACCEPT
ステップ3:ファイルを保存して閉じます。 iptables再起動します。
ステップ1: iptablesコマンドを実行します。
ステップ2: iptablesコマンドで作成したルールはメモリに保存されます。 iptablesルールセットを保存する前にシステムを再起動すると、すべてのルールが失われます。ルールを永続的に保存するには、rootとして次のコマンドを実行します。
手順3:ポートが開かれているかどうかを確認するには、次のコマンドを実行します。
例: CentOS 6のポート2181と2182を開く
•
セクション 2.2.1では、EDB Replication Serverインフラストラクチャを提供するオープンソースコンポーネントについて説明しています。さまざまなWebサイトへのリンクがあり、そこにはこれらのオープンソース製品の完全で詳細な情報が含まれています。
•
セクション 2.3では、データストリーミング機能を実行するためにオープンソースコンポーネントを使用するために作成および管理するEDB Replication Serverコンポーネントについて説明します。
•
セクション 2.4に 、EDB Replication Serverコンポーネントと主要なオープンソースコンポーネントが、SMRとMMRのクラスタをサポートするレプリケーションネットワークでどのように関わるかのいくつかの基本的な例を示します。
Apache Kafkaは、EDB Replication Serverで使用されるデータストリーミング機能を提供する主要なオープンソースコンポーネントです。 Kafkaと他の主要コンポーネントは次のとおりです。
•
Apache Kafka Apache Software Foundationによって開発されたオープンソースの分散ストリーミングプラットフォーム。 Kafkaは、リアルタイムでレコードのストリームをパブリッシュおよびサブスクライブするためのメッセージングシステムです。
•
Apache ZooKeeper。 Kafkaの分散コンポーネント用の設定情報、分散同期、およびグループサービスを維持するための集中サービス。
•
RESTまたはRESTful。 Representational State Transferは、ネットワーク対応およびWeb対応アプリケーションの実装を容易にするアーキテクチャスタイルです。
•
ノード。 1つ以上のKafkaブローカーを実行している単一のコンピューター。
•
ブローカ。ノード上の公開データを管理するKafkaプロセスインスタンス。
•
クラスタ。複数のノードまたはブローカーのグループ。クラスタは、パブリッシュされたメッセージデータの永続性とレプリケーションを管理するために使用されます。
•
トピック。公開されるメッセージの特定のストリームを識別するカテゴリ。
•
パーティション。各トピックはいくつかのパーティションに分割できます。各区画にはメッセージが含まれています。そのパーティション内の各メッセージは、そのシーケンスオフセットによって一意に識別されます。特定のトピックのパーティションは、別々のブローカーによって管理される場合があります。
•
プロデューサー。 1つ以上のKafkaトピックへのメッセージを公開するアプリケーション。メッセージがKafkaブローカーに送信されます。
•
消費者 Kafkaブローカーからデータを読み取るアプリケーション。消費者は1つ以上のトピックを購読し、ブローカーからデータを引き出します。
•
レプリケーションサーバー。レプリケーションサーバーは、1つのKafkaブローカーと1つまたは2つのZooKeeperインスタンスを使用する、HTTPサーバー上の専用のRESTfulサービスとして実行されるプロセスです。各複製サーバーは、Kafkaのプロデューサーまたはコンシューマーとして機能する、1つまたは複数の関連データベースを持つことができません。レプリケーションサーバは、レプリケーションノードの作成時に作成および起動する必要がある最初のEDB Replication Serverコンポーネントです。
•
リーダーサービスレプリケーションネットワークでプライマリレプリケーションサーバーとして使用されているレプリケーションサーバー。リーダーサービスは、ユーザーがRepCLIコマンドを発行したときに通信するレプリケーションサーバーです。新しいレプリケーションネットワークを作成したときに最初に起動されたレプリケーションサーバーはリーダーサービスとして機能し、そのフレームワーク内で2つのZooKeeperインスタンスが実行されています。レプリケーションネットワークに追加された他のすべての追加レプリケーションサーバーには、1つのZooKeeperインスタンスがあります。レプリケーションネットワークの運用中に、リーダーサービスの役割がフェールオーバー操作の結果として別のレプリケーションサーバーに転送されることがあります(つまり、リーダーサービスとして機能している現在のレプリケーションサーバーが中止され、リーダーサービス操作が別のアクティブサーバーに変更されます)。複製ネットワークをアクティブに保つための複製サーバー)
•
レプリケーションノード。単一の複製サーバー、その基礎となるKafkaブローカーとZooKeeperインスタンス、その複製サーバーに追加されたプロデューサーデータベースとコンシューマーデータベース、複製サーバー内で作成されたパブリケーション、パブリケーションの作成に起因するKafkaブローカー内のトピックパーティション他のすべてのサポートオープンソースコンポーネントと同様に。高可用性のサポートを強化する目的を果たすために、レプリケーションノードには、そのレプリケーションサーバにプロデューサデータベースまたはコンシューマデータベースが追加されていない場合があります。この状況で、別のレプリケーションサーバが中断した場合、その機能をこの別のレプリケーションサーバに転送できます。レプリケーションノードは、完全なレプリケーションネットワークに貢献できる単一の完全なEDB Replication Serverコンポーネントを形成します。
•
レプリケーションネットワーク。 1つ以上の複製ノードのグループ。各レプリケーションノードはレプリケーションネットワークに登録する必要があります。これは、そのレプリケーションサーバーをレプリケーションネットワークに参加させることによって実現されます。最初のレプリケーションサーバーが起動し、レプリケーションネットワークに参加すると、リーダーサービスとして起動します。すべての
•
出版物変更されたデータがコンシューマデータベースにストリーミングされる、特定のプロデューサデータベースの1つ以上のテーブルの定義済みセットパブリケーションは、変更されたデータを保存するためのKafkaトピックとして実装されています。変更されたデータは、レプリケーションネットワークの一部として登録され、その特定のパブリケーションに参加しているコンシューマデータベースにストリーミングされます。パブリケーションは、レプリケーションネットワーク内のすべてのパブリケーションの中で一意でなければならない名前で識別されます。
•
レプリケーションコマンドラインインターフェイス(RepCLI)。 EDB Replication Serverの設定、設定、および実行プロセスを実行するためのコマンドラインツール。 RepCLIコマンドは、RESTfulアーキテクチャでサポートされています。
第 5 章では、このセクションで説明するレプリケーションネットワークの作成方法の例を示します。
/var/lib / edb / rs / data
次の例は 、リーダーサービスの2つのZooKeeperディレクトリ zk_1とzk_2を示しています。
パブリケーションテーブル内で変更されたデータが発生すると、その変更はPostgreSQLの 論理デコード を使用して収集されます 。変更されたデータはPostgreSQLの先行書き込みログセグメント(WALセグメントファイル)から抽出されます。この情報は変換され、Kafkaブローカーによって管理されるKafkaトピックに格納されます。出版物を管理するトピックが複数ある場合があります。
Kafkaは パーティション と呼ばれる複数のログファイルに分割されたトピックの使用をサポートしますが 、EDB Replication Serverはトピックごとに1つのパーティションしか使用しません。
servernameは、ネットワークに参加したときに複製サーバーに割り当てられた識別子です。
6.1.1 項に 、このSMRクラスタの構成例を示します。
6.1.2 項に 、これら2つのレプリケーションノードのSMRクラスタを構成する例を示します。
6.2.1 項でこのMMRクラスタの構成例を示します。
セクション 6.2.2は、これがどのように行われるかの設定例を提供します。
edb-rsパッケージは、さまざまなコンポーネントまたはからEDBヤムリポジトリにアクセスするためのURLを含むリポジトリRPM、使用してインストールされているedb-rs RPMパッケージファイルを直接決定することがEnterpriseDBのウェブサイトの場所からダウンロードします。 EDB Yum Repository Webサイトにアクセスすると、リポジトリRPMが表示されます。
EDB Yum Repositoryの使い方については、以下のEnterpriseDB Webサイトから入手可能な『EDB Postgres Advanced Serverインストールガイド』の 第3章を参照してください 。
各EDB Replication Serverコンポーネントは、個別のRPMパッケージとして入手できます。したがって、単一の yum installコマンドですべてのコンポーネントを yum installことも、特定のRPMパッケージのみをインストールして選択した個々のコンポーネントをインストールすることもできます。
Advanced Serverのlibsパッケージは、EDB Replication Server RPMパッケージコンポーネントをインストールするときに、Yumからアクセスできるようになっている必要があります。 edb-as10-server-libsパッケージをインストールする必要がありますバージョン10のためのAdvanced Serverのリポジトリパッケージのコンポーネントです。手順3は、YumがそのサーバーのlibsパッケージにアクセスできるようにAdvanced Serverリポジトリへのアクセスを有効にする方法を示しています。
yum install package_name
package_nameは、上記の表の[パッケージ名]列に一覧表示されているパッケージのいずれかです。
手順1: EDB Replication Serverコンポーネントをインストールする予定のホストに、Java Runtime Environment(JRE)バージョン1.8がインストールされている必要があります。 Oracle JavaやOpenJDKなどの任意のJava製品を使用できます。
ステップ2: EDB Yum Repositoryから、 edb-repoリンクをクリックして、すべてのEnterpriseDB RPMのリポジトリRPMをダウンロードします。
rootアカウントとして、次のコマンドを発行してこのリポジトリ設定パッケージをインストールします。
手順3:ディレクトリ/etc/yum.repos.dにリポジトリ設定ファイルedb.repoが作成されます。このファイルには、EnterpriseDBリポジトリのリストが含まれ、それぞれテキスト[ repository_name ]始まるエントリが示されています。
•
EDB Yumリポジトリに対して要求された認証情報を使用して 、 baseurlパラメータの <username>:<password>プレースホルダにユーザ名とパスワードを baseurlます。
•
Advanced Server用のリポジトリ edbasx
xはAdvanced Serverのバージョンです。
•
レポジトリ enterprisedb-dependencies
•
リポジトリ enterprisedb-tools
ステップ4: EDB Replication Server RPMパッケージをインストールします。
EDB Replication Serverは、ディレクトリの場所 /usr/edb/rs- x インストールされています . xここでx . xは、次のように製品のバージョン番号です。
•
クライアントアプリケーションユーザーがサーバーと対話してさまざまな操作を実行するためのコマンドライン・ベースのアプリケーション
•
サーバーアプリケーション。レプリケーションサーバーを起動し、Kafkaブローカー、ZooKeeper、スキーマレジストリなどのさまざまなレプリケーションサーバーサービスを処理するためのコマンドラインアプリケーション
•
モニタリング。レプリケーションサーバーコンポーネントを監視するためのコマンドラインベースのアプリケーション
•
データバリデータ。テーブルペアの行を比較および検証するためのコマンドラインベースのアプリケーション
•
一般。アプリケーション間で共有されるJARファイルとスクリプト
EPRS_HOME /client/bin
EPRS_HOME /client/etc
EPRS_HOME /client/etc
EPRS_HOME /common/etc
EPRS_HOME /common/etc/sysconfig
EPRS_HOME /server/bin
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /server/etc
EPRS_HOME /monitor/bin
EPRS_HOME /monitor/etc
EPRS_HOME /monitor/etc
EPRS_HOME /datavalidator/bin
EPRS_HOME /datavalidator/etc
EPRS_HOMEは、EDB Replication Serverパッケージがインストールされているディレクトリです。 EPRS_HOMEディレクトリーの一般形式は/usr/edb/rs- x . xここでx . xはEDB Replication Serverのバージョン番号で、最初は7.0です。
•
/var/lib/edb/rs/dataは、ZooKeeperやトピックなど、レプリケーションネットワークによって作成および使用されるデータやその他のコンポーネントが含まれています。
•
/var/log/edb/rsにはログファイルが含まれています。
rootアカウントとしてyum remove package_nameコマンドを呼び出すことによって、任意のコンポーネントをアンインストールできます。ここで、 package_nameは、セクション3.1の表にリストされているコンポーネントRPMパッケージです 。
4 設定
4.1 制限
•
パブリケーションで使用されるデータベーステーブルは、レプリケーションネットワークを作成する前にプロデューサデータベースとコンシューマデータベースに存在する必要があります。テーブル定義は存在していなければなりません(つまり、 CREATE TABLEコマンドで作成された構造 )が、テーブルは最初は空になることがあります。レプリケーションネットワークが作成されたら、 startsnapshotコマンドを使用して、コンシューマデータベーステーブルにプロデューサデータベースの行をロードできます。
•
前の箇条書きで参照したデータベーステーブルには、テーブルに REPLICA IDENTITY FULL定義されている必要があります 。これは、SQLコマンドALTER TABLE schema使用して実行できschema . table REPLICA IDENTITY FULL 。
以下は、 encryptていない形式のデータベースユーザーパスワードがunencrypted_password_file指定されている encryptコマンドです。
./runRepCLI.sh -encrypt -input unencrypted_password_file
–output encrypted_password_file -ユーザーのユーザーusername
注: encryptコマンドには、以下の許可が必要です。
runRepCLI.shスクリプトが実行されてからEPRS_HOME /client/binディレクトリに移動します。
2。
レプリケーションサーバーをレプリケーションネットワークに参加させます。ネットワークに参加している最初のレプリケーションサーバーが、レプリケーションネットワークのリーダーサービス として機能するレプリケーションサーバーになります。レプリケーションネットワークごとにリーダーサービスは1つだけあります。

リーダーサービスとしてネットワークに参加するためのこの最初のコマンド、およびこの複製ネットワークに他の複製サーバーを追加し、このリストの以下のすべてのプロセスを実行するための後続のすべてのコマンドは、次のEPRS_HOME /client/binディレクトリから実行する必要がありますリーダーサービスを実行しているホスト。

この手順の間に、ZooKeeperが起動します。 ZooKeeperの2つのインスタンスがリーダーサービスで開始されています。単一のZooKeeperインスタンスは、ネットワークに参加している追加の複製サーバーごとに起動されます。

さらに、リーダーサービスを開始した後に、 adminという名前のadminユーザーが作成されます。その後、 adminユーザーのパスワードを設定する必要があります。 adminユーザパスワードの設定については4.2.3項を参照してください。ネットワークへの参加についてはセクション4.2.2を参照してください。
•
特定のホスト内にセットアップするとき。手順1(レプリケーションサーバーの起動)と手順2(ネットワークへの参加)を最初に実行する必要があります。その後、ステップ3(データベースの追加)の後にステップ4(パブリケーションの作成)を続けることができます。コンシューマの場合、ステップ3(データベースの追加)が繰り返され、続いてステップ5(パブリケーションへの参加)が続きます。あるいは、ステップ3(データベースの追加)は、追加されたコンシューマデータベースでステップ4(パブリケーションの作成)およびステップ5(パブリケーションへの参加)に進む前に、複数のデータベースに対して複数回実行できます。
•
レプリケーションネットワークに複数のホストを設定する場合。手順1(レプリケーションサーバーの起動)と手順2(ネットワークへの参加)は、手順1と2が実行されたホストで残りの手順を実行する前に、複数のホストで実行できます。
rootアカウントとして、 EPRS_HOME /server/binディレクトリーから以下を実行します。
./runServer.sh --host host_ip_address
--config EPRS_HOME / server / etc
-h 、 --host host_ip_address
-c 、 --config EPRS_HOME /server/etc
EPRS_HOME /server/etcディレクトリへのフルディレクトリパス 。同じホストマシン上で複数のレプリケーションサーバーを実行する場合は、 EPRS_HOME /serverディレクトリのコピーを作成し、追加のレプリケーションサーバーのEPRS_HOME /server/etcディレクトリにある特定のプロパティファイルを変更する必要があります。変更が必要なプロパティファイルについては、 『 EDB Postgres Replication Serverリファレンスガイド』を参照してください。
一般に、後続のRepCLIコマンドはすべて、RepCLIコマンドの効果をそのレプリケーションネットワークに適用するために、レプリケーションサーバーリーダーサービスを実行しているホストの EPRS_HOME /client/binディレクトリから実行する必要があります。
EPRS_HOME /client/binディレクトリーから以下を実行します 。
-host host_ip_address port [-ngxpasspath directory ]
[-user username ]
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
コマンドを実行している複製ユーザー。リーダー・サービスを作成するときにレプリケーション・ネットワークで初めてjoinnetworkコマンドを実行するときにはこのパラメーターは必要ありませんが、それ以降のjoinnetwork使用およびその他すべてのRepCLIコマンドには必須です。
最初の後 joinnetworkコマンドは、リーダーのサービスを確立し実行してきた、追加のレプリケーションサーバが実行することによって、ネットワークに追加されたjoinnetworkユニーク指定してコマンドをservernameレプリケーションサーバと識別するためにhost_ip_address 、この追加のレプリケーションサーバが稼動しているホストの場所を指定します。
-port 8082によって与えられるようにオプションでは、レプリケーションサーバに割り当てられているデフォルトのポート番号ですngen.server.port中でパラメータapplication.propertiesファイル。同じホスト上で複数の複製サーバーを実行するためにこのポート番号が変更された場合、 -portオプションは変更されたポート番号を指定する必要があります。
とき joinnetworkリーダーサービスを確立するために使用され、 adminユーザーは、すべての権限を持つ管理者の役割、で作成されます。次に、 adminユーザーのパスワードを-setadminpasswordコマンドで次のように設定する必要があります。
指定したパスワードを .ngxpassファイルに保存します。
adminユーザパスワードの入力を求めるプロンプトが表示されます。 -savepasswordオプションが含まれていない限り、 adminがコマンドを実行しているユーザーであることを示す-user adminが指定されている場合は、後続のすべてのRepCLIコマンドにパスワードを入力する必要があります。
EPRS_HOME /client/binディレクトリーから以下を実行します 。
./runRepCLI.sh -adddb [-servername servername ] -dbid dbid
-dbport port -dbuser user
{-dbpassword encrypted_pwd | -dbpassfile pwdfile }
-database dbname [-ngxpasspath directory ] -user username
データベースがPostgreSQLデータベースの場合はpostgresql 、Advanced Serverデータベースの場合はenterprisedb 指定します。
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
EPRS_HOME /client/binディレクトリーから以下を実行します 。
-servername servername
-dbid dbid
{-table schema_1 。 table_1 [、 schema_2 。 table_2 ] ... |
-alltables [ schema_1 ] [、 schema_2 ] ...}
- username
パブリケーションを追加するレプリケーションサーバーの名前。パブリケーションのテーブルを含むdbidで指定されたデータベースも、このレプリケーションサーバに追加されている必要があります。
schema_n . table_n
-alltables [ schema_1 ][, schema_2 ]...
データベースがこのパブリケーションにしか書き込めない場合はW 指定します。これによりプロデューサのみになります。データベースがこのパブリケーションに参加している他のデータベースからの変更データも受け入れることができる場合は、 RW指定します。後者は、このデータベースを出版物の消費者と生産者の両方にします。 -nodetypeが省略された場合、デフォルトはWです。
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
注意:それ以外の場合、レプリケートされるすべてのテーブルに主キーが必要です。パブリケーションの作成中にエラーが発生します。
EPRS_HOME /client/binディレクトリーから以下を実行します 。
./runRepCLI.sh -joinpub -servername servername -dbid dbid
-pubname pubname [–nodetype {R | W | RW}]
[ - フィルタ filtername ]
[-ngxpasspath directory ] -user username
データベースがこのパブリケーションからしか読み取れない場合はR 指定してください。データベースがこのパブリケーションにしか書き込めない場合はW指定します。これによりプロデューサのみになります。データベースがこのパブリケーションに参加している他のデータベースとの間で変更データをストリーミングおよび受信できる場合は、 RW指定します。後者は、このデータベースを出版物の消費者と生産者の両方にします。 -nodetypeが省略された場合、デフォルトはRです。
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
通常、 joinpubコマンドは、スナップショットがすべてのターゲットデータベースに取得されストリーミングが開始される前に初期レプリケーションネットワークを作成するときに使用されることに注意してください 。
•
adddbコマンドでデータベースを追加します 。
•
joinpubコマンドでパブリケーションに参加します。
•
startstreamingコマンドを再実行して startstreaming 。
ことに注意してください startstreamingコマンドはストリーミングがすでにレプリケーションネットワーク上で実行されている場合でも、再実行する必要があります。
EPRS_HOME /client/binディレクトリーから以下のコマンドを実行します 。
{-tables table_1、table_2 ...} [-ngxpasspathディレクトリ]
- ユーザー名
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH.設定によって検索されますNGXPASSPATH.
•
addtablesコマンドを使用するには、 create_pubパーミッションが必要です。
例

EPRS_HOME/client/binディレクトリーから以下のコマンドを実行します 。
{-tables table_1、table_2 ...} [-ngxpasspathディレクトリ]
- ユーザー名
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH.設定によって検索されますNGXPASSPATH.
•
removetablesコマンドを使用するには、 remove_pubパーミッションが必要です。
パブリケーション pubnameにテーブルがありません。
例
注:指定されたパブリケーションのテーブルを確認するには、 listpubtableコマンドを使用してlistpubtable 。
注(MMRのみ):マルチマスターレプリケーションシステムでテーブルフィルターを使用する場合、スナップショットのテーブルコンテンツのソースを提供するマスター定義ノードには、他のマスターノードに含まれるすべてのデータのスーパーセットを含める必要があります。マルチマスターレプリケーションシステムのこれにより、スナップショットのターゲットは、他のマスターノードで有効になっているフィルタリング基準を満たすすべてのデータを確実に受け取るようになります。
注: 以下の説明では、 結果セット とは、 そのテーブルで実行され た UPDATE または DELETE ステートメントの 選択基準を満たすテーブル内の行のセットを指し ます。
ソース表に対して INSERT文を実行した後に同期レプリケーションを実行すると、その行がフィルタリング基準を満たす場合、その行は同期のターゲット表に挿入されます。それ以外の場合、行はターゲット表への挿入から除外されます。
ソース表に対して UPDATEステートメントが実行された後に同期レプリケーションが行われると、ソース表のUPDATE結果セットは、同期のターゲット表に対するアクションを以下のように決定します。
場合 DELETE ステートメントは、同期複製に続いて、ソーステーブルに実行され 、以下のように 、 ソーステーブルの DELETE 結果セットは、同期の対象テーブル上のアクションを決定します。
したがって、関係なく、ソーステーブル上のトランザクションがあるかどうかの INSERT、UPDATE、または DELETE 文、テーブルフィルタの目標は、ターゲット表のすべての行は、フィルタルールを満たすことを確実にするためです。
レプリカIDENTITY FULL 設定は、ログ・ベースのレプリケーション・システムの以下のデータベースのテーブルの上に必要です。
•
マルチマスターレプリケーションシステムでは、非MDNノードは、 トランザクションがそれらの非MDNノードをターゲットにしていると予想されない限り 、それらのテーブルの REPLICA IDENTITY オプションを FULLに 設定し てはいけません。 他のマスターノード
ソース表 の REPLICA IDENTITY FULL 設定により、ソース表の特定のタイプのトランザクションで、フィルターが有効になっているターゲット表が正しく更新されます。
次のように、 この設定は ALTER TABLEコマンドで行われます。
表ALTER スキーマを 。 table_name レプリカID FULL
たとえば、 edb.dept という名前のパブリケーションテーブルの 場合は、次の ALTER TABLE コマンドを 使用します 。
レプリカIDENTITYの 設定は 、\ D + コマンドを 使用してPSQLユーティリティで表示することができ ます。
詳細については、 次の場所にある PostgreSQLコアドキュメント の ALTER TABLE SQLコマンドを 参照してください 。
•
•
•
•
•
RAW
注:スナップショットを作成するには、次の権限が必要です。
startsnapshot Start a snapshot with startsnapshot .
EPRS_HOME /client/binディレクトリーから以下を実行します 。
-dbid target_dbid [-ngxpasspath directory ] –user username
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
checksnapshotデータがターゲット・ノードに複製されている場合、コマンドは確認します。
EPRS_HOME /client/binディレクトリーから以下を実行します 。
-dbid target_dbid
[-ngxpasspath directory ]
- username
今すぐ実行 checksnapshotあなたが実行した後にコマンドをstartSnapshotコマンドをデータノードをターゲットに複製されているかどうかを確認する(数秒の遅延の後に)。ステータスは完了している必要があります(データ発行およびデータインポートの場合)。
注:スナップショットステータスの取得と確認には、次の権限が必要です。
startsnapshot Start a snapshot with startsnapshot .
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
例
checksnapshotコマンドの実行例を以下に示します。
4.2.11 スナップショットの 再読み込み
スナップショット操作の後にクラスター構成を変更する(データベース、パブリケーション、サブスクリプション、あるいはその両方を削除する)場合は、 reloadオプションを含めてスナップショットを繰り返してください。これは、Kafkaのキュー(トピック)にソースデータベースからのデータの新しいコピーが再設定されるときに必要です。
reloadオプションを指定して startsnapshotコマンドを実行する前にストリーミングを停止します。そうしないと、操作は失敗します(エラーメッセージがサーバーに記録されます)。スナップショットが完了したら、ストリーミングを明示的に再開します。
注: reloadオプションは、オフラインスナップショットには機能しません。
EPRS_HOME /client/binディレクトリーから以下のコマンドを実行します 。
-dbid target_dbid
[-ngxpasspath directory ]
- username
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
例
以下は 、 reloadオプションを指定したstartsnapshotコマンドの実行例です。
注意:データ移動はレプリケーションサーバの外部で行われるため、フィルタはオフラインスナップショットでは機能しません。
手順1 ( オプション):ターゲットデータベースに公開されたテーブルとスキーマが既にある場合は、この手順を省略します。すべてのパブリケーションテーブルのスキーマ定義がターゲットデータベースで適切であることを確認してください。
/ opt/edb/database_server_installation_directory/binディレクトリから次のコマンドを実行します 。
./pg_dump -U postgres -p port -Ft -s source_database_name > source_database_name _schemaonly.sql.tar
注:テーブルの部分的なセットがパブリケーションの一部である場合は、部分的なバックアップを取ってください( –tablesオプションで選択されたテーブルの場合)。
この例では、次のコマンドが Advanced Server 10が実行されている/ opt/edb/as10/binディレクトリ。ポート5432。
$ ./pg_dump -U postgres -p 5432 -Ft -s db1 > db1 _schemaonly.sql.tar
ステップ2(オプション):ターゲットデータベースにパブリッシュされたテーブルとスキーマが既にある場合は、このステップを省略します。すべてのパブリケーションテーブルのスキーマ定義がターゲットデータベースで適切であることを確認してください。
ターゲットデータベースでダンプを復元するには、便利な方法を使用できます。ここでは、 pg_restoreユーティリティを使用してターゲットPostgreSQLデータベースのダンプを次のように復元します。
./pg_restore -U postgres -p port -d target_database_name source_database_name _schemaonly.sql.tar
手順3:パブリケーションを作成します。
手順4:ターゲットノードでパブリケーションに参加する
ステップ5:スナップショットを撮ります( offlineオプションを指定します)。
EPRS_HOME /client/binディレクトリーから以下を実行します 。
-dbid target_dbid [-ngxpasspath directory ] –user username
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
ステップ6: checksnapshotコマンドを実行して、エクスポートされたSnapshot Id書き留めます。
例
checksnapshotコマンドの実行例を以下に示します。
手順7:エクスポートしたSnapshot Idを使用してパブリケーションデータベース(データのみ)のバックアップを作成します。バックアップから制御スキーマ_ngx_rep_clusterをスキップします。
Snapshot_Idを手順6でエクスポートしたSnapshot Idに置き換えた後、 / opt/edb/ database_server_installation_directory/binディレクトリから次のコマンドを実行します 。
./pg_dump -U postgres -p port -Ft -a - Snapshot_Id = Snapshot_Id ID - 除外スキーマ= _ngx_rep_cluster source_database_name > source_database_name _dataonly.sql.tar
注:制御スキーマ名は構成可能です。デフォルトの制御スキーマ名は_ngx_rep_cluster.
手順8:サブスクリプションデータベースのデータベースダンプ(データのみ)を復元します。ターゲットデータベースでダンプを復元するには、便利な方法を使用できます。ここでは、 pg_restoreユーティリティを使用してターゲットPostgreSQLデータベースのダンプを次のように復元します。
./pg_restore -U postgres -p port -d target_database_name source_database_name _dataonly.sql.tar
ステップ9:ターゲットデータベースのストリーミングを開始します。
EPRS_HOME /client/binディレクトリーから以下を実行します 。
./runRepCLI.sh -startstreaming -pubname pubname [-dbid target_dbid ] [-ngxpasspath directory ] -user username
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
EPRS_HOME /client/binディレクトリから次の EPRS_HOME 実行して、ストリーミングプロセスを停止できます 。
./runRepCLI.sh -stopstreaming -pubname pubname [-dbid target_dbid ] [-ngxpasspath directory ] -user username
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
セクション 4.2.1に 示すように 、レプリケーションサーバは端末から起動されます。
•
複製サーバーを実行している端末で、キーボードでCtrl-Cを入力します。
•
rootユーザーとして別の端末で、コマンド lsof -i tcp:8082をlsof -i tcp:8082してレプリケーションサーバーのプロセスIDを返し、次にコマンドkill -9 process_idを実行してレプリケーションサーバーを停止します。 lsofで与えられるコマンド、8082は、レプリケーション・サーバーが使用するポートですngen.server.port中にパラメータEPRS_HOME /server/etc/application.propertiesファイル。
ホストマシンを再起動したら、 4.2.1 項に示すようにレプリケーションサーバを起動して、レプリケーションノードをレプリケーションネットワークに再参加させます。ノードを構成するためにすでに使用されている他のRepCLIコマンドを繰り返す必要はありません。
•
leavepubは、 joinpubコマンドを使用して結合したパブリケーションからデータベースを削除します。
•
removepubは、 createpubコマンドで作成されたパブリケーションをレプリケーションサーバから削除します。
•
removedbで追加されたレプリケーション・サーバーからデータベース削除adddbコマンドを。
•
leavenetworkは、 joinnetworkコマンドで追加されたレプリケーションネットワークからレプリケーションサーバーを削除します。
これらのコマンドの詳細については、 EDB Postgres Replication Serverリファレンスガイドを参照してください。
Kafkaでイベントの追加を有効にするには、レプリケーションサーバーを起動する前に、 EPRS_HOME/server/etc/logback.xml 内の次の行のコメントを EPRS_HOME/server/etc/logback.xmlます。
EPRS_HOME/client/binディレクトリーから以下のコマンドを実行します 。
.ngxpassパスワードファイルを含むディレクトリ。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
例
以下は、 MMR(2つのサーバー)を設定したlisteventsコマンドの例です 。
EPRS_HOME /client/binディレクトリーから以下のコマンドを実行します 。
.ngxpassパスワードファイルを含むディレクトリ。このオプションを省略すると、 ngxpassファイルはユーザーのホームディレクトリまたは環境変数の設定で検索されます。 NGXPASSPATH 。
注:すべてのメッセージを受信するには、 EPRS_HOME / server / etc / logback.xmlファイルの以下の行のコメントを外してください。
例
以下は、 重大度を error とした listevents コマンド のフィルタリングの例です 。
注:プロデューサデータベースもコンシューマになる場合は、追加する必要があるコンシューマ設定要件についてセクション4.4を参照してください。
そのPostgresデータベースサーバーの設定ファイル postgresql.confは、次の設定パラメータ設定が必要です 。
•
wal_level logical設定しlogical 。
•
max_wal_senders最大同時接続数(つまり、同時に実行されているWAL送信側プロセスの最大数)を指定します。データベースサーバー上のプロデューサーデータベースの総数よりも大きい値に設定する必要があります。
•
max_replication_slots複製スロットの最大数を指定します。データベースサーバー上のプロデューサーデータベースの総数よりも大きい値に設定する必要があります。
•
track_commit_timestamp on設定しon 。
Postgresデータベースサーバはホストベースの認証ファイル pg_hba.confを使ってデータベースサーバ内のデータベースへのアクセスを制御します。
プロデューサデータベースを含む各Postgresデータベースサーバ上の pg_hba.confファイルを修正する必要があります。
host pub_dbname pub_dbuser pub_ipaddr / 32
pub_dbname 代わりに pub_dbname 値は、使用したいPostgresプロデューサデータベースの名前です( - adddb RepCLIコマンドの- databaseオプションで指定)。あなたが代わりに値pub_dbuser -で指定するデータベース・ユーザー名ですdbuserのオプションadddb RepCLIコマンド。 pub_ipaddr代入する値は、データベースに接続する複製サーバーのホストIPアドレスです。
pg_hba.confファイルがするデータベースフィールドが設定された追加のエントリが含まれている必要がありますreplicationのためpub_dbname 、 pub_dbuser 、およびpub_ipaddrそれが実行されているホスト上のレプリケーションサーバからのレプリケーション接続を許可します。
データベースユーザenterprisedbに接続しているPostgresプロデューサデータベース node1 、次のコマンドを実行してデータベースを追加します。
$ EPRS_HOME / client / bin / runRepCLI.sh - adddb -サーバー名rep_server_1 - dbid db1 - dbtype enterprisedb - dbhost 127.0.0.1
- dbport 5444 - dbuser enterprisedb - dbpassword ygJ9AxoJEX854elcVIJPTw == -データベースnode1 - user admin
結果の pg_hba.confファイルは次のようになります。
どこ 127.0.0.1のアドレスであるrep_server_1 -上記でadddbコマンド。
node1は、 - adddb RepCLIコマンドの-databaseオプションで指定されたdbnameです。
ここで 192.168.2.27のアドレスであるrep_server_1 -上記で指定され、 adddbコマンド。
node1は、 - adddb RepCLIコマンドの-databaseオプションで指定されたdbnameです。
adddbコマンドの-dbuserオプションで指定されたデータベースユーザーには、次の特権が必要です。
•
データベースユーザーがスーパーユーザーでない場合はREPLICATION特権
pg_hba.confで示すように、ファイル、このデータベース・ユーザが含まれていなければならないpub_dbuserセクション内の変数4.3.1.2 。
注:コンシューマデータベースもプロデューサになる場合は、追加する必要があるプロデューサセットアップ要件についてセクション4.3を参照してください。
Postgresデータベースサーバはホストベースの認証ファイル pg_hba.confを使ってデータベースサーバ内のデータベースへのアクセスを制御します。
コンシューマデータベースを含む各Postgresデータベースサーバー上の pg_hba.confファイルを修正する必要があります。
host sub_dbname sub_dbuser sub_ipaddr / 32
sub_dbname 代わりに sub_dbname 値は、使用する予定のPostgresコンシューマデータベースの名前です。 sub_dbuser代わりにsub_dbuser値は、 adddb RepCLIコマンドの-dbuserオプションで指定されるデータベースユーザー名です。 sub_ipaddr代入する値は、データベースに接続するレプリケーションサーバのホストIPアドレスです。
データベースユーザenterprisedbで接続しているPostgres Consumerデータベース node2場合、次のコマンドを実行してデータベースノード2を追加します。
結果の pg_hba.confファイルは次のようになります。
どこ 127.0.0.1のアドレスであるrep_server_2 -上記でadddbコマンド。
node2は、 - adddb RepCLIコマンドの-databaseオプションで指定されたdbnameです。
どこ 192.168.2.28のアドレスであるrep_server_2に指定され、 adddbコマンド。
node2は、 - adddb RepCLIコマンドの-databaseオプションで指定されたdbnameです。
adddbコマンドの-dbuserオプションで指定されたデータベースユーザーには、次の特権が必要です。
注:コンシューマデータベーステーブルに対する制約の無効化などの特定の操作を実行するには、データベースサーバーユーザーにスーパーユーザー特権が必要です。
pg_hba.confで示すように、ファイル、このデータベース・ユーザが含まれていなければならないsub_dbuserセクション内の変数4.4.1.1 。
./runRepCLI.sh - replicationlatency - pubname pubname
- dbid target_dbid [-ngxpasspath directory ]
-ユーザーのユーザーusername
.ngxpassパスワードファイルを含むディレクトリ 。このオプションを省略すると、 .ngxpassファイルはユーザーのホームディレクトリ内で、または環境変数NGXPASSPATH設定によって検索されます。
例
以下は、 replicationlatencyコマンドの実行例です 。
注: replicationlatencyコマンドには、以下の許可が必要です。
•
シングルマスターレプリケーション(SMR)クラスター。データベースノードは、変更されたデータのプロデューサまたはコンシューマとして機能する必要があります。
•
マルチマスターレプリケーション(MMR)クラスター。データベースノードは、変更されたデータのプロデューサとコンシューマの両方として機能できます。
注意:データベースオブジェクトがプロデューサデータベースとコンシューマデータベースに作成されていることを確認してください( 4.1.1項を参照)。
パブリケーションデータベース pubdbのdeptテーブルには、最初次の行が含まれています。
コンシューマデータベースsubdb の deptテーブルに行が含まれていません。
ステップ1: Linuxのrootユーザーアカウントとして、 EPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出して、リーダーサービスとして起動するホストでレプリケーションサーバーを起動し/server/bin 。このスクリプトは、ランを指定する必要がありますされているホストのIPアドレス--hostオプション。
ステップ2: EPRS_HOME /client/binディレクトリーに対する読み取り権限と実行権限を持つ任意のLinuxユーザー・アカウントを使用して、同じホスト上で2番目の端末を開き/client/bin 。 EPRS_HOME /client/binディレクトリーから、 joinnetworkコマンドを使用してrunRepCLI.shスクリプトを呼び出して、複製ネットワークに参加します。
joinnetworkコマンドを使用するときは、レプリケーションネットワークのメンバーになるレプリケーションサーバーを実行しているホストのIPアドレスと、レプリケーションサーバーのポート番号を指定します。この場合、複製サーバーはステップ1でログインしたホスト上で実行されており、ポート番号は複製サーバーのデフォルト設定の8082です。
レプリケーションサーバーが起動されたホストでjoinnetworkコマンドを最初に使用すると、 リーダーサービスとして-servernameオプションで指定された名前を割り当てるサービスとして使用されます。この例ではlocalServiceです。
手順3: setadminpasswordコマンドを使用して、 adminというユーザ名が与えられているEDB Replication Server管理ユーザの管理者パスワードを設定する必要があります。 adminユーザーは、RepCLIコマンドを実行する権限を持ちます。 Enter admin passwordプロンプトに対して入力した応答が、 adminユーザーのadmin者パスワードになります。
これらの例の残りのRepCLIコマンドでは、管理ユーザーとしてコマンドを実行するために-user adminが指定されています。他のユーザー名を作成し、それらがユーザーが達成できるものに特定の役割と権限を割り当てることができるRepCLIコマンドのセットがあります。この情報についてはEDB Postgres Replication Serverリファレンスガイドを参照してください。
ステップ4:パブリケーションデータベースをリーダーサービスに追加するには、 adddbコマンドを使用します。手順2で割り当てた複製サーバー名localServiceには、 -servernameオプションを付けて指定します。
このデータベースに一意のデータベース識別子を割り当てるには、 -dbidオプションを使用します。このデータベース識別子は他のRepCLIコマンドで指定する必要があります。この例では、データベースID db1が指定されています。
また、 -user adminオプションは、手順3の説明に従って指定されています。
手順5: createpubコマンドを使用してパブリケーションを作成し、変更されたデータをキャプチャして他のコンシューマデータベースにストリーミングするテーブルを指定します。
-pubnameオプションは、パブリケーションに割り当てるリケーション名を指定します。
-dbidオプションは、この出版物にあるとされているテーブルを含むデータベースを指定します。
-servernameオプションは、この出版物は、このレプリケーションサーバの一部であることを指定しlocalService 。
-tablesオプションは、パブリケーションの一部であることをしている彼らのスキーマを持つ1つ以上のテーブルを示しています。
複数のリスト schema . table_nameは、コンマの前後にスペースを入れずにコンマで区切る必要があります。
手順6:サブスクリプションデータベースをレプリケーションサーバーに追加して、コンシューマとして機能します。
adddbコマンドのオプションについては、手順4で説明しています。
サブスクリプションデータベースを別のレプリケーションノードなどの別のレプリケーションサーバーに追加する場合は、 -servernameオプションでこのレプリケーションサーバーの名前を指定します。
db2は、このデータベースに-dbidオプションを使用して割り当てられたIDであることに注意してください 。これは、次のステップで説明するjoinpubコマンドによって参照されます。
ステップ7:サブスクリプションデータベースがパブリケーションテーブルから変更されたデータを受信できるように、パブリケーションを結合します。これを行うには、 joinpubコマンドを使用します。 -pubnameオプションでは、変更されたデータの受信元のパブリケーションを指定します。
-dbidオプションは、このデータを変更受信するサブスクリプションデータベースを識別します。
-servernameオプションは、このサブスクリプションデータベースは、ステップ6に付加したレプリケーション・サーバーを指定します。
デフォルトでは、 joinpubコマンドはデータベースがパブリケーションデータベースからの変更データの読み取りのみを許可します。 -nodetype RWオプションがjoinpubコマンドで指定されていない限り、サブスクリプションデータベーステーブルで発生した変更は他のコンシューマにストリーミングされません。
ステップ8:スナップショットを実行して、これらのサブスクリプションデータベーステーブルにパブリケーションデータベーステーブルに存在する行をロードします。
startsnapshotコマンドの -pubnameオプションは、パブリケーション名を指定します。
-dbidオプションは、スナップショットを受信するためのターゲット消費者のデータベースを指定します。
手順9: checksnapshotコマンドを実行して(数秒後)、データがターゲットノードに複製されているかどうかを確認します。
ステップ10:すべてのパブリケーションテーブルの行の内容がパブリケーションデータベースとサブスクリプションデータベースで一貫していることを確認したら、ストリーミングを開始します。
$ ./runRepCLI.sh -startstreaming -pubname deptpub -user admin
注意:データベースオブジェクトがプロデューサデータベースとコンシューマデータベースに作成されていることを確認してください( 4.1.1項を参照)。
パブリケーションデータベース node1のdeptテーブルには、最初次の行が含まれています。
コンシューマデータベースnode2 の deptテーブルに行が含まれていません。
手順1: EPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出して、リーダーサービスとして起動するホストでレプリケーションサーバーを起動し/server/bin 。
ステップ2:同じホスト上で2番目の端末を開きます。 EPRS_HOME /client/binディレクトリーから、 joinnetworkコマンドを使用してrunRepCLI.shスクリプトを呼び出して、複製ネットワークに参加します。
手順3: adminユーザーのadmin者パスワードを設定します。 -user adminオプションを指定して後続のRepCLIコマンドを呼び出すときにプロンプトが出されたら、このパスワードを使用してください。
ステップ4:パブリケーションデータベースをリーダーサービスに追加します。手順2で指定した複製サーバー名は、 -servernameオプションで指定されます。
このデータベースに一意のデータベース識別子を割り当てるには、 -dbidオプションを使用します。このデータベース識別子は他のRepCLIコマンドで指定する必要があります。
手順5:パブリケーションを作成して、変更されたデータをキャプチャしてサブスクリプションデータベースにストリーミングするテーブルを指定します。
ステップ6:サブスクライバを実行するホストマシンにログインし、そのホストにインストールされているEPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出します。
手順7: -hostオプションを使用してサブスクリプションホストのホストIPアドレスを指定してjoinnetworkコマンドを実行し、サブスクリプションホストマシンのレプリケーションサーバーをレプリケーションネットワークに参加させます。
注: joinnetworkコマンドおよびすべての追加のRepCLIコマンドは、ステップ6でログインしたサブスクライバホストからではなく、必ずリーダーサービスホストマシンから実行してください。
このサブスクリプション複製サーバーに割り当てる名前を -servernameオプションで-servernameます。
手順8: -servernameオプションでレプリケーションサーバー名remoteServiceを指定して、サブスクリプションデータベースをサブスクリプションホスト上のレプリケーションサーバーに追加します。後続のjoinpubコマンドで指定された複製サーバーは、データベースへの接続が行われるソースになります。
データベースに固有のデータベースIDを割り当てるには、 -dbidオプションを使用します。データベース識別子は他のRepCLIコマンドで指定されます。
ステップ9:サブスクリプションデータベースがパブリケーションテーブルから変更されたデータを受信できるようにパブリケーションに参加します。 -pubnameオプションを指定したjoinpubコマンドでは、変更されたデータの受信元のパブリケーションを指定します。
-dbidオプションは、このデータを変更受信するサブスクリプションデータベースを識別します。
-servernameオプションは、データベース接続が複製を受け取るために作られているから、レプリケーション・サーバーを指定します。
ステップ10:スナップショットを実行して、パブリケーションデータベーステーブルに存在する行を含むサブスクリプションデータベーステーブルをロードします。
startsnapshotコマンドの -pubnameオプションは、パブリケーション名を指定します。
-dbidオプションは、スナップショットを受信するためのターゲット消費者のデータベースを指定します。
手順11: checksnapshotコマンドを実行して(数秒後)、データがターゲットノードに複製されているかどうかを確認します。
ステップ12:すべてのパブリケーションテーブルの行の内容がパブリケーションデータベースとサブスクリプションデータベースで一貫していることを確認したら、ストリーミングを開始します。
注意:データベースオブジェクトがプロデューサデータベースとコンシューマデータベースに作成されていることを確認してください( 4.1.1項を参照)。
パブリケーションデータベース node1テーブルには、最初次の行が含まれています。
データベース node2のどの表にも行が含まれていません。
手順1: EPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出して、リーダーサービスとして起動するホストでレプリケーションサーバーを起動し/server/bin 。
ステップ2:同じホスト上で2番目の端末を開きます。 EPRS_HOME /client/binディレクトリーから、 joinnetworkコマンドを使用してrunRepCLI.shスクリプトを呼び出して、複製ネットワークに参加します。
手順3: adminユーザーのadmin者パスワードを設定します。 -user adminオプションを指定して後続のRepCLIコマンドを呼び出すときにプロンプトが出されたら、このパスワードを使用してください。
ステップ4:パブリケーションデータベースをリーダーサービスに追加します。手順2で指定した複製サーバー名は、 -servernameオプションで指定されます。
このデータベースに一意のデータベース識別子を割り当てるには、 -dbidオプションを使用します。このデータベース識別子は他のRepCLIコマンドで指定する必要があります。
ステップ5:最初の出版物を作成します。
使用 -nodetype RW出版物にリード/ライトされるオプションは、で識別されたパブリケーションのテーブルを所有するデータベース、ことを指定-dbidオプションは、ほかに、独自のテーブルに変更されたデータを受け入れ、適用することです他のコンシューマデータベースに独自の変更をストリーミングすること。
使用 -nodetype RW上のオプションcreatepubコマンドだけでなく、上のjoinpubコマンドは、任意のデータベース上の出版テーブルの変更が複製され、クラスタ内の他のすべてのデータベースに適用されているMMRクラスタにつながるものです。
createpub場合、コマンド、 -nodetypeオプションが省略され、デフォルトの効果がある-nodetype W出版テーブルを所有しているデータベースは、その変更が他のデータベースの消費者にストリーミングすることができ、それは受け入れないことを意味し、 書き込み専用です、他のデータベースから自分自身のテーブルに変更を適用します。
手順6: -nodetype RWオプションを使用して2番目のパブリケーションを作成します。
ステップ7: 2番目のレプリケーションノードとして機能するホストマシンにログインし、そのホストにインストールされているEPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出します。
手順8: 2番目の複製ノードホストのホストIPアドレスを-hostオプションで指定してjoinnetworkコマンドを実行し、2番目の複製ノードホストマシン上の複製サーバーを複製ネットワークに参加させる。
注:必ずステップ7でログインした2番目の複製ノード・ホストからではなく、リーダー・サービス・ホスト・マシンからjoinnetworkコマンドを実行してください。
手順9: -servernameオプションでレプリケーションサーバー名remoteServiceを指定して、MMRクラスターのもう一方のデータベースを2番目のレプリケーションノードホスト上のレプリケーションサーバーに-servernameます。
データベースに固有のデータベースIDを割り当てるには、 -dbidオプションを使用します。データベース識別子は他のRepCLIコマンドで指定されます。
ステップ10:最初のパブリケーションに参加して、この2番目のMMRデータベースがパブリケーションテーブルから変更されたデータを受信できるようにします。 -pubnameオプションを指定したjoinpubコマンドでは、変更されたデータの受信元のパブリケーションを指定します。
-dbidオプションは、このデータを変更受信するデータベースを識別します。
-servernameオプションは、このデータベースは、手順9に付加したレプリケーション・サーバーを指定します。
デフォルトでは、 joinpubコマンドはデータベースがパブリケーションデータベースからの変更データの読み取りのみを許可します。これらのデータベーステーブルで発生する可能性のある変更は、 -nodetype RWオプションがjoinpubコマンドで指定されていない限り、他のコンシューマにストリーミングされません。
ステップ11: 2番目の出版物に参加する
ステップ12:スナップショットを実行して、パブリケーションデータベーステーブルに存在する行を含むこれらのデータベーステーブルをロードします。
startsnapshotコマンドの -pubnameオプションは、パブリケーション名を指定します。
-dbidオプションは、スナップショットを受信するためのターゲット・データベースを指定します。
手順13: checksnapshotコマンドを実行して(数秒後に)、データがターゲットノードに複製されているかどうかを確認します。
ステップ14: 2番目のパブリケーションでスナップショットを作成します。
ステップ15: checksnapshotコマンドを実行して(数秒後に)データがターゲットノードに複製されているかどうかを確認します。
ステップ16:すべてのパブリケーションテーブルの行の内容がデータベース間で一貫していることを確認したら、ストリーミングを開始します。
startstreamingコマンドの -pubnameオプションは、パブリケーション名を指定します。
ステップ17: 2番目のパブリケーションでストリーミングを開始します。
注意:データベースオブジェクトがプロデューサデータベースとコンシューマデータベースに作成されていることを確認してください( 4.1.1項を参照)。
パブリケーションデータベース node1のdeptテーブルには、最初次の行が含まれています。
他のデータベース node2とnode3は、 deptテーブルに行を含みません。
手順1:すべてのノードでレプリケーションサーバーを起動します。
ホストにログインしてリーダーサービスとして起動し、そのホストにインストールされているEPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出します。
2番目のレプリケーションサーバーを実行するホストにログインし、そのホストにインストールされているEPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出します。
3番目のホストにログインし、そのホストにインストールされているEPRS_HOME /server/binディレクトリからrunServer.shスクリプトを呼び出します。
残りの手順の後続のRepCLIコマンドはすべて 、リーダーサービスとしての使用が確立されるホストにインストールされている EPRS_HOME /client/binディレクトリから実行する必要があります 。 RepCLIコマンドは、他の2台のホストマシンのいずれからも実行しないでください。
手順2:すべてのレプリケーションサーバーをレプリケーションネットワークに参加させる。
EPRS_HOME /client/binディレクトリに、起動することにより、レプリケーションネットワークに参加runRepCLI.shでスクリプトをjoinnetworkコマンド。
最初に実行したjoinnetworkコマンドは、リーダーサービスとしての使用法を確立します。
この複製サーバーを実行しているホストのIPアドレスを-hostオプションで指定してjoinnetworkコマンドを実行し、2番目の複製サーバーをネットワークに参加させます。
この複製サーバーに割り当てる名前を -servernameオプションで-servernameます。
この複製サーバーを実行しているホストのIPアドレスを-hostオプションで指定してjoinnetworkコマンドを実行し、3番目の複製サーバーをネットワークに参加させます。
手順3:すべてのレプリケーションサーバーにデータベースを追加するadddbコマンドの-servernameオプションは、データベースを追加するホスト上のレプリケーションサーバーを指定します。
各データベースに固有のデータベースIDを割り当てるには、 -dbidオプションを使用します。データベース識別子は他のRepCLIコマンドで指定されます。
手順4: -nodetype RWオプションを使用してリーダーサービスでパブリケーションを作成し、他のプロデューサーから変更されたデータを受け入れられるようにするとともに、パブリケーションに参加している他のコンシューマーに独自の変更データをストリーミングする。
ステップ5:データベースがパブリケーションテーブルから変更されたデータを受信できるように、パブリケーションを結合します。 -pubnameオプションを指定したjoinpubコマンドでは、変更されたデータの受信元のパブリケーションを指定します。
-dbidオプションは、このデータを変更受信するデータベースを識別します。
-servernameオプションは、データベースが付加されたレプリケーション・サーバーを指定します。
デフォルトでは、 joinpubコマンドはデータベースがパブリケーションデータベースからの変更データの読み取りのみを許可します。これらのデータベーステーブルで発生する可能性のある変更は、 -nodetype RWオプションがjoinpubコマンドで指定されていない限り、他のコンシューマにストリーミングされません。
手順6:スナップショットを実行して、これらのコンシューマデータベーステーブルにパブリケーションデータベーステーブルに存在する行をロードします。
startsnapshotコマンドの -pubnameオプションは、パブリケーション名を指定します。
-dbidオプションは、スナップショットを受信するためのターゲット・データベースを指定します。
手順7: checksnapshotコマンドを実行して(数秒後に)データがターゲットノードに複製されているかどうかを確認します。
手順8:スナップショットを実行して、これらのコンシューマデータベーステーブルにパブリケーションデータベーステーブルに存在する行をロードします。
データベース node2次のようにしnode2 。
データベース node3次のようにします 。
ステップ9:すべてのパブリケーションテーブルの行の内容がパブリケーションデータベースとサブスクリプションデータベースで一貫していることを確認したら、ストリーミングを開始します。
startstreamingコマンドの -pubnameオプションは、パブリケーション名を指定します。
これらの行は、 node1 、 node2 、およびnode3 一貫して表示され node2 。

比較されている2つのデータベースは、 ソースデータベースとターゲットデータベースと呼ばれ ます 。ソースデータベースはEnterpriseDBタイプにすることができます。ターゲットデータベースもタイプEnterpriseDBである必要があります。
注:データバリデータは、次のデータ型を持つ列を検証しません。これらのタイプの1つ以上の列を含む表は、部分的にのみ検証されます。
•
•
•
REF
•
•
•
•
RAW
•
注: EDB Postgres Replication Serverのデータバリデータを使用する前に、ソースとターゲットのEDB Postgres Replication Serverテーブル間のデータストリーミングが完了していることを確認してください(シングルマスターまたはマルチマスター)。ストリーミングがまだ進行中の場合は、データバリデータがテーブルの違いを表示する可能性があります。
ステップ1: EDB Postgres Replication Serverをインストールすると、Data Validator用のコンポーネントもインストールされます。 EDB Postgres Replication Serverのインストールについては、第3章を参照してください。
注意: EPRS_HOMEはEDB Postgres Replication Serverがインストールされているディレクトリです。 EDB Postgres Replication Serverがどのようにインストールされているかに応じて、これはPostgresホームディレクトリと同じである場合と異なる場合があります。
ステップ3: EPRS_HOME /あるdatavalidator.propertiesファイルを編集します datavalidator/etcディレクトリに移動して、比較するソースデータベースとターゲットデータベースの接続情報を指定します。
以下は、 datavalidator.propertiesファイル内の datavalidator.propertiesです。
インストール後の datavalidator.propertiesファイルの初期内容は次のとおりです 。
#
#
#
#
手順4: Data Validatorのログディレクトリの場所を決定する
Data Validatorは、各実行のログディレクトリにdatavalidator_ yymmdd - hhmiss .log という形式の名前でログファイルを生成します 。
ソース表とターゲット表の間に行の相違がある場合は、 datavalidator_ yymmdd - hhmiss .diff という形式の名前のファイルも生成されます。このファイルには、 diff形式のエラーの出力が含まれます。このファイルを表示するには、 Kompareようなグラフィカルな差分ツールを使用して特定の違いを強調表示します。
Data Validatorは 、 -ldオプションを-ldせずにData Validatorを初めて起動したときに、 EPRS_HOME / datavalidator/binディレクトリ内にlogs という名前のサブディレクトリを作成しようとします。 rootアカウントとしてData Validatorを起動しないと、通常はrootアカウントのみがこの特権を持つEPRS_HOME/ datavalidator/binディレクトリにサブディレクトリlogsを作成しようとするため、実行が失敗する可能性があります。
•
rootアカウントとしてData Validatorを実行します。これは、データValidatorが作成することができますlogs内のサブディレクトリをEPRS_HOME/datavalidator/binディレクトリに移動し、ログインして、差分ファイルを作成するために、 logsサブディレクトリ。
•
Data Validatorを実行する前に、 EPRS_HOME/datavalidator/bin/logsディレクトリ構造を作成して EPRS_HOME/datavalidator/bin/logs 。 Data Validatorの実行に使用するオペレーティングシステムアカウントにディレクトリ内にファイルを作成する権限が付与されるように、ディレクトリEPRS_HOME/datavalidator/bin/logsの権限を変更します。
•
Data Validatorが指定されたディレクトリの場所log_directory_pathログファイルと差分ファイルを作成できるようにするには、 -ld log_directory_pathオプションを使用します。 Data Validatorの実行に使用するオペレーティングシステムアカウントに、 log_directory_path指定された最下位レベルのサブディレクトリが存在しない場合は作成する、またはフルディレクトリパスが既に存在する場合は指定されたディレクトリ内にファイルを作成する権限があることを確認します。
Data Validatorスクリプト runValidation.sh を呼び出す現在の作業ディレクトリは、スクリプトを含むbinサブディレクトリ(つまり、 EPRS_HOME/datavalidator/bin )である必要があります。
例
[ option ] ...
schema_nameは、検証対象のテーブルを含むソースデータベース内のスキーマの名前です。 optionは、このセクションの後半のOptionsサブセクションに記載されていoption 。
7.
--versionと--help の一般的な構文は、次のとおりです。
[-ts schema ]
[-it table_1 [、 table_2 ] ...]
[-et table_1 [、 table_2 ] ...]
[-ld log_directory_path ]
[-ds { true | false }]
[-sdbms database_type ]
[-sh host ]
[-sp port ]
[-sdb dbname ]
[-su user ]
[-spw password ]
[-tdbms database_type ]
[ - host ]
[-tp port ]
[-tdb dbname ]
[-tu user ]
[-tpw password ]
[-bs row_count ]
[-fs row_count ]
わかりやすくするために、上記の構文図では1文字形式のオプションのみを示しています。 オプションのサブセクションのリストの両方のオプションの単一文字と複数文字の形。
データベース接続オプション(前の構文図にリストされている-sdbmsから-tpw )を指定すると、 datavalidator.propertiesファイル内の対応するパラメーターがオーバーライドされます。 datavalidator.propertiesファイルについては、 7.1項を参照してください。
-ss 、 - --source-schema schema
-ts 、 --target-schema -ts --target-schema schema
-it 、-- --include-tables table_1 [, table_2 ] ...
-et 、 --exclude-tables table_1 --exclude-tables table_1 [, table_2 ] ...
比較から除外されるソーススキーマ内のテーブル。省略した場合は、 -itオプションで指定された表のみが比較対象になります。 -itと-et両方のオプションを省略すると、すべてのソーススキーマテーブルが比較のために含まれます。 注:カンマとテーブル名の間に空白があってはいけません。
-srs 、 --skip-rowsonlyin-source { true | false }
とき true指定され、ソースデータベースのテーブルにだけ存在する行の差異のログはスキップされます。デフォルトはfalseです。
-srt 、 --skip-rowsonlyin-target { true | false }
とき true指定され、ターゲット・データベースのテーブルにだけ存在する行の差異のログはスキップされます。デフォルトはfalseです。
-srb 、 --skip-rowsin-both { true | false }
場合 true指定され、同じ主キーを持つソースおよびターゲット・データベース・テーブルの両方に存在する行の差異のロギング、しかしと異なる非主キー値がスキップされます。デフォルトはfalseです。
-ld 、 - --logging-dir log_directory_path
Data Validatorのログファイルと差分ファイルが作成および格納される場所へのディレクトリパス。場合 log_directory_path存在しない場合、データValidatorは、それを作成しようとします。フル・ディレクトリー・パスが指定されていない場合、 log_directory_pathが作成されるか、 runValidation.shスクリプトが呼び出されるEPRS_HOME / datavalidator/ binサブディレクトリーを基準にして配置されると想定されます。 (つまり、logsディレクトリーはEPRS_HOME / datavalidator /bin/ log_directory_pathです。) runValidation.shスクリプトを呼び出すために使用されるオペレーティング・システム・アカウントに、ディレクトリーがまだ存在しない場合はそのディレクトリーを作成する特権、またはファイルを作成する特権があることを確認してください。指定されたディレクトリが既に存在する場合省略した場合、デフォルトはEPRS_HOME /bin/logsディレクトリーです。
-ds 、-- --display-summary { true | false }
データ検証機能の要約のみを表示するには、 trueを指定し true 。これにより、ソースデータベースとターゲットデータベースの接続情報、およびソースデータベーステーブル別の結果の詳細な内訳が省略されます。すべてのデータ検証ツールの結果を表示するには、 falseを指定しfalse 。 Data Validatorが呼び出されたときにコマンドラインコンソールに表示される情報の種類と量は、その実行のログファイルにも格納されている情報と同じです。省略した場合、デフォルトはfalse (つまり、すべてのData Validator結果が表示されます)。
-sdbms 、 --source-dbms -sdbms --source-dbms -sdbms database_type
ソースデータベースサーバのタイプ。サポートされているタイプは、 oracle 、 enterprisedb 、 sqlserver 、 sybase 、およびmysqlです。
-sh 、 - --source-host host
-sp 、 - --source-port port
ソース データベースサーバが接続をリスンしているポート番号 。
-sdb 、 --source-database -sdb --source-database dbname
-su 、 --source-user -su --source-user user
-spw 、 --source-password -spw --source-password password
-tdbms 、 --target-dbms -tdbms --target-dbms -tdbms database_type
-th 、 - --target-host host
-tp 、 - --target-port port
ターゲット データベースサーバが接続をリスンしているポート番号 。
-tdb 、 --target-database -tdb --target-database dbname
-tu 、 - --target-user user
-tpw 、 --target-password -tpw --target-password password
-bs 、 - --batch-size row_count
-bsオプションは、ソースおよびターゲット・データベース・テーブルを横切って比較のために使用されるバッチにグループに行数を指定します。たとえば、テーブルに1000行が含まれている場合、 -bs設定を100にすると、ソースデータベースとターゲットデータベースの比較を完了するために10回のバッチ反復が必要になります。 Data Validatorは、ソーステーブルとターゲットテーブルの両方から100行を読み取り、それらをソースバッファとターゲットバッファに追加します。検証スレッドは、ソースバッファとターゲットバッファから100行を読み取り、比較を実行します。その後、比較のために次の100行を読み取って準備します。データベースから100行を-fsために必要な実際のデータベースラウンドトリップは、フェッチサイズの-fsオプションによって異なります。たとえば、 -fsを100に設定すると1往復だけで済み、 -fsを10に設定すると10回のデータベース往復が必要になります。
-fs 、 --fetch-size row_count
サイズが非常に大きいテーブルに対してデータ検証を実行すると、デフォルトのフェッチサイズ5000行を使用すると、データバリデータがヒープ領域外エラーで終了することがあります。ヒープ領域不足の問題を回避するために、フェッチサイズを小さく指定するには、 -fsオプションを使用します。結果セットの反復は、1回のデータベースラウンドトリップでrow_count値で表されるのと同じ数の行をrow_countます。
例
スキーマ EDBのテーブルと、ソースデータベースのテーブルDEPTおよびEMP内容を以下に示します。
EMP
次に示すのは、Advanced Serverのedbターゲットデータベースのdeptおよびempテーブルの内容とともに、 public スキーマのテーブルの一覧です。
•
ソースの DEPTテーブルには、ターゲットのAdvanced Serverのdeptテーブルには存在しない、 DEPTNO 50余分な行が1つ含まれています。
•
EMPNO値が9001と9002 の EMP表の行には 、ソースAdvanced Server表とターゲットAdvanced Server表の間で異なる列値があります。
•
この例では、 JOBHISTテーブルには、ソースAdvanced ServerテーブルとターゲットAdvanced Serverテーブルの両方に対して同一の行が含まれています。
datavalidator.propertiesファイルの内容は次のように設定されています。
#
#
#
#
次の例では、 EDBスキーマ内のすべてのテーブルを publicスキーマと比較します。
Data Validatorログファイルは 、 -ldオプションで指定された/EPRS_home/datavalidator/bin/logs 、ディレクトリ /EPRS_home/datavalidator/bin/logs / 作成されます。 runValidation.shスクリプトを呼び出すために使用されたオペレーティング・システム・アカウントは、 EPRS_homeディレクトリーへの書き込みrunValidation.shを持っているので、データ/EPRS_home/datavalidator/bin/logsは/EPRS_home/datavalidator/bin/logsサブディレクトリーを作成できます。
7.0
All tables count: 3
Validated tables count: 3
Rows count: 38
Errors count: 3
Tables having only unsupported datatypes count: 0
Tables having primary key limitation count: 0
Total time(s): 0.678
Rows per second: 56
•
DEPTテーブルに1つエラーがあります(行がありません)。
•
EMPテーブルに2つのエラーがあります(2つの行が一致しない列値を持つ)
•
JOBHIST表には、エラーが含まれていません。

制御複製元は、パブリケーションデータベースの登録プロセスの一環として自動的に作成されます。起点は _ngx_DBNAMEであるデータベース名、例えば_ngx_inventory ちなんで命名されます 。パブリケーションデータベースの登録が解除されると、コントロールの複製元は削除されます。
注意:複製起点を作成または削除に失敗した場合には、関連する上の任意の影響はありませんadddbまたはremovedb操作のみ警告メッセージが記録されます。
ステップ1: SQL端末(たとえばpsql)を開き、ユーザートランザクションを開始します。
手順2:他の(クエリ)操作を実行する前に、現在のトランザクションの複製元セッションを設定します。
手順3:ユーザー固有のクエリを実行してアプリケーションを変更します(一括変更を目的としています)。
例
Publicationの一部でもあるテーブル exclude_user_test に複数の行を追加します 。レプリケーションからスキップされる一括変更(5K)をシミュレートします。この表もEPRS7クラスター出版物の一部となります。
手順4:複製元をリセットします。

1。
エラー: 他のコマンドを実行する前に最初に管理者パスワードを設定してください。
原因: レプリケーションサーバにデータベースを追加する前に管理者パスワードが設定されていません。
対処方法: データベースをレプリケーションサーバに追加する前に管理者パスワードを設定します。
2。
エラー : パスワードを暗号化できません。理由無効なユーザー名またはパスワード。
原因:指定されたユーザー名またはパスワードが正しくありません。
回避策:正しいユーザー名またはパスワードを入力してください。
3。
エラー: エラーが発生しました:id database_Idのデータベース を追加できませんでした 。
原因:このエラーは次のような状況で発生する可能性があります。
回避策 :正しい暗号化パスワードを入力します。正しいIPアドレス(データベースホストのIPアドレス)を入力してください。データベースサーバが起動しているか確認してください。 encrypt コマンドを使用 してデータベースのパスワードを 暗号化 し、データベースを追加するときに同じ パスワードを使用 します。
4。
エラー: ID db1のデータベースを追加できませんでした。警告:接続エラー:致命的:ホスト "xxxx" 、ユーザー " xxx"、 データベース " database_Id " のpg_hba.confエントリがありません 、SSLがオフです。
原因:データベースホストのIPアドレスがpg_hba.confファイルに存在しません。
回避策:データベースホストのIPアドレスを pg_hba.confファイル var / lib / edb /に x /としてあります。クラスタの場合、 pg_hba.confファイルは/ var / lib / edb / as x / cluster x ます。
x EDB高度なバージョンで、
クラスター x データベースが稼働しているクラスター(例えば、cluster1またはcluster2など)。
_
5。
エラー: データベースID database_Id がネットワークに登録されていません。
原因:データベースが存在しないか、正しくないデータベースIDが指定されています。
回避策:正しいデータベースIDを指定するか、 create databaseコマンドを使用してデータベースを作成します 。
6。
エラー: サーバー server_name はネットワークに登録されていません。
原因:誤ったサーバー名が指定されたか、サーバーがネットワークに存在しません。
回避策:正しいサーバー名を指定するか、 joinnetworkコマンドを使用してサーバーをネットワークに登録します。
7。
エラー: パブリケーション publication_name が見つかりません。
パブリケーション publication_nameの ターゲットデータベース database_Id への スナップショットが失敗しました 。
原因: 出版物が存在しないか、正しくない出版物名が指定されています。
回避策:正しいパブリケーション名を入力するか、パブリケーションを作成してください。
8。
エラー: パブリケーション publication_nameに DB ID database_Idの サブスクリプションが 見つかりません 。
パブリケーション publication_nameの ターゲットデータベース database_Id への スナップショットが失敗しました 。
原因:指定されたデータベースIDが正しくないか、データベースが存在しません。
回避策:正しいdatabase_Idまたは データベースが存在しない場合は作成します。
9。
Error: スナップショットを実行できません。パブリケーションデータベースID database_Id はコンシューマデータベースID database_Id と同じ です。
原因:パブリケーションデータベースはコンシューマデータベースと同じです。
回避策:パブリケーションデータベースとコンシューマデータベースは異なる必要があります。
10。
エラー: 1つ以上のサブスクリプションがパブリケーション publication_nameに 関連付けられてい ます。出版物を削除する前に、(leavepubコマンドで)購読を解除してください。
原因: removepub パブリケーションがネットワークを離れる前にcommandが実行されます。
回避策:パブリケーションを削除する前に、すべてのサブスクリプションデータベースに対して leavepubコマンドを実行してください 。
Error: データベースはパブリケーションサービスによってすでに登録されているので登録できません。
原因:データベースはレプリケーションクラスタに一度だけ登録できます。
回避策:データベースはすでに登録されています。 createpubコマンドを使用して、必要なテーブルを含むパブリケーションを作成できます。
Error: スレッド "main"で例外が発生しましたjavax.ws.rs.ProcessingException:java.net.ConnectException:接続が拒否されました
原因: EDB Replication Serverに接続できないときに発生します。
回避策: サーバーの正しいホストIPアドレスとポート番号を入力したことを確認してください。サーバーが稼働していることを確認してください。 pg_hba.conf ファイルで、ホスト名が正しいネットワークIPアドレスにマッピングされている ことを確認し ます。これは、Linuxの ifconfig コマンド によって返されるIPアドレスと一致します 。 パブリケーションサーバが pg_hba.conf ファイル 内のデータベースにアクセスできるかどうかを確認してください 。
エラー: 接続が拒否されました。ホスト名とポートが正しいこと、およびポストマスターがTCP / IP接続を受け入れていることを確認してください。
原因: パブリケーションデータベース定義を保存しようとしたときに発生します。パブリケーションサーバーがデータベースサーバーのネットワークの場所に接続できません。
回避策: データベースサーバーの正しいIPアドレスとポートが指定されていることを確認してください。データベースサーバが実行されていて、パブリケーションサーバを実行しているホストからアクセスできることを確認します。
エラー: データベースサーバーに接続できませんでした。理由:FATAL:要求されたスタンバイ接続数がmax_wal_sendersを超えています(現在は n )。
原因: デフォルトでログベースの同期レプリケーション(つまり、WALベースの論理レプリケーション)で構成されているパブリケーションデータベースからスナップショットレプリケーションを試行し、論理レプリケーション用の追加の同時接続が現在の設定 n を超えた 場合 に発生します。 postgresql.conf ファイル のmax_wal_senders設定パラメータ
回避策: パブリケーションデータベースを実行しているデータベース・サーバーの postgresql.conf ファイル 内 max_wal_senders の値を増やし ます。パブリケーションデータベースを含むデータベースサーバーを再起動します。
postgresql.conf ファイル のパス は / var / lib / edb / as x / cluster x です。
x EDB高度なバージョンで、
クラスター x データベースが稼働しているクラスター(例えば、cluster1またはcluster2など)。
エラー: 現在パブリケーションサーバーにパブリケーションが存在しません。サーバー上に少なくとも1つのパブリケーションを作成してから再試行してください。
原因 :指定されたパブリケーションサーバーにパブリケーションがないときにパブリケーションに参加すると、このエラーメッセージがスローされます。
回避策 : createpub コマンドで パブリケーションを作成してからパブリケーションに 参加します。
エラー: データベースを削除できません。理由:パブリケーションデータベース接続に対して1つ以上のパブリケーションが定義されているため、パブリケーションデータベース接続を削除できません。
原因: データベースに既存のパブリケーションがあります。
回避策: パブリケーションデータベースに関連するすべてのパブリケーションが削除されていることを確認してください。 出版物を取り除くために パブリケーションと removepub コマンドを 残すために leavepub コマンドを 使用します 。
エラー: データベース接続を追加できません。ホストの無いpg_hba.confのエントリ 、ユーザー"USER_NAME"、 データベース" データベース名 "、SSLオフ :FATAL "XXX のXXX XXX。。。"
原因: adddb コマンド を使用してデータベース定義を保存しようとしたときに発生します 。
回避策: データベースホストのIPアドレス、ポート番号、データベースユーザー名、パスワード、およびデータベース識別子が正しいことを確認してください。 pg_hba.conf ファイルに、EDB Replication Serverが実行されているIPアドレスから始まる指定のユーザ名でデータベースへのアクセスを許可 するエントリがあることを確認し てください。
エラー: BYTEA、BLOB、RAWなど、バイナリデータ型の列にフィルタを定義することはできません。
原因: パブリケーションテーブルのバイナリデータ型の列にフィルタルールを定義しようとしたときに発生します。そのような列では、フィルター規則は許可されません。
回避策: バイナリデータ型の列にフィルタを追加しないでください。
エラー: 同じ名前/句を持つフィルタがテーブル/ビュー: schemaに 既に存在し ます 。 table_name
原因: パブリケーション表にフィルター規則を追加するとき、同じフィルター名または同じフィルター句(WHERE句)を特定の表に複数回使用することはできません。
回避策: 重複したフィルタ名またはフィルタ句を修正して、テーブルに対して一意になるようにします。
エラー: 1つ以上のパブリケーションテーブルに対するトリガの作成に失敗しました。データベースが有効な状態にあり、ユーザーに必要な特権が付与されていることを確認してください。
原因: ユーザーにトリガー作成権限がないか、データベースサーバーに問題があります。データベースサーバメッセージはエラーの一部として表示されます。
回避策: データベースを追加するときに十分な権限を持つユーザー名を指定してください。
エラー: 発行プロセスで問題が発生しました。理由:接続が拒否されました。ホスト名とポートが正しいこと、およびポストマスターがTCP / IP接続を受け入れていることを確認してください。
解決策: 同期レプリケーションを試行し、コントローラデータベースがパブリケーションサーバーからアクセスできない場合に発生します。
回避策: コントローラデータベースのパブリケーションデータベース定義で正しいIPアドレスとポートが定義されていることを確認します。データベースサーバが実行されていて、パブリケーションサーバを実行しているホストからアクセスできることを確認します。
以下のシナリオでは パブリケーションを作成できない というエラーが発生する可能性があります 。
1。
エラー: パブリケーションを作成できません。パブリケーション publication_name はパブリッシャーサーバーに既に存在します。別の名前を選択してから続行してください。
原因: パブリケーション名はパブリケーションサーバー内で一意である必要があります。
回避策: 別のパブリケーション名を入力してください。
2。
エラー: パブリケーションを作成できません。テーブルスキーマ 。 table_name レプリカIDは replica_identity_settingに 設定されてい ます 。フィルタを定義するには、テーブルレプリカIDをFULLに設定する必要があります。
原因: ログベースのレプリケーションシステムで使用されているパブリケーションテーブルにテーブルフィルタを定義しようとしたときに発生します。
対処方法: ALTER TABLE文を使用してREPLICA IDENTITYをFULLに変更します。
3。
エラー: パブリケーションを作成できません。テーブル table_nameに 主キーが含まれていません。トランザクションレプリケーションは、pk以外のテーブルではサポートされていません。
原因: 同期レプリケーションに使用されるすべての表に主キーが必要です。
回避策: テーブルに主キーを作成します。
エラー: パブリケーションスキーマを作成できません。理由:エラー:データベース db_name に対する権限が拒否されました 。
原因: パブリケーションデータベース定義を作成しようとしたときに、指定されたパブリケーションデータベースユーザーにデータベース db_nameに スキーマを作成する権限がない場合に発生し ます 。
回避策: パブリケーションデータベースのユーザーにデータベースに対するCREATE権限を付与します。
エラー: ターゲットデータベースサーバーにレプリケーションスロットがありません。データベースサーバでmax_replication_slots GUCを設定してください。
原因:同期レプリケーションのログベースの方法でパブリケーションデータベース定義を追加しようとしたときに発生し、 postgresql.confファイルのmax_replication_slots構成パラメータが追加データベースを収容するのに十分な大きさの値に設定されていません。
回避策: max_replication_slotsパラメータの値を大きくしてデータベースサーバーを再起動します。
Error: main "javax.ws.rs.ProcessingException:java.net.ConnectException:接続が拒否されました(接続が拒否されました)
原因: EDB Replication Serverが実行されていません。
pkill -f 'ngen'
5。
/usr/edb/rs-7.0/server/etc/application.propertiesファイル内の以下の値を確認して ください 。
注意: EDB Replication Serverをインストールした後に、次のディレクトリが存在することを確認してください。
/ var / lib / edb / as x / data / log
手順1: レプリケーションクラスタに参加し ている データベースサーバーがすべて実行されて いることを確認し ます。
手順2: EDB Replication Serverが実行されていることを確認します。
ステップ3: マルチマスターレプリケーションシステムのマスター定義ノードの場合、パブリケーションデータベースユーザーがスーパーユーザーであり、 pg_catalog テーブル を変更する権限を持っていることを確認して ください。
ステップ4: ifconfig コマンド によって返されたネットワークIPアドレスが 、application.propertiesのngen.server.hostに 設定されて いるIPアドレスと一致すること を 確認します。
ステップ5: ポートが占有されていないことを確認します 。 ポートが占有されている場合は、 application.properties および server.propertiesの ポートを変更してください 。詳細はセクション 2.1.5 を 参照 してください。
手順6: 十分な空きディスク容量があることを確認します。そうしないと、インストールおよび設定中にEDB Replication Serverで問題が発生する可能性があります。
ステップ7: ファイアウォールを設定した場合は、ファイアウォール設定で、異なるマシンで実行されているEDB Replication Serverを使用したクラスタ設定でEDB Replication Serverが使用するポートにアクセスできることを確認してください。
ステップ8: 地理的に分散したネットワークの場合は、実質的に は/ usr / EDB / RS-X.0 /サーバの/ etc にある server.properties ファイル 内 のパラメータ zookeeper.session.timeouts の値を大きくしてください 。さもなければ、ブローカーと動物園主の間で頻繁な機能停止があるでしょう。デフォルト値は6000です。
手順1: ngx-server.logファイルでエラーを確認します。
ステップ2: コントローラデータベースを実行しているデータベースサーバのログファイルでエラーを確認します。

手順1:既存のパブリケーションパーティションテーブルに新しいパーティションを追加します。
以下は、 listとしてサブパーティション化を使用した rangeパーティション化の構文です 。
例: 以下は、3つのノードクラスタnode1、node2、およびnode3を持つMMRの例です。この場合、範囲による分割は、リストとしてのサブ分割と共に使用されます。
4。
いずれかのノードでパブリケーションを作成してから、他のノードに対してjoinpubコマンドを使用します 。
6。
events_queueテーブルがすべてのノードにわたって存在することを確認します。
7.0
手順2:パーティション表にデータを挿入または更新するパーティションテーブルの変更がターゲットデータベーステーブルにも複製されるかどうかを確認します。
ノード2:
手順3:データベースを追加した後、特定のアプリケーションデータベースの_ngx_rep_cluster コントロールスキーマの 下に次のコントロールオブジェクトが作成されていることを確認します。
手順4:データベースを削除した後、次のコントロールオブジェクトが 指定したアプリケーションデータベースの_ngx_rep_cluster コントロールスキーマ から削除されていることを確認します。