PostgreSQL のレプリケーション スレーブ マルチ

提供: Japanese Ikoula Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

ja:PostgreSQL のレプリケーション スレーブ マルチ en:PostgreSQL replication slaves multi he:PostgreSQL שכפול עבדים רב ro:PostgreSQL replicare sclavi multi ru:PostgreSQL репликации рабы multi pl:PostgreSQL replikacji niewolników multi ar:كيو النسخ المتماثل العبيد متعددة zh:PostgreSQL 复制奴隶多 de:PostgreSQL Replikation Sklaven multi nl:PostgreSQL replicatie slaven multi it:PostgreSQL replica schiavi multi pt:Multi de escravos de replicação PostgreSQL es:PostgreSQL replicación esclavos multi fr:Replication PostgreSQL multi slaves

この記事は、自動翻訳ソフトウェアで行うからです。 記事のソースはここを参照してくださいすることができます。

導入 | _。 _。 このページは、1 つのマスターと 2 つのスレーブの非同期ストリーミング PostgreSQL のレプリケーションの実装を扱います。私たちのスラブをホット スタンバイとして構成する、クエリが実行されると言うことです | _。 _。 読み取り専用 | _。 _。 これらの。

この実装のコンテキスト | _。 _。 我々 が持っている | _。 _。 Debian サーバ | _。 _。 更新 | _。 _。 我々 は ql に接続し、| _。 _。 我々 は拡張ディスプレイをアクティブにし、私たちのレプリケーションを確認 | _。 _。 我々 はたくさんある私たち | _。 _。 2 スラブ サーバーでレプリケーション | _。 _。 | _。 _。 | _。 _。 常にマスターの ql に接続して、テスト データベースを作成する | _。 _。 | _。 _。 | _。 _。 レプリケーションが機能を確認する | _。 _。 確認の上複製データベースがよく私たち | _。 _。 スラブ | _。 _。 私たちマスターで作成したデータベースは、私たち 2 つのスラブにも自動的にレプリケートされます。 | _。 _。 当社のマスターになります | _。 _。 | _。 _。 奴隷になります | _。 _。 Postgres | _。 _。 2 番目のスレーブになります | _。 _。 注文時のルートになります示されるが付いている | _。 _。 システム ユーザーの付いているときとして | _。 _。 PostgreSQL と 3 つのサーバーの事前構成のインストール: _! _ | この部分のすべての注文は、各サーバー上で行います。 (最初のステップとして、ファイルを持つ勧め | _。 _。 このような各サーバーへの接続を設定: _! _ | 独自のサーバーのホスト名および ip アドレスの適応によって | _。 _。 APT PostgreSQL をファイリングを追加 | _。 _。 我々 はこの預金の公開キーをインポート | _。 _。 我々 は預金を考慮する APT のキャッシュ更新 | _。 _。 我々 は ql パッケージをインストール | _。 _。 最新の安定バージョンはインストール、| _。 _。 この記事の執筆時に | _。 _。 パスワードを設定する | _。 _。 セキュリティで保護されたが、彼の選択の | _。 _。 生成して、ssh 鍵のペア | _。 _。 パスフレーズなし | _。 _。 システムの postgres ユーザー | _。 _。 我々 ユーザ postgres 以来と各サーバの公開 ssh キー コピー | _。 _。 最初のサーバーから | _。 _。 Postgres | _。 _。 我々 の場合: _! _ | 2 番目に | _。 _。 Postgres | _。 _。 私たちにとって | _。 _。 troisiseme | _。 _。 Postgres | _。 _。 2 番目の最初と 3 番目のサーバーから | _。 _。 3 番目の最初と 2 番目のサーバーから | _。 _。 マスターの構成: _! _ | マスターのみを行う: _! _ | Postgres | _。 _。 我々 の場合: _! _ | 役割を作成 | _。 _。 ユーザー複製: _! _ | 注: _! _ | 接続の制限の定義 | _。 _。 ん | _。 _。 スラブ | _。 _。 我々 は postgresql のメインの設定ファイルを編集 | _。 _。 次のガイドラインを設定する: _! _ | 注: _! _ | 我々 は我々 の 2 番目のサーバーにアーカイブをアクティブ化 | _。 _。 あなたのサーバーの ip アドレスをカスタマイズ | _。 _。 さらに多くの注意事項が、これは義務ではないのです。我々 はまた、パラメーター hot_standby を定義、よくしている場合、マスターはそれを無視する必要があります、将来的に奴隷に降格させること。) それは今、postgresql 認証ファイルを発行 | _。 _。 私たちのスラブまたはファイルの末尾に次の行から接続するレプリケーションの我々 のユーザーの承認を追加する: _. _ | レプリケーション、ネットワーク ユーザーの名前に基づいてこの行を適応してください | _。 _。 またはそれぞれの ip アドレス: _! _ | あなたのスラブ | _。 _。 当社の構成を考慮する postgresql サービスを再起動 | _。 _。 ルートで | _。 _。 これにより、サービスが正常に開始されたこと | _。 _。 Slavic の構成 | _。 _。 最初のスレーブの | _。 _。 Postgresql サービスはやめましょう | _。 _。 我々 は postgresql のメインの設定ファイルを編集 | _。 _。 同じように構成するアーカイブ rsync で 2 番目のスレーブの最初のスレーブの IP アドレスだけを調整することによって、マスターとしてのガイドラインはどちらかそれをアクティブにするかどうかはコマンド | _。 _。 それは今、postgresql 認証ファイルを発行 | _。 _。 当社の他のサーバーから接続するレプリケーション ユーザーの承認を追加する: _! _ | 場合にこのスレーブがマスターに昇格する必要がありますそれを行うことが | _。 _。 注: _! _ | この構成では私達のマスターのような必要な場合マスターとしてこの奴隷を簡単に促進することができます。


以下の操作、ユーザー システム postgres でログイン | _。 _。 マスター アーカイブの wal のコピー先のディレクトリを作成 | _。 _。 我々 は postgresql のデータ ディレクトリを削除 | _。 _。 ベース バックアップは、それ | _。 _。 あなたのマスターの ip とレプリケーションのユーザーの名前をカスタマイズする :


、レプリケーションのユーザーのパスワードを確認する | _。 _。 ファイルを作成することでレプリケーションを構成する | _。 _。 次のパラメーターで: _! _ | 注: _! _ | トリガー ファイルはとき停止する彼スレーブのレプリケーションを作成するファイルをマスターとしてそれを促進したいときは、経典の受け付けを開始します。彼のマスターのスレーブ クラッシュを昇格する前に初期マスター来る破損を避けるためにないことを確認してください。 3 ルート、我々 は戻って、我々 はサービスを開始: _! _ | これにより、サービスが正常に開始されたこと | _。 _。 私たちは私たちのマスターに接続する場合我々 はすでにチェックできますマスターと最初のスレーブの間のレプリケーションが機能 | _。 _。 当社のマスターに接続して、我々 は postgres システム ユーザーに接続している | _。 _。 我々 は postgresql に接続し、| _。 _。 我々 は拡張ディスプレイをアクティブにし、私たちのレプリケーションを確認 | _。 _。 最初のスレーブを持つ私たちの非同期ストリーミング レプリケーションは上出来です。この時点で我々 は、マスターを持っているレプリケーション | _。 _。 古典的なスレーブ | _。 _。 単一のスレーブの非同期ストリーミング | _。 _。 2 番目のスレーブ | _。 _。 この 2 番目のスレーブのアーカイブを有効にする場合も明らかにメインの構成ファイルでチェックイン順ファイル recovery.conf と ip アドレスでのホスト名を適応させる最初のスレーブにやった同じことを繰り返します。 8 (監査と私たちのマルチのテスト マスター レプリケーション スラヴ人 | _。 _。 マスターに接続してログインしているユーザ postgres) :

Postgres01 (10.1.1.75) : マスターからそれを削除するには

Postgres02 (10.1.1.90) :

Postgres03 (10.1.1.199) :


"#"  "$".

/etc/hosts  ()  :
# cat /etc/hosts
127.0.0.1       localhost

10.1.1.75       postgres01
10.1.1.90       postgres02
10.1.1.199      postgres03


:
# echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/postgres.list


:
# gpg --keyserver pgpkeys.mit.edu --recv-key 7FCC7D46ACCC4CF8 && gpg -a --export 7FCC7D46ACCC4CF8 | apt-key add -
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
gpg: requesting key ACCC4CF8 from hkp server pgpkeys.mit.edu
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key ACCC4CF8: public key "PostgreSQL Debian Repository" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK


:
# apt-get update


( 9.5 ) :
# apt-get install postgresql


()  ()  :
# passwd postgres
# su - postgres
$ ssh-keygen


:


(postgres01 )  (postgres02 )  (postgres03) :
root@postgres01:~# su - postgres
postgres@postgres01:~$ ssh-copy-id postgres02
postgres@postgres01:~$ ssh-copy-id postgres03


:
root@postgres02:~# su - postgres
postgres@postgres02:~$ ssh-copy-id postgres01
postgres@postgres02:~$ ssh-copy-id postgres03


:
root@postgres03:~# su - postgres
postgres@postgres03:~$ ssh-copy-id postgres01
postgres@postgres03:~$ ssh-copy-id postgres02

(postgres01 ) :


/ :

# su - postgres
$ psql -c "CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD '<mot de passe repuser>';"

 : 2 2


/etc/postgresql/9.5/main/postgresql.conf  :
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = 'rsync -av %p postgres@<ip du premier slave>:/var/lib/postgresql/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 256
hot_standby = on

: ()


/etc/postgresql/9.5/main/pg_hba.conf  :
hostssl replication     repuser <ip du réseau de vos serveurs>/24     md5

()


() :
# systemctl restart postgresql


:
root@postgres01:~# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
   Active: active (exited) since Thu 2016-06-02 12:06:28 CEST; 22s ago
  Process: 77056 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 77056 (code=exited, status=0/SUCCESS)


root@postgres01:~# ps -u postgres u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
postgres  77038  0.0  4.4 227300 21836 ?        S    12:06   0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.
postgres  77040  0.0  0.8 227300  4160 ?        Ss   12:06   0:00 postgres: checkpointer process
postgres  77041  0.0  1.0 227300  4968 ?        Ss   12:06   0:00 postgres: writer process
postgres  77042  0.0  1.7 227300  8776 ?        Ss   12:06   0:00 postgres: wal writer process
postgres  77043  0.0  1.3 227728  6708 ?        Ss   12:06   0:00 postgres: autovacuum launcher process
postgres  77044  0.0  0.6  82244  3392 ?        Ss   12:06   0:00 postgres: archiver process
postgres  77045  0.0  0.8  82244  4244 ?        Ss   12:06   0:00 postgres: stats collector process

:
# systemctl stop postgresql


/etc/postgresql/9.5/main/postgresql.conf  :
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = 'rsync -av %p postgres@<ip du second slave>:/var/lib/postgresql/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 256
hot_standby = on


/etc/postgresql/9.5/main/pg_hba.conf  () :
hostssl replication     repuser <ip du réseau de vos serveurs>/24     md5

 :


:
# su – postgres


:
$ mkdir /var/lib/postgresql/wal_archive


:
$ rm -rf /var/lib/postgresql/9.5/main


() :
$ pg_basebackup -h <ip de votre master> -D /var/lib/postgresql/9.5/main -U repuser -v -P --xlog


/var/lib/postgresql/9.5/main/recovery.conf  :
standby_mode = on
primary_conninfo = 'host=<ip de votre master> port=5432 user=repuser password=<mot de passe de repuser> sslmode=require application_name=<hostname de votre slave>'
trigger_file = '/var/lib/postgresql/9.5/postgres.trigger'

 :


:
# systemctl start postgresql


:
# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
   Active: active (exited) since Thu 2016-06-02 12:53:42 CEST; 1min 6s ago
  Process: 8894 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 8894 (code=exited, status=0/SUCCESS)


# ps -u postgres u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
postgres   8878  0.0  4.4 227308 21892 ?        S    12:53   0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.
postgres   8879  0.0  1.1 227376  5700 ?        Ss   12:53   0:00 postgres: startup process   recovering 00000001000000000000000
postgres   8880  0.0  0.8 227308  4140 ?        Ss   12:53   0:00 postgres: checkpointer process
postgres   8881  0.0  1.0 227308  5236 ?        Ss   12:53   0:00 postgres: writer process
postgres   8882  0.0  0.6  82252  3316 ?        Ss   12:53   0:00 postgres: stats collector process
postgres   8883  0.0  1.7 238064  8520 ?        Ss   12:53   0:00 postgres: wal receiver process   streaming 0/30003E0


:
:
# su - postgres


:
$ psql


:
postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 78879
usesysid         | 16384
usename          | repuser
application_name | postgres02
client_addr      | 10.1.1.90
client_hostname  |
client_port      | 49009
backend_start    | 2016-06-02 12:53:36.641823+02
backend_xmin     |
state            | streaming
sent_CRElocation    | 0/30004C0
write_location   | 0/30004C0
flush_location   | 0/30004C0
replay_location  | 0/30004C0
sync_priority    | 0
sync_state       | async

/ ()

:
# su – postgres
:
$ psql


:
postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 78879
usesysid         | 16384
usename          | repuser
application_name | postgres02
client_addr      | 10.1.1.90
client_hostname  |
client_port      | 49009
backend_start    | 2016-06-02 12:53:36.641823+02
backend_xmin     |
state            | streaming
sent_location    | 0/5000140
write_location   | 0/5000140
flush_location   | 0/5000140
replay_location  | 0/5000140
sync_priority    | 0
sync_state       | async
-[ RECORD 2 ]----+------------------------------
pid              | 82725
usesysid         | 16384
usename          | repuser
application_name | postgres03
client_addr      | 10.1.1.199
client_hostname  |
client_port      | 51754
backend_start    | 2016-06-02 14:31:43.759683+02
backend_xmin     |
state            | streaming
sent_location    | 0/5000140
write_location   | 0/5000140
flush_location   | 0/5000140
replay_location  | 0/5000140
sync_priority    | 0
sync_state       | async
2  (postgres02 03).


(ex : checkrep)  :
postgres=# CREATE DATABASE checkrep;


2  :
root@postgres02:~# su - postgres
postgres@postgres02:~$ psql
psql (9.5.3)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 checkrep  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)


root@postgres03:~# su - postgres
postgres@postgres03:~$ psql
psql (9.5.3)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 checkrep  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)



:
postgres=# DROP DATABASE checkrep;



あなたにはコメントを投稿する権限がありません。