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

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


バックアップサーバーで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 = offhot_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 = onarchive_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プロトコルはありません。その場合、その行はコメントアウトする必要があります。

Source: https://habr.com/ru/post/J174205/


All Articles