「PostgreSQL のレプリケーション スレーブ マルチ」の版間の差分
1行目: | 1行目: | ||
+ | <span data-link_translate_ja_title="PostgreSQL のレプリケーション スレーブ マルチ" data-link_translate_ja_url="PostgreSQL のレプリケーション スレーブ マルチ"></span>[[:ja:PostgreSQL のレプリケーション スレーブ マルチ]][[ja:PostgreSQL のレプリケーション スレーブ マルチ]] | ||
<span data-link_translate_en_title="PostgreSQL replication slaves multi" data-link_translate_en_url="PostgreSQL+replication+slaves+multi"></span>[[:en:PostgreSQL replication slaves multi]][[en:PostgreSQL replication slaves multi]] | <span data-link_translate_en_title="PostgreSQL replication slaves multi" data-link_translate_en_url="PostgreSQL+replication+slaves+multi"></span>[[:en:PostgreSQL replication slaves multi]][[en:PostgreSQL replication slaves multi]] | ||
<span data-link_translate_he_title="PostgreSQL שכפול עבדים רב" data-link_translate_he_url="PostgreSQL+%D7%A9%D7%9B%D7%A4%D7%95%D7%9C+%D7%A2%D7%91%D7%93%D7%99%D7%9D+%D7%A8%D7%91"></span>[[:he:PostgreSQL שכפול עבדים רב]][[he:PostgreSQL שכפול עבדים רב]] | <span data-link_translate_he_title="PostgreSQL שכפול עבדים רב" data-link_translate_he_url="PostgreSQL+%D7%A9%D7%9B%D7%A4%D7%95%D7%9C+%D7%A2%D7%91%D7%93%D7%99%D7%9D+%D7%A8%D7%91"></span>[[:he:PostgreSQL שכפול עבדים רב]][[he:PostgreSQL שכפול עבדים רב]] |
2017年2月9日 (木) 18:06時点における最新版
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;
コメントの自動更新を有効化