Skytoolsの概要:
SkytoolsはPythonベースのアプリケーションであり、PgQ、Londiste、Walmgrの3つのバンドルが付属しており、Python-Postgresドライバー「psycopg2」も必要です。
- PGQ:その上にphythonフレームワークを備えたpl/pgsqlで構築されたキューメカニズム。
- Londiste:イベントトランスポーターとしてPgQを使用してPhytonで作成されたレプリケーションツール。
- Walmgr:WALアーカイブ設定を作成します。
Skytools(PgQ / Londiste / WalMgr)に関する最良のチュートリアルは、このリンクhttp://skytools.projects.postgresql.org/doc/にあるため、ここではlondisteレプリケーションデーモンプロセスなどについてはあまり説明しません。
基本的に、私のデモには、PostgreSQL 9.0を使用してLondisteレプリケーションを進める方法と、インストール手順が含まれています。私が言うには、SkytoolsのドキュメントとPostgreSQL Wiki(http://wiki.postgresql.org/wiki/Londiste_Tutorial)は、Londisteレプリケーションで遊ぶためのものです。
ダウンロードリンクの前提条件:
- PostgreSQL – PostgreSQL 9.0 http://www.enterprisedb.com/products-services-training/pgdownload
- skytools – skytools-2.1.12.tar.gz http://pgfoundry.org/frs/download.php/2872/skytools-2.1.12.tar.gz
- psycopg2 – psycopg2-2.4.2.tar.gz http://initd.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-2.4.2.tar.gz
私のデモには以下が含まれます:-
OS : RHEL 6 32 bit
DB version : PostgreSQL 9.0
Two Clusters & Database: londiste_provider on 5432,Londiste_subscriber on 5433
Table : One Table (ltest)
Location of .ini file : /opt/skytools-2.1.12/scripts
Location of Skytools : /opt/skytools-2.1.12
Location of PG 9.0 : /opt/PostgreSQL/9.0/
1つのテーブルを使用した単純なデモとして、ローカルボックスに2つのクラスターを備えたRHEL632ビット/PostgreSQL9.0を試してみました。実際の要件に従って微調整する必要があります。
注: セットアップを進める前に、すべてのソースインストールはrootユーザーである必要があり、インストール後、これらのディレクトリはPostgresユーザー権限を所有している必要があることを思い出してください。
ステップ1。
PostgreSQL 9.0をインストールし、INITDBコマンドを使用して2つのクラスターを作成し、それぞれ5432と5433で実行されることを確認します。 (INITDBコマンドを使用するとpg_logディレクトリがData_directoryの下に作成されないという古い事実を覚えておいてください。明示的に作成する必要があります。)
ステップ2。
上記のリンクからダウンロードして、skytoolsをインストールします。すべてのソースを1つの共通の標準的な場所に保持することをお勧めします。 「/opt/」の下に「/usr/ local/src」とskytoolsを使用しました。次に、PostgreSQL9.0の「pg_config」を使用してskytoolsを構成します。
# tar -xvf skytools-2.1.12.tar.gz
# cd /usr/local/src/skytools-2.1.12
# ./configure --prefix=/opt/skytools-2.1.12 --with-pgconfig=/opt/PostgreSQL/9.0/bin/pg_config
# make
# make install
注: インストール後、PostgreSQLのcontribの場所の下に2つの重要なcontribモジュール(pgqとlondiste)が表示されます。基本的に、これら2つの貢献により、londisteレプリケーションの機能が提供されます。
# cd /opt/PostgreSQL/9.0/share/postgresql/contrib
# ll lond*
-rw-r--r--. 1 root root 29771 Jan 11 13:24 londiste.sql
-rw-r--r--. 1 root root 27511 Jan 11 13:24 londiste.upgrade.sql
# ll pgq*
-rw-r--r--. 1 root root 4613 Jan 11 13:24 pgq_ext.sql
-rw-r--r--. 1 root root 1170 Jan 11 13:24 pgq_lowlevel.sql
-rw-r--r--. 1 root root 69798 Jan 11 13:24 pgq.sql
-rw-r--r--. 1 root root 3940 Jan 11 13:24 pgq_triggers.sql
-rw-r--r--. 1 root root 54182 Jan 11 13:24 pgq.upgrade.sql
ステップ3。
skytoolsに必要なphyton-postgresドライバーであるpsycopg2をインストールします。これらのドライバーにはPythonが付属していない場合があるため、インストール手順は次のとおりです。
# tar -xvf psycopg2-2.4.2.tar.gz
# cd psycopg2-2.4.2
# python setup.py install --prefix=/usr/local
# python setup.py build_ext --pg-config /opt/PostgreSQL/9.0/bin/pg_config
ステップ4。
Postgresの所有権をskytoolsとpostgresのインストール場所に付与します。これにより、すべてのファイル/実行可能ファイルにPostgresユーザー権限が付与されます。
# chown -R postgres:postgres /opt/skytools-2.1.12
# chown -R postgres:postgres /opt/PostgreSQL/9.0/
ステップ5。
LD_LIBRARY_PATHとPYTHONPATHを設定し、新しく作成された2つのクラスターを開始します。永続的な解決策として、postgresユーザーの.bash_profileに配置できます。
$export PYTHONPATH=/opt/skytools-2.1.12/lib/python2.6/site-packages/
$export LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
or
$ vi .bash_profile
export PYTHONPATH=/opt/skytools-2.1.12/lib/python2.6/site-packages/
export LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
:wq
$ . .bash_profile (execute to take effect of new settings)
Now Start the two cluster
$ pg_ctl -o "-p 5432" -D /opt/PostgreSQL/9.0/data start
$ pg_ctl -o "-p 5433" -D /opt/PostgreSQL/9.0/data_1 start
ステップ6。
2つのデータベース、5432のlondiste_providerと5433のlondiste_subscriberを作成します。2つのデータベースに主キー名「ltest」のテーブルを1つ作成し、londiste_provider(ltest)テーブルにデータを挿入します。後でレプリケーションのセットアップを完了すると、これらのINSERTが表示されます。 londiste_subscriber側のデータ。
スレーブ側でCRETAETABLEは必要ない場合があります。代わりに、テーブルが多数ある場合は、pg_dump/pg_restoreを使用して構造体のダンプ/復元を使用できます。
On 5432
psql -p 5432 -c "create database londiste_provider;"
psql -p 5432 londiste_provider
londiste_provider=# create table ltest(id int primary key);
londiste_provider=# insert into ltest VALUES (generate_series(1,10));
INSERT 0 10
On 5433
psql -p 5433 -c "create database londiste_subscriber;"
psql -p 5433 londiste_subscriber
londiste_subscriber=# create table ltest(id int primary key);
ステップ7。
2つの.iniファイルを作成します。1つはlondiste(londiste.ini)用で、もう1つはPgQティッカー(pgq_ticker.ini)用です。 skytoolsの基本インストールからサンプルの.iniファイルを見つけることもできます。例:-「/ opt / skytools-2.1.12 / share / doc / skytools/conf」の場所。
ステップ8。
ログとPIDのファイル用に2つのディレクトリを作成し、それらをlondiste.iniとpgq_ticker.iniのパラメータでポイントします。
$ cd /opt/PostgreSQL/9.0
$ mkdir log pid
ステップ9 。
.iniファイルを使用してレプリケーションを開始し、最初にプロバイダーとサブスクライバーにlondisteをインストールしてから、テーブルをレプリケートするためのティッカー(PgQ)を開始します。
以下のコマンドを1つずつ使用して、プロバイダーとサブスクライバーにlondisteをインストールします。
$ cd /opt/skytools-2.1.12/bin
$ ./londiste.py ../scripts/londiste.ini provider install
2012-01-12 14:56:03,667 11073 INFO plpgsql is installed
2012-01-12 14:56:03,674 11073 INFO txid_current_snapshot is installed
2012-01-12 14:56:03,675 11073 INFO Installing pgq
2012-01-12 14:56:03,676 11073 INFO Reading from /opt/skytools-2.1.12/share/skytools/pgq.sql
2012-01-12 14:56:03,816 11073 INFO Installing londiste
2012-01-12 14:56:03,816 11073 INFO Reading from /opt/skytools-2.1.12/share/skytools/londiste.sql
-bash-4.1$ ./londiste.py ../scripts/londiste.ini subscriber install
2012-01-12 14:56:17,871 11081 INFO plpgsql is installed
2012-01-12 14:56:17,872 11081 INFO Installing londiste
2012-01-12 14:56:17,873 11081 INFO Reading from /opt/skytools-2.1.12/share/skytools/londiste.sql
-->Now, Install PqQ and start ticker with .ini file.
-bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini install
2012-01-11 16:45:03,219 6348 INFO plpgsql is installed
2012-01-11 16:45:03,225 6348 INFO txid_current_snapshot is installed
2012-01-11 16:45:03,228 6348 INFO pgq is installed
-bash-4.1$ ./pgqadm.py -d ../scripts/pgqadm.ini ticker -d
-->Add the table to provider & subscriber to replicate.
-bash-4.1$ ./londiste.py ../scripts/londiste.ini provider add ltest
2012-01-12 15:03:39,583 11139 INFO Adding public.ltest
-bash-4.1$ ./londiste.py ../scripts/londiste.ini subscriber add ltest
2012-01-12 15:03:47,367 11146 INFO Checking public.ltest
2012-01-12 15:03:47,384 11146 INFO Adding public.ltest
追加した後、テーブルのレプリケーションを開始します。
-bash-4.1$ ./londiste.py ../ scripts/londiste.ini replay -d
Note: "-d" option is to run the londiste/PgQ daemons in background.
ここで、レプリケーションのセットアップを完了します。これで、スレーブ側(つまり、5433ポート)に「ltest」テーブルデータが表示されます。
ステップ10。
ここで、table / logs / pids/dataなどのバックグラウンドで何が起こったのかを理解しましょう。1つずつ見ていきましょう。
ログ情報:
レプリケーション後のテーブル構造:
イベントキューのステータス
レプリケーションステータスは、以下のようにpgqユーティリティで確認できます。-
-bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini status
Postgres version: 9.0.1 PgQ version: 2.1.8
Event queue Rotation Ticker TLag
------------------------------------------------------------------------------
londiste.replica 3/7200s 500/3s/60s 6s
------------------------------------------------------------------------------
Consumer Lag LastSeen
------------------------------------------------------------------------------
londiste.replica:
myfirstlondiste 6s 6s
------------------------------------------------------------------------------
注: Londiste&PGQユーティリティには、研究開発を行うための非常に優れたオプションがあります。
Londisteレプリケーションのセットアップが成功することを願っています。高く評価されているコメントを投稿してください。いくつかの投稿でまたお会いしましょう。