トップ  >  EnterpriseDB: Postgres Plus での Slony-I レプリケーションの設定方法

How to Setup Slony-I Replication with Postgres Plus

Postgres Plus での Slony-I レプリケーションの設定方法

Slony is a master to multiple slaves replication system with cascading and failover capabilities. When used with Postgres Plus, it becomes a powerful tool used for safeguarding data, failover/standby capabilities, optimizing online transaction processing, offloading reporting/BI queries, backup and restore, and migrating systems. This tutorial shows how to efficiently setup a basic master-slave system that can be applied to a variety of applications.

Slony は、1 マスター - 複数スレーブから構成されるレプリケーションシステムであり、カスケード構成やフェイルオーバー機能を備えています。Postgres Plus と共に使うことで、Slony はパワフルなツールとして、データ保持やフェイルオーバー、スタンバイ構成、OLTP の最適化、レポーティングや BI のオフロード、バックアップ・リストア、マイグレーションなどに用いることができます。このチュートリアルではごく基本的なマスター -スレーブ構成の構築方法を解説しますが、さまざまに応用できます。

訳注: 本稿は、"EnterpriseDB: Postgres Plus Tutorials - ALL PLATFORMS - How to Setup Slony-I Replication with Postgres Plus" からの翻訳です。原文と和訳との内容に差異が認められる場合には、原文の内容が優先されます。

Introduction / はじめに

This EnterpriseDB Quick Tutorial helps you get started with the Postgres Plus Standard Server or Postgres Plus Advanced Server database products. It is assumed that you have already downloaded and installed Postgres Plus Standard Server or Postgres Plus Advanced Server on your desktop or laptop computer.

本稿 EnterpriseDB クイックチュートリアルは、Postgres Plus Standard Server (PPSS) および Postgres Plus Advanced Server (PPAS) データベース製品を対象としています。想定読者は、すでに PPSS もしくは PPAS をダウンロードおよびインストールしている方です。

This Quick Tutorial is designed to help you expedite your Technical Evaluation of Postgres Plus Standard Server or Postgres Plus Advanced Server. For more informational assets on conducting your evaluation of Postgres Plus, visit the self-service portion of the EnterpriseDB web site: Postgres Plus Open Source Adoption center.

このチュートリアルは、PPSS や PPAS の技術評価の一助となるべく書かれています。より詳細な情報が必要な場合は、EnterpriseDB 社サイトの Postgres Plus Open Source Adoption center をのぞいてみてください。

Feature Description / Slony の機能・特徴

Slony-I is a pre-bundled enterprise module installed by default with Postgres Plus Standard Server and Postgres Plus Advanced Server. Slony-I or Slony, as it will be referred to hereafter, provides the ability to replicate transactions from one master database to one or more slave databases. Slony is a trigger-based replication solution that asynchronously replicates every transaction that occurs on a source table or sequence object (sequence number generator created by the CREATE SEQUENCE statement) to the subscribed slave databases.

Slony-I はPPSS/PPAS をインストールする際に、いっしょにインストールされます。Slony-I (もしくは "Slony") が提供する機能を用いることで、1 つのマスターデータベースから、1 つ以上のスレーブデータベースへトランザクションをレプリケートすることができます。Slony はトリガーベースのレプリケーションソリューションであり、非同期にレプリケートを行なうことで、ソース側のテーブルやシーケンス (CREATE SEQUENCE 文で作成された通番) で起きたトランザクションを、スレーブ側へ複製することができます。

Slony replication is very versatile and can be used for a number of different applications:

  • Safeguard data with failover/standby capabilities
  • Optimize online transaction processing
  • Offload reporting/BI queries
  • Backup and restore
  • Migrate systems

Slony レプリケーションは多様な機能を持ち、さまざまな用途に用いることができます:

  • フェイルオーバ/スタンバイによる、データの護持
  • OLTP の最適化
  • レポーティング/BI のオフロード
  • バックアップ/リストア
  • システムのマイグレーション

The following is a summary of some of the basic characteristics of Slony:

  • Replication is unidirectional from master to slave databases.
  • Replication is from a single master.
  • Replicated tables in slave databases cannot be modified by other applications.
  • Replication is asynchronous. Transactions are committed independently on the master and each slave in near real time.
  • The types of database objects that can be replicated are tables and sequence objects. Replicated tables must have a primary key or a unique, non-null index that can substitute for a primary key.
  • Replication can be cascaded. Instead of receiving replicated data directly from the master, a slave may receive replicated data from another slave, instead.

以下は、Slony の基本的な特徴です:

  • レプリケーションの方向は、マスターからスレーブへの一方通行です。
  • レプリケーション元が 1 つとなる、シングルマスター方式です。
  • レプリケーション先となるスレーブ側のテーブルは読み出し専用となるため、アプリケーションから変更することはできません。
  • レプリケーションは非同期におこなわれます。マスター/スレーブそれぞれへのトランザクションのコミットは独立して行なわれますが、それらはほぼリアルタイムに行なわれます。
  • レプリケート可能なデータベースオブジェクトのタイプは、テーブルとシーケンスです。レプリケートされるテーブルには、必ず、プライマリキーか、その代替として、NULL でないユニークインデックスが必要となります。
  • レプリケーションはカスケードすることができます。マスターから直接に複製データを受け取らず、他のスレーブから受け取ることができるようになっています。

The following is a brief description of some of the other features of Slony.

以下で簡単に述べるのは、それ以外の Slony の機能についてです。

Controlled Switchover / 明示的なスイッチオーバ

At times, it may be necessary to bring the master node offline for a variety of reasons such as to perform system maintenance or a system upgrade. In that case, you would want one of the slave nodes to temporarily take over the role of the master node while the original master becomes a slave node and could hence, be taken offline.

マスターノードのシステムメンテナンスやアップグレードのために、マスターノードを停める必用が生じる場合があります。その場合、一時的にスレーブノードにマスターノードの役割を肩代わりさせます。その結果、元のマスターノードをスレーブとし、オフラインにすることができます。

This exchange of roles is called controlled switchover. When you perform a controlled switchover, the old master becomes a slave node and the slave node becomes the master node. All other slave nodes are notified of the change and become subscribers of the new master node.

このように役割を交換することを、スイッチオーバと呼びます。スイッチオーバを実行すると、それまでのマスターノードはスレーブノードとなり、かわりにそのスレーブノードがマスターノードとなります。それ以外のスレーブノードにはその経緯が通知され、新しいマスターノードからデータを購読するようになります。

Failover / フェイルオーバ

In the event of a catastrophic failure of the master node, Slony supports the failover of the master node to a slave node. Failover is an irreversible action so it should only be done if the master node is not recoverable. Once the failover process is completed, the old master can be removed from the configuration. The new master takes over replication to the other slaves in the cluster.

マスターノードが危機的な状態に陥った場合、Slony のフェイルオーバ機能によって、マスターノードはスレーブノードに格下げされます。フェイルオーバがおこなわれると、格下げされたノードは再度マスターにすることはできません。そのため、この操作は、マスターの修復が不可能な場合にのみおこなわれます。フェイルオーバのプロセスが終了すると、マスターだったノードはレプリケーションクラスタから取り除かれます。新しくマスターとなったノードは、他のノードへのレプリケーションを開始します。

Tutorial Steps / チュートリアル

Slony Concepts / Slony のコンセプト

The following terms are used to describe the components of a Slony replication system:

  • Cluster. A set of nodes (databases) participating in Slony replication.
  • Node. A distinct database identified by a unique combination of IP address, port number, and database name.
  • Service. A named, high level definition of a node.
  • Path. Connection information between nodes in a cluster.
  • Replication Set. A set of tables, and optionally, sequence objects, whose data is to be replicated.
  • Master. Also referred to as the origin, the node that is the sole source of the table data for all other nodes subscribing to a replication set. There is exactly one master node for a replication set. The master node is the only node in which applications can modify table data belonging to the replication set.
  • Slave. Also referred to as a subscriber, a node that receives replicated data from another node. Applications cannot modify table data on a slave node as the data will become out-of-sync with the master.
  • Provider. A node that provides replicated data to another node. The master node is a provider. A slave node can also act as a provider in a cascaded subscription model.
  • Cascaded Subscription. A replication model where at least one node acts as both a provider and a subscriber. That is, the node receives replicated data from a provider, and in turn, replicates it to one or more subscribers.
  • slon. The Slony daemon that controls replication. For Linux each node has its own slon daemon. For Windows there is one slon service on the host. A Slony replication engine is registered with the slon service for each Windows node.
  • slonik. The utility program that processes commands to create and update a Slony configuration.

以下の用語が、Slony レプリケーションシステムのコンポーネントについて記述する際用いられます:

  • クラスタ: Slony レプリケーションのネットワークに参加しているデータベースノードの集合
  • ノード: 個々のデータベースであり、それぞれの識別には、以下の接続情報を用いる - IP アドレス, ポート番号, データベース名
  • サービス: ノードの設定パラメータに名前をつけたもの
  • パス: クラスタ内のノード間の接続情報
  • レプリケーションセット: レプリケート対象となるテーブルやシーケンスの集合。
  • マスター: オリジンとも呼ばれる。レプリケーションセット内に 1 つだけ存在する、それ以外の全てのノードにテーブルデータを渡すソースとなるノード。テーブルがレプリケーションセットに属する場合、アプリケーションが修正できるのは、マスターノード内のテーブルだけになります。
  • スレーブ: サブスクライバ (購読側) とも呼ばれる。他のノードからレプリケート用のデータを受け取るノード。アプリケーションからスレーブ内のテーブルを修正をしてしまうと、同期ができなくなってしまうため、許可されません。
  • プロバイダ: 他のノードへデータを渡すノード。マスターノードはプロバイダですが、カスケード接続の構成をした場合、スレーブノードもプロバイダとして機能することになります。
  • カスケード購読: レプリケーションモデルの内で、少なくとも 1 つの、プロバイダかつ購読側のノードとして働くノードを持つ構成。つまり、そのノードはプロバイダからデータを受け取り、今度はそのデータを、サブスクライバへ渡すことになります。
  • slon: レプリケーションを制御する Slony のデーモンです。Linux では、各ノードはそれぞれ対応する slon デーモンを持ちます。Windows では、1 つのホスト上に 1 つの slon サービスが起動します。このサービスによって、Windows 上のノードごとに 1 つの Slony レプリケーションエンジンが登録されます。
  • slonik: Slony 設定の作成、修正をおこなうためのコマンド

Additional information about Slony and the Slony project can be found on the Postgres Community Projects page of the EnterpriseDB web site.

より詳細な Slony および Slony プロジェクトに関する情報は、EnterpriseDB 社の web サイトPostgres コミュニティ プロジェクトのページから参照できます。

The remainder of this Quick Tutorial describes how to set up a basic Slony replication cluster (pictured below) with a master node and one slave node. The example is presented using Standard Server on Linux though the same steps apply to Advanced Server as well.

本稿の以降のパートでは、マスター 1 つ、スレーブ 1 つという基本的な Slony レプリケーションクラスタ(下図参照)の構築をおこないます。例は PPSS を用いてのものですが、PPAS でも同様に設定できます。


Differences in procedures for Microsoft Windows® systems are noted throughout the instructions.

Microsoft Windows® システムにおいて手順が異なる場合には、都度記述します。

Note: When a distinction must be made between a Postgres Plus database that participates in Slony replication and the operating environment in which the Postgres Plus database resides, the Postgres Plus database will be referred to as the node and the surrounding operating environment will be referred to as the host.

注意: Slony レプリケーションに参加している Postgres Plus データベースと、データベースが稼動しているオペレーティング環境とを区別する必要がある際には、Postgres Plus データベースを「ノード」と、オペレーティング環境を「ホスト」と呼称します。

The environment is as follows:

Attribute Master Slave
Postgres Plus product Postgres Plus Standard Server 8.4 Postgres Plus Standard Server 8.4
Postgres Plus home directory (Linux) /opt/PostgresPlus/8.4SS /opt/PostgresPlus/8.4SS
Postgres Plus home directory (Windows) C:\Program Files\PostgresPlus\8.4SS C:\Program Files\PostgresPlus\8.4SS
Host IP address 192.168.10.102 192.168.10.103
Port 5432 5432
Database name reptest_node1 reptest_node2
Database username for cluster configuration and replication processing slony slony
Database superuser for all other miscellaneous operations postgres postgres
Replicated tables sample.emp sample.emp

Note: For Advanced Server, substitute enterprisedb for postgres as the database superuser.

例として用いる環境は、以下のようになります:

属性 マスター スレーブ
Postgres Plus 製品 Postgres Plus Standard Server 8.4 Postgres Plus Standard Server 8.4
Postgres Plus ホームディレクトリ (Linux) /opt/PostgresPlus/8.4SS /opt/PostgresPlus/8.4SS
Postgres Plus ホームディレクトリ (Windows) C:\Program Files\PostgresPlus\8.4SS C:\Program Files\PostgresPlus\8.4SS
ホストの IP アドレス 192.168.10.102 192.168.10.103
ポート 5432 5432
データベース名 reptest_node1 reptest_node2
レプリケーションのためのデータベースのユーザの名前 slony slony
それ以外の操作に用いる、データベースのスーパーユーザの名前 postgres postgres
レプリケートされるテーブル sample.emp sample.emp

注意: PPAS では、データベースユーザの名前の "postgres" を "enterprisedb" に読み替えてください。

Preparing the Nodes / ノードの準備

Step 1: Verify that Slony is installed on the master host and on the slave host. The Slony files are located under the bin subdirectory (dbserver/bin for Advanced Server) of the Postgres Plus home directory. You should see files named slon and slonik in this subdirectory.

ステップ 1: Slony が、マスター・スレーブのいずれのノードにもインストールされていることを確認してください。Slony のファイルは、Postgres Plus のホーム下の bin サブディレクトリ内に (PPAS では dbserver/bin に) あります。"slon" と "slonik" という名前のファイルが確認できると思います。

Note: For Advanced Server on Windows, you should see files named edb-replication and slonik. The file edb-replication takes the place of slon as the Slony executable.

注意: PPAS for Windows では、ファイル名は "edb-replication" と "slonik" になります。edb-replication が、slon にあたる機能を果たします。

Note: When installing Standard Server, if you de-selected the Slony component, the slon and slonik programs are not installed. If you did not install Slony, you can use StackBuilder Plus to add Slony to your Standard Server configuration.

注意: PPSS をインストールする際、Slony コンポーネントのチェックを外すと、slon と slonik はインストールされません。もし Slony をインストールしなかった場合でも、StackBuilder Plus を用いることで、後からインストールすることができます。

Step 2: Create a working directory on the master host and on the slave host where you will create and store the scripts to configure and run Slony.

ステップ 2: マスター・スレーブの両ホスト上に、ワーキングディレクトリを作成します。ここに、Slony の設定ファイルと起動スクリプトを置くことになります。

For this example /home/user/testcluster is used as the working directory on both the master and on the slave (C:\testcluster for Windows hosts).

以下の例では、マスター・スレーブ共に /home/user/testcluster をワーキングディレクトリとして用います (Windows ホスト上では C:\testcluster を用います)。

Step 3: Create a superuser with catalog modification privileges on the master node and on the slave node that will be used for Slony configuration and replication. In this example, the superuser is named slony on both the master and on the slave.

ステップ 3:マスター・スレーブの両ノード上に、カタログ修正の権限を持つスーパーユーザを作成します。このユーザは、Slony 設定とレプリケーションのために使用されます。ここでは、"slony" の名前を持つスーパーユーザを使用します。

This can be done in pgAdmin in Standard Server (Postgres Studio in Advanced Server). Click the secondary mouse button on the Login Roles node in the Object Browser. Choose New Login Role and fill out the new Login Role dialog box.

スーパーユーザの追加は、PPSS であれば pgAdmin から行なうことができます (PPAS では Postgres Studio を用いてくだしあ)。オブジェクトブラウザのログインロール上でマウスの右ボタンを押し、「新しいログインロール...」を選択すると現れるダイアログ上で、必要項目を埋めてください。


Click the Role Privileges tab and check the Superuser and Can Modify Catalog Directly check boxes. Click the OK button.

「ロール特権」タブをクリックし、「スーパーユーザー」と「直接カタログを改変することができます」にチェックを入れて「OK」を押してください。


Step 4: Configure and reload the pg_hba.conf file on the master host and on the slave host.

ステップ 4: マスター・スレーブ両ホスト上で、pg_hba.conf の設定リロードを行ないます。

The pg_hba.conf file is the host-based authentication configuration file. In a default Postgres Plus installation, this file is located in the data subdirectory of the Postgres Plus home directory.

pg_hba.conf ファイルは、ホストベースの認証設定ファイルです。このファイルは、デフォルト状態で Postgres Plus をインストールすると、Postgres Plus のホームディレクトリ以下の data サブディレクトリの中に位置します。

You will need to make sure that it is configured properly on each host to allow connections from every other host in the Slony cluster.

各ホスト共に、Slony クラスタ内の他のホストからのコネクションを受け入れるように設定されていることを確認してください。

On the master host in a 2-node replication system, the entry you add to permit connection to the master node from the slave host has the following form:

2 ノードからなるレプリケーションシステムのマスターホストでスレーブからのコネクションを許可するには、設定は以下のようになるでしょう:

host  master_dbname  masterdb_user  slave_ipaddr/32   md5

On the slave host the entry you add to permit connection to the slave node from the master host has the following form:

スレーブのホストでマスターからのアクセスを許可するには、以下のように指定します:

host  slave_dbname   slavedb_user   master_ipaddr/32  md5

For Linux only: Be sure there is an entry for the local node, which is used by the slon daemon to communicate with its own node.

Linux の場合: ローカルノードにアクセスを許可するエントリも存在することを確認してください。これは、slon デーモンが対応するノードに接続するために必要でス。

The resulting pg_hba.conf file on the master host appears as follows:

上記の結果、マスターホスト上の pg_hba.conf ファイルは以下のようになっていると思われます:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all            all                               md5
# IPv4 local connections:
host    reptest_node1  slony       192.168.10.103/32     md5
host    all            all         127.0.0.1/32          md5
# IPv6 local connections:
host    all            all         ::1/128               md5

The resulting pg_hba.conf file on the slave host appears as follows:

スレーブホストでは、以下のようになっているでしょう:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all            all                               md5
# IPv4 local connections:
host    reptest_node2  slony       192.168.10.102/32     md5
host    all            all         127.0.0.1/32          md5
# IPv6 local connections:
host    all            all         ::1/128               md5

Be sure to reload the configuration file on each host after making the file modifications.

pg_hba.conf を修正したら、各ノードでリロードをおこなってください。

Choose Reload Configuration (Expert Configuration, then Restart Database on Advanced Server) from the Postgres Plus application menu. This will put the modified pg_hba.conf file into effect.

Postgres Plus のアプリケーションメニュー (訳注: Windows であればスタートメニュー) から "Reload Configuration" を選択してください (PPAS では、"Expert Configuration" 内の "Restart Database" を選択してください)。この操作をおこなうと、pg_hba.conf への修正が反映されます。

Step 5: Define a pg_service.conf file on the master host and on the slave host.

ステップ 5:マスター・スレーブ双方のホストで、pg_service.conf ファイルを作成する。

The connection service file, pg_service.conf, contains connection information that can be referenced using a service name. Defining a service for each node in the Slony cluster greatly simplifies other scripts since you define this information once instead of in every script.

pg_service.conf (接続サービスファイル) には、サービス名を使った際に参照される接続情報が記述されています。Slony クラスタ内の各ノードごとにサービスを設定することで、各種のスクリプト内に直接接続情報を記述してしまうのに比べて、ずっと管理がシンプルになります。

Note: A template named pg_service.conf.sample that can be copied and modified is located in the share/postgresql subdirectory (dbserver/share in Advanced Server) of the Postgres Plus home directory. For Standard Server on Windows hosts, this file is in the share subdirectory.

注意: "pg_service.conf.sample" という名称のテンプレートが、Postgres Plus のホームディレクトリ下の share/postgresql ディレクトリに (PPAS の場合は dbserver/share 以下に) 存在します。これをコピー・修正して使ってください。PPSS for Windows では、このファイルは share ディレクトリ (訳注: 例: c:\PostgresPlus\8.3R2AS\dbserver\share) の下にあります。

For this example, the service name assigned to the master node is 192.168.10.102-slonik. The service name assigned to the slave node is 192.168.10.103-slonik.

今回の例では、マスターノードのサービス名を "192.168.10.102-slonik"、スレーブノードのサービス名を "192.168.10.103-slonik" とします。

The service entries in the pg_service.conf file on the master host appear as follows:

マスターホストの pg_service.conf に記述されるサービスのエントリは、以下のようになります:

[192.168.10.102-slonik]
dbname=reptest_node1
user=slony
password=password

[192.168.10.103-slonik]
dbname=reptest_node2
host=192.168.10.103
user=slony
password=password

The service entries in the pg_service.conf file on the slave host appear as follows:

スレーブホストの pg_service.conf ファイルでは、以下のようになります:

[192.168.10.102-slonik]
dbname=reptest_node1
host=192.168.10.102
user=slony
password=password

[192.168.10.103-slonik]
dbname=reptest_node2
user=slony
password=password

Before running the slon or slonik programs, set the environment variable PGSYSCONFDIR to the directory containing the pg_service.conf file. (For Windows hosts, add a system environment variable named PGSYSCONFDIR.) This process is described in more detail in the next section.

slon や slonik を実行する前に、環境変数 "PGSYSCONFDIR" に、pg_service.conf ファイルの置かれたディレクトリを指定しておいてください (Windows ホストの場合は、システム環境変数に PGSYSCONFDIR を追加してください)。実際の手順については、次の節で詳説します。

For this example pg_service.conf is stored in directory /home/user/testcluster (C:\testcluster for Windows) on each host.

今回の例では、pg_service.conf は各ホストの /home/user/testcluster ディレクトリに (Windows の場合は C:\testcluster に) 置かれています。

Step 6: Use the pg_dump utility program to create a backup file of the schema and table definitions of the master tables that you wish to replicate. Do not include the table data in your backup file.

Step 6: pg_dump コマンドを用いて、レプリケート対象となるマスターノードのスキーマとテーブル定義のバックアップを取得します。テーブルデータが含まれないように注意 (訳注: -s オプション) してください。

The pg_dump command to use has the following form:

pg_dump コマンドを、以下のように実行します:

pg_dump -U user -n schema -s -f backup_file database_name

Program pg_dump is located in the bin subdirectory (dbserver/bin for Advanced Server) of the Postgres Plus home directory.

pg_dump プログラムは、Postgres Plus のホームディレクトリ下の bin ディレクトリに (PPAS の場合は dbserver/bin ディレクトリに) あります。

The following example creates a backup file named sample.backup containing the sample schema with the dept and emp tables from database reptest_node1:

下記の例では、"sample.backup" という名前のバックアップファイルを作成します。ファイルには、"reptest_node1" データベースの "sample" スキーマ内の "dept", "emp" の各テーブルが含まれるとします。

cd /opt/PostgresPlus/8.4SS/bin
./pg_dump -U postgres -n sample -s -f /home/user/sample.backup 
    reptest_node1

Step 7: Copy the backup file to the slave host. On the slave host, restore the backup file to the database to which you want to replicate the master tables. Use the psql utility program to restore the backup file:

ステップ 7: バックアップファイルをスレーブホストにコピーします。スレーブホストの側では、psql コマンドを使用して、レプリケート先となるデータベースに対してバックアップファイルを実行します:

psql -U user -f backup_file database_name

psql プログラムは、Postgres Plus のホームディレクトリ下の bin ディレクトリに (PPAS の場合は dbserver/bin ディレクトリに) あります。

Note: For Advanced Server on Windows, use program edb-psql.

注意: PPAS for Windows では、edb-psql コマンドを利用してください (訳注: PPAS for Linux でも edb-psql を用いてください)

In the following example, the createdb program is used to create the reptest_node2 database, and then the psql program is used to restore the sample schema from the sample.backup file into the reptest_node2 database.

以下の例では、createdb コマンドを用いて reptest_node2 データベースを作成しています。psql コマンドで sample.backup ファイルから "sample" スキーマを、reptest_node2 データベースに対してリストアします。

cd /opt/PostgresPlus/8.4SS/bin
./createdb -U postgres reptest_node2
./psql -U postgres -f /home/user/sample.backup reptest_node2

There are now table definitions, but no data, for sample.dept and sample.emp in the reptest_node2 database:

これでテーブル定義はできましたが、reptest_node2 データベースの "sample.dept" と "sample.emp" にはデータが入っていません:

./psql -U postgres reptest_node2
psql (8.4.1)
Type "help" for help.

reptest_node2=# SELECT * FROM sample.dept;
 deptno | dname | loc 
--------+-------+-----
(0 rows)

reptest_node2=# SELECT * FROM sample.emp;
 empno | ename | job | mgr | hiredate | sal | comm | deptno 
-------+-------+-----+-----+----------+-----+------+--------
(0 rows)

Configuring the Cluster and Starting Replication / クラスタの設定とレプリケーションの開始

Configuration of the Slony cluster is done by supplying commands to the slonik utility program. Separate script files are constructed for each step of the configuration process. This will help ensure that you successfully complete each step of the process before proceeding to the next one and will make troubleshooting much easier.

Slony クラスタの設定は、slonik コマンドに対して一連の設定コマンド (スクリプト) を与えることでおこないます。以下の各プロセスで、随時スクリプトを作成してまいります。こうすることで、一つのステップを確実に完了してから次のステップに進むことが出来ますし、問題の切り分けが容易になると思われます。

Step 1: Log on to the master host using any valid account on the computer. (For Windows, use a computer administrator account.)

ステップ 1: マスターホストにログインしてください。ユーザは何でも構いません。 (Windows の場合は、Administrator アカウントを用いてください)

For Linux only: Set the environment variable PGSYSCONFDIR to the directory containing the pg_service.conf file. Change to your working directory where you will create and run the slonik scripts.

Linux の場合: PGSYSCONFDIR に、pg_service.conf ファイルを含むパスを設定しておいてください。また、slonik スクリプトの作成・実行を行なおうとするディレクトリに CD してください。

export PGSYSCONFDIR=/home/user/testcluster
cd /home/user/testcluster

For Windows only: Add the environment variable PGSYSCONFDIR to the system. In the Control Panel, open System, select the Advanced tab, and click the Environment Variables button. Add PGSYSCONFDIR with value C:\testcluster to System Variables.

Windows の場合: 環境変数 PGSYSCONFDIR をシステムに設定しておいてください。コントロールパネルで「システム」を開き、「詳細設定」タブの「環境変数」ボタンを押します。「システム環境変数」へ、PGSYSCONFDIR に値 C:\testcluster でエントリを追加します。

For Windows XP only: Restart your computer at this point. (The Slony service that you will register in Step 8 will not have access to the new PGSYSCONFDIR system environment variable unless you restart the computer.)

Windows XP の場合: ここでコンピュータの再起動をしてください。(再起動しないと、ステップ 8 で起動した Slony サービスが、新しい PGSYSCONFDIR システム環境変数にアクセスできないからです)

Open a Command Prompt window.

コマンドプロンプトを開いてください。

For Windows Vista only: If you are using User Account Control, run the Command Prompt window as an administrator. (Click the secondary mouse button on Command Prompt, and then in the Command Prompt submenu, click the primary mouse button on Run as Administrator.)

Windows Vista の場合: ユーザーアカウント制御 (UAC) を利用している場合には、コマンドプロンプトを管理者権限で起動してください。(「コマンド プロンプト」上でマウスの右ボタンをクリックしてから、「管理者として実行」上で左ボタンを押します)

In the Command Prompt window, verify PGSYSCONFDIR is set to the working directory. Change to your working directory where you will create and run the slonik scripts.

コマンドプロンプトのウィンドウで、PGSYSCONFDIR が作業ディレクトリを指しているかどうかを確認してください。slonik スクリプトの作成・起動をおこなう作業ディレクトリに CD しておいてください。


Step 2: Repeat Step 1 on the slave host. You should now have two terminal sessions running - one on the master host and one on the slave host.

スッテプ 2: ステップ 1 の手順を、スレーブホスト側でも繰り返してください。現在画面上には、マスターホストとスレーブホストのそれぞれに対応する 2 つのターミナルセッションが開いていると思います。

Step 3: Continue with the following steps on the master host. Create a preamble file to provide connection information for each node in the cluster. This connection information is used by the slonik program to set up and control administration of the cluster.

ステップ 3: 以下は、マスターホスト上での手順です。スクリプトのプリアンブルを含むファイルを作成します。プリアンブルには、クラスタ内の各ノードへの接続情報が含まれます。この接続情報は、slonik がクラスタの設定や管理をするために用いられます。

The following is preamble file preamble.sk:

下記は、プリアンブルファイル "preamble.sk" の例です:

# file preamble.sk

cluster name = testcluster;
node 1 admin conninfo = 'service=192.168.10.102-slonik';
node 2 admin conninfo = 'service=192.168.10.103-slonik';

The name assigned to the cluster is testcluster. The CONNINFO parameters reference the service names defined in the pg_service.conf file.

クラスタの名称は "testcluster" としました。"CONNINFO" パラメータに指定するのは、pg_service.conf ファイルで設定したサービス名です。

Use the INCLUDE statement in other slonik scripts to reference the preamble file:

他の slonik スクリプトからは、"INCLUDE" 文を使って、このプリアンブルを参照します:

include <preamble.sk>;


Step 4: Create a script to define the Slony replication cluster. The replication cluster is defined using the INIT CLUSTER command.

ステップ 4: レプリケーションのクラスタを生成するスクリプトを作成します。"INIT CLUSTER" コマンドを使用します。

The following is script initcluster.sk:

下記は、initcluster.sk スクリプトです:

#!/opt/PostgresPlus/8.4SS/bin/slonik

#file initcluster.sk

include <preamble.sk>;

init cluster (id=1, comment='hostname=192.168.10.102');


In the INIT CLUSTER command, the master node is assigned a numeric identifier (typically, 1) using the ID parameter.

"INIT CLUSTER" コマンドの "ID" パラメータで、マスターノードに識別番号 (普通は 1 から) を振ります。

Run the script you just created.

上記スクリプトを実行します。

For Linux only: Be sure you add execute permission to this script (and all other scripts created in subsequent steps) before running it.

Linux の場合: 実行する前に、スクリプトに実行権限が付与されていることを確認してください (これ以降のステップで作成する全てのスクリプトについても同様です)。

$ chmod ugo+x initcluster.sk
$ ./initcluster.sk
./initcluster.sk:7: Possible unsupported PostgreSQL 
    version (80401) 8.4, defaulting to 8.3 support

Note: The warning message displayed in the output can be ignored.

注意: 出力される警告メッセージは無視しても構いません。

For Windows only: Create a batch file to run script initcluster.sk and all subsequent slonik scripts created in these instructions. The following is Windows batch file runslonik.bat:

Windows の場合: initcluster.sk (及び、以下のステップで作成する各 slonik スクリプト) を実行するためのバッチファイルを作成してください。以下は、Windows 用のバッチファイル "runslonik.bat" です:

@ECHO OFF
REM file runslonik.bat
REM
REM Batch file to run slonik

C:\"Program Files"\PostgresPlus\8.4SS\bin\slonik < %1

Run the batch file with the initcluster.sk script as a parameter as follows:

以下のように、引数に initcluster.sk を指定してバッチファイルを実行します:

C:\testcluster>runslonik initcluster.sk

:7: Possible unsupported PostgreSQL version (80401) 8.4, 
        defaulting to 8.3 support

Step 5: Create a script to add the slave node to the replication cluster. The node is added using the STORE NODE command.

ステップ 5: スレーブノードをレプリケーションクラスタに追加するスクリプトを作成します。"STORE NODE" コマンドを用います。

The following is script addnode.sk:

"addnode.sk" スクリプトです:

#!/opt/PostgresPlus/8.4SS/bin/slonik

#file addnode.sk

include <preamble.sk>;

store node (id=2, comment='hostname=192.168.10.103', event node=1);


The slave node is assigned an identifier of 2 using the ID parameter.

スレーブノードには、"ID" パラメータで識別番号 "2" を付与します。

Note: Specification of the EVENT NODE parameter is required in the STORE NODE command for Slony version 2.x. Prior 1.x versions of Slony allowed omission of this parameter for a default value.

注意: Slony のバージョン 2.x では、"STORE NODE" コマンドで "EVENT NODE" パラメータの指定が必須になります。バージョン 1.x では省略が可能です。

Run the script you just created.

スクリプトを実行します。

$ ./addnode.sk
./addnode.sk:7: Possible unsupported PostgreSQL version (80401) 8.4, 
        defaulting to 8.3 support

Note: The warning message displayed in the output can be ignored.

注意: 出力される警告は、無視をして構いません。

Step 6: Create a script to add communication paths to the replication cluster. Communication paths are added using the STORE PATH command. The communication paths are used by Slony daemons to connect to remote nodes in the cluster.

ステップ 6: 交信パスをレプリケーションクラスタに追加するスクリプトを作成します。交信パスは、Slony デーモン (訳注: "slon" デーモン) がクラスタ内のリモートノードに接続する際に使用します。

The following is script addpaths.sk:

"addpaths.sk" スクリプトです:

#!/opt/PostgresPlus/8.4SS/bin/slonik

#file addpaths.sk

include <preamble.sk>;

store path (server=1, client=2, 
        conninfo='service=192.168.10.102-slonik');
store path (server=2, client=1, 
        conninfo='service=192.168.10.103-slonik');

There should be a STORE PATH command from each node to every other node. (Connections are not established unless they are actually used.)

ここでは "STORE PATH" コマンドで、各ノードから他の全ノードへのパスを指定します (コネクションは、実際に通信がおこなわれるまでは張られません)。

For this 2-node example, the first STORE PATH command provides the communication path for the Slony daemon running on the slave host to connect to the master node. The second STORE PATH command provides the communication path for the Slony daemon running on the master host to connect to the slave node.

今回は 2 ノードの例なので、最初の "STORE PATH" コマンドの行はスレーブホスト上で稼動する Slony デーモンがマスターノードにアクセスするためのパス情報です。そして 2 行目の "STORE PATH" は、マスターホスト上で稼動し、スレーブノードに接続をする Slony デーモンの交信パスに対応します。

Run the script you just created.

スクリプトを実行してください。

$ ./addpaths.sk

Step 7: Create a Slony daemon configuration file on the master host and on the slave host for the parameters needed to start the Slony daemon for each respective node. The parameters define how the daemon connects to the named cluster.

ステップ 7: Slony デーモンの設定ファイルを、マスター・スレーブ双方に作成します。この設定ファイルでは、Slony デーモンを各ノードで起動する際に必用となるパラメータを設定します。パラメータでは、デーモンが接続するクラスタの名称を指定します。

The following is configuration file 192.168.10.102.slon on the master host:

以下は、マスターホスト上の設定ファイル "192.168.10.102.slon" です:

#file 192.168.10.102.slon

cluster_name='testcluster'
conn_info='service=192.168.10.102-slonik'

The following is configuration file 192.168.10.103.slon on the slave host:

以下は、スレーブホスト上の設定ファイル "192.168.10.103.slon" です:

#file 192.168.10.103.slon

cluster_name='testcluster'
conn_info='service=192.168.10.103-slonik'

Step 8: Start Slony on the master host.

ステップ 8: マスターホスト上で Slony を起動します。

For Linux only: Start the Slony daemon on the master host. The Slony daemon executable named slon, is found in the bin subdirectory (dbserver/bin for Advanced Server) of the Postgres Plus home directory.

Linux の場合: マスターホスト上で Slony デーモンを起動します。Slony デーモン (実行ファイル名 "slon") は、Postgres Plus ホームディレクトリ下の "bin" ディレクトリ (PPAS の場合は dbserver/bin ディレクトリ) の下にあります。

The command to start the Slony daemon using the configuration file created in the prior step is the following:

前ステップで作成した設定ファイルを使用して Slony デーモンを起動するには、以下のようにします:

slon -f configfile > logfile 2>&1 &

On the master host, start the Slony daemon as follows:

マスターホスト上で、Slony デーモンを以下のようにして起動します:

$ /opt/PostgresPlus/8.4SS/bin/slon -f 192.168.10.102.slon 
        > slon.log 2>&1 &
[1] 5877

You can verify that the Slony daemon is running by using the following command:

Slony デーモンが起動していることは、下記のようにして確認することができます:

ps aux | grep slon

This is shown by the following:

結果は、以下のようになります:

$ ps aux | grep slon
user      5877  0.0  0.1   4756  1204 pts/2    S    13:03   
    0:00 /opt/PostgresPlus/8.4SS/bin/slon -f 192.168.10.102.slon
user      5879  0.0  0.1  54064  1116 pts/2    Sl   13:03   
    0:00 /opt/PostgresPlus/8.4SS/bin/slon -f 192.168.10.102.slon
postgres  5883  0.0  0.4  48752  4964 ?        Ss   13:03   
    0:00 postgres: slony reptest_node1 [local] idle
postgres  5885  0.0  0.5  49088  5688 ?        Ss   13:03   
    0:00 postgres: slony reptest_node1 [local] idle
postgres  5888  0.0  0.3  48216  3152 ?        Ss   13:03   
    0:00 postgres: slony reptest_node1 [local] idle
postgres  5890  0.0  0.5  48784  5204 ?        Ss   13:03   
    0:00 postgres: slony reptest_node1 [local] idle
user      5896  0.0  0.0   3064   732 pts/2    S+   13:04   
    0:00 grep slon

Check the log file, slon.log, to verify that there are no error messages.

ログファイル slon.log で、エラーメッセージが出力されていないことを確認してください。

For Windows only: Register the Slony service, and then register a Slony replication engine with the Slony service.

Windows の場合: Slony サービスを登録してから、Slony サービス経由で Slony レプリケーションエンジンを登録してください。

A Slony service is registered with the following command:

Slony サービスは以下のようにして登録できます:

slon -regservice service_name

以下のようにして、Slony サービスに Slony レプリケーションエンジンを登録します:

slon -addengine service_name configfile

Note: For Advanced Server, use program edb-replication in place of slon.

注意: PPAS では、"slon" コマンドのかわりに "edb-replication" コマンドを使用してください。

The following shows the creation of a service named Slony along with a replication engine:

下記の例では "Slony" の名前でサービスを作成し、レプリケーションエンジンを登録しています:

C:\testcluster>set PATH=C:\Program Files\PostgresPlus\8.4SS\bin;%PATH%

C:\testcluster>slon -regservice Slony
Service registered.
Before you can run Slony, you must also register an engine!

WARNING! Service is registered to run as Local System. You are
encouraged to change this to a low privilege account to increase
system security.

C:\testcluster>slon -addengine Slony 
        C:\testcluster\192.168.10.102.slon
Engine added.
NOTE! You need to restart the Slony service before this takes effect.

Start the Slony service by opening Control Panel, Administrative Tools, and then Services. Select the Slony service and click the Start link.

「コントロールパネル」→「管理ツール」→「サービス」から Slony サービスを起動します。"Slony" サービスを選択してから「サービスの開始」リンクをクリックしてください。

Use the Windows Event Viewer for applications to check for any Slony errors. In the same Administrative Tools window of the Control Panel that you used to start the Slony service, open Event Viewer, (then open Windows Logs if you are using Windows Vista), then open Application.

Windows の イベントビューアで、Slony のエラーが出ているかどうかを確認することができます。コントロールパネルウィンドウの「管理ツール」から「イベントビューア」を開きます (Windows Vista では「Windows ログ」を開いてください)。

Step 9: Start Slony on the slave host.

ステップ 9: スレーブホストでの Slony デーモンの起動。

For Linux only: On the slave host repeat Step 8 using the Slony daemon configuration file you created in Step 7 for the slave node:

Linux の場合: スレーブホスト上で、ステップ 8 を繰り返します。その際、ステップ 7 で作成した、スレーブノード用の設定ファイルを指定します。

$ /opt/PostgresPlus/8.4SS/bin/slon -f 
        192.168.10.103.slon > slon.log 2>&1 &
[1] 9522

For Windows only: On the slave host repeat Step 8 using the Slony daemon configuration file you created in Step 7 for the slave node.

Windows の場合: スレーブホスト上で、ステップ 8 を繰り返します。その際、ステップ 7 で作成した、スレーブノード用の設定ファイルを指定します。

C:\testcluster>set PATH=C:\Program Files\PostgresPlus\8.4SS\bin;%PATH%

C:\testcluster>slon -regservice Slony
Service registered.
Before you can run Slony, you must also register an engine!

WARNING! Service is registered to run as Local System. You are
encouraged to change this to a low privilege account to increase
system security.

C:\testcluster>slon -addengine Slony 
        C:\testcluster\192.168.10.103.slon
Engine added.

NOTE!You need to restart the Slony service before this takes effect.

Step 10: Continue with this step on the master host. Create a script to add a replication set to the replication cluster. A replication set is added using the CREATE SET command.

ステップ 10: このステップは、マスターホストで実行します。レプリケーションセットをレプリケーションクラスタに登録するスクリプトを作成します。レプリケーションセットは "CREATE SET" コマンドで追加します。

A replication set contains the database objects that you wish to replicate from the master node to the slave node.

レプリケーションセットには、マスターノードからスレーブノードへとレプリケートする対象となるデータベースオブジェクトを含めます。

The following is script buildset.sk:

以下は、"buildset.sk" スクリプトです:

#!/opt/PostgresPlus/8.4SS/bin/slonik

#file buildset.sk

include <preamble.sk>;

create set (id=1, origin=1, comment='source tables for repset #1');

This replication set is assigned an identifier of 1 using the ID parameter.

このレプリケーションセットには、"ID" パラメータで識別番号 1 を付与します。

Run the script you just created.

このスクリプトを実行します。

$ ./buildset.sk

Step 11: Create a script to add tables to the replication set. Tables are added using the SET ADD TABLE command.

ステップ 11: レプリケーションセットにテーブルを追加するスクリプトを作成します。テーブルの追加には、"SET ADD TABLE" コマンドを使用します。

Slony requires a primary key or a unique, non-null index on each replicated table otherwise the SET ADD TABLE command will fail, and an error message will be displayed.

Slony では、レプリケート対象のテーブルは、主キー、もしくは NULL ではないユニークインデックスを持っている必要があります。さもないと、"SET ADD TABLE" は失敗し、エラーメッセージが表示されます。

For each table provide values for the following parameters:

  • SET ID. Replication set identifier
  • ORIGIN. Origin node identifier
  • ID. Identifier to be assigned to the table that must be unique amongst all table identifiers in the cluster
  • FULLY QUALIFIED NAME. Fully qualified table name (schema_name.table_name)
  • COMMENT. Description of the table
  • KEY. Primary key name or unique, non-null index name (not qualified by the schema name)

各テーブルごとに、下記のパラメータに対応する値を指定してください:

  • SET ID: レプリケーションセットの識別番号
  • ORIGIN: オリジンノードの識別番号
  • ID: テーブルの識別番号 (当該クラスタ内でユニークである必用があります)
  • FULLY QUALIFIED NAME: 完全修飾テーブル名 ("スキーマ名.テーブル名" の形)
  • COMMENT: コメント
  • KEY: 主キー名、もしくは NULL でないユニークインデックス名 (スキーマ名修飾は不要)

Note: Tables that are dependent upon each other by foreign key constraints must be added to the same replication set.

注意: 相互に外部キー制約で依存しあうテーブルは、同一のレプリケーションセットに含まれなければいけません。

The following is script addtables.sk:

以下は、"addtables.sk" スクリプトです:

#!/opt/PostgresPlus/8.4SS/bin/slonik

#file addtables.sk

include <preamble.sk>;

set add table(set id=1, origin=1, id=1, 
    fully qualified name='sample.dept',
    comment='source table #1', key='dept_pk');
set add table(set id=1, origin=1, id=2, 
    fully qualified name='sample.emp',
    comment='source table #2', key='emp_pk');

Run the script you just created.

実行してください。

$ ./addtables.sk

Step 12: Create a script to subscribe the slave node to the replication set. Nodes are subscribed to a replication set using the SUBSCRIBE SET command.

ステップ 12: レプリケーションセットを購読するようスレーブノードに指示するスクリプトを作成します。ノードがレプリケーションセットを購読するようにするには、"SUBSCRIBE SET" コマンドを用います。

For each slave joining the replication set, provide the following parameters:

  • ID. Replication set identifier
  • PROVIDER. Node identifier of the data provider for the slave
  • RECEIVER. Node identifier of the slave subscribing to the set
  • FORWARD. Set to YES to allow this slave to become a provider at some point in the future

レプリケーションセットに追加する各スレーブノードごとに、下記のパラメータを指定してください:

  • ID: レプリケーションセットの識別番号
  • PROVIDER: スレーブに対してデータを渡すデータプロバイダノードの識別番号
  • RECEIVER: セットを購読するスレーブノード識別番号
  • FORWARD: このスレーブノードが将来プロバイダになる可能性があるならば "YES" を指定

The following is script subscribeset.sk:

スクリプト "subscribeset.sk":

#!/opt/PostgresPlus/8.4SS/bin/slonik

#file subscribeset.sk for adding subscribers to replication set

include <preamble.sk>;

subscribe set (id=1, provider=1, receiver=2, forward=yes);
sync(id=1);
wait for event (origin=1, confirmed=2, wait on=1);

Run the script you just created.

スクリプトを実行してください。

$ ./subscribeset.sk

The Slony daemons synchronize with each other and initialization of the slave database begins. The tables in the slave are truncated and the data in the master node is copied to the slave node. If data fails to replicate to the slave node, look for error messages in the slon.log file (for Windows, use Event Viewer for applications) on the master host and on the slave host.

以上で、Slony デーモンどうしが同期をおこない、スレーブデータベースの初期化が始まります。スレーブ内のテーブルは truncate され、マスターからスレーブへとデータが送られます。もしもスレーブへのデータのレプリケートが失敗するようならば、slon.log にエラーが出ていないか確認してください (Windows では、マスターホストやスレーブホストのイベントビューアを利用してください)。

You now have a complete Slony replication environment.

以上で、Slony レプリケーションの環境構築は終了です。

Conclusion / 結論

In this Quick Tutorial you learned how to set up Slony-I replication on a Postgres Plus database.

以上のクイックチュートリアルで、Postgres Plus データベースでの Slony-I レプリケーションのセットアップ方法がお分かりいただけたかと思います。

EnterpriseDB has the expertise and services to assist you in setting up a Slony cluster, fully testing it, and providing management scripts. The Postgres Plus Replication Setup Service is described on the Packaged Services page of the EnterpriseDB web site.

EnterpriseDB では、Slony クラスタの設定、テスト、管理スクリプト作成などにまつわる各種のノウハウやサービスを提供できます。パッケージドサービスとして提供されている "Postgres Plus Replication Setup Service" については、EnterpriseDB 社の下記のサイトを参照してください。

You should now be able to proceed confidently with a Technical Evaluation of Postgres Plus.

どうぞ Postgres Plus の Technical Evaluation へと進んでください。

The following resources should help you move on with this step:

ついては、下記の文書が役に立つと思われます:

プリンタ用画面
友達に伝える
ログイン
ユーザー名:

パスワード:



パスワード要求 | 新規登録

検索
メインメニュー
 


Copyright(C) SIOS Technology, Inc. All Rights Reserved