PostgreSQLでの簡単なレプリケーションセットアップ

画像

データベースサーバーからバックアップサーバーへのデータ複製をできるだけ迅速かつ簡単に整理する必要がありました。 Webの広大さでは、シンプルでわかりやすい方法は決して見つかりませんでしたので、情報を部分的に収集する必要があり、それがこの記事になりました。



問題を解決しました。 ソースデータ



したがって、クライアントが動作するデータベースサーバーと、メインデータベースからのレプリケーションを構成する必要があるバックアップサーバーがあります。

私の場合、PostgreSQL 9.2.1が使用されます。これは両方のサーバーにインストールされ、ストリーミングレプリケーションをサポートしています。 メインサーバー上のデータベースが展開され、実行され、バックアップのみがインストールされ、PostgreSQLが構成されていないとします。 たとえば、メインサーバのアドレスにIPアドレス192.168.1.1を、バックアップアドレスにIPアドレス192.168.1.2を使用します。



メインデータベースサーバーを構成する



「ログインロール」セクションで、PgAdminを使用して、「ストリーミングレプリケーションとバックアップを作成できます」という権限を持つユーザー(ロール)replを作成します。 pg_hbaに追加するか、PgAdminの「サーバー構成」を使用して、ユーザーreplがデータベースに接続できるようにする行を作成します。



host replication repl 192.168.1.2/32 trust







postgresql.confファイルに次の変更が加えられました。

初期値 値を変更しました 説明
#max_wal_senders = 1 max_wal_senders = 2 プライマリサーバーに接続できるバックアップサーバーの数
#wal_keep_segments = 32 wal_keep_segments = 32(256を入れることができます) 保存するセグメントの数。 バックアップサーバーがすべてを収集して処理する時間があるように、量を選択する必要があります。 walファイルが1日に上書きされないように256を設定しました
#wal_level = hot_standby wal_level = hot_standby hot_standbyは、読み取り専用要求をスタンバイサーバーに実行するために必要な情報を追加します
#checkpoint_segments = 3 checkpoint_segments = 16 WALログのセグメント数を増やすことができます


バックアップサーバーを構成する



バックアップサーバーでPostgresql 9.2サービスを停止し、PostgreSQLのインストール時に作成されたデータ(D:\データベースなど)を含むフォルダーをクリアします。 その後、コマンドラインからバックアップを実行します。



"C:\PostgreSQL\bin\pg_basebackup.exe" --host=192.168.1.1 --port=5432 --username=repl -D "D:\database"







D:\データベースでpostgresql.confを構成します

初期値 値を変更しました 説明
#hot_standby = off hot_standby = on 回復プロセス中にDBMSへの読み取り専用クエリを許可します。


Dのrecovery.confを構成します:\データベース

価値 説明
standby_mode = 'on' 復旧モードを有効にし、バックアップサーバー(スレーブ)として機能する
primary_conninfo = 'ホスト= 192.168.1.1ポート= 5432ユーザー= repl' メインサーバーに接続するためのパラメーター
trigger_file = 'D:\\データベース\\ end_trig' 指定したフォルダーにend_trigというファイルを作成すると、サーバーはレプリケーションモードを終了し、通常のサーバーになります


バックアップサーバーでPostgresqlサービスを開始します。 エラーなしで起動するはずです。 レプリケーションを確認します。メインサーバー上のテーブルに変更を加え、バックアップに影響があるかどうかを確認します。



ログアーカイブの構成(必要な場合)



メインサーバー上のpostgresql.confファイルに、次を含めます。

archive_mode = on archive_command = 'copy "%p" "e:\\バックアップ\\%f"'


ログファイルはe:\ Backupフォルダーにドロップされます。 (注意、彼らはすべてのディスクスペースを詰まらせる可能性があります、あなたはオーバーフローしたときにクリーニングを設定する必要があります)



ログアーカイブを使用するには、復元元のフォルダーにログをコピーし、recovery.confに行を追加する必要があります。



restore_command = 'copy "e:\\Backup\\%f" "%p"'







失敗アクション



バックアップサーバーに障害が発生した場合、そのサーバーでPostgresサービスを停止し、「バックアップサーバーの構成」の手順をすべて実行します。

メインサーバーに障害が発生した場合、バックアップサーバーを通常の動作モードにする必要があります。このためには、recovery.conf trigger_file = 'D:\\ database \\ end_trig' bで指定されたフォルダーにend_trigファイルを作成する必要があります。



注釈



レプリケーションは、Windows XPからWindows 7へ、またはその逆に構成できます。

Windows 7とWndows XPでは、pg_hbaの設定が異なります。 XPでは、ip6プロトコルはありません。その場合、その行はコメントアウトする必要があります。



All Articles