このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
01_linux:11_データベース:02_postgresql:01_streaming_replica [2022/06/28 05:49] – 作成 matsui | 01_linux:11_データベース:02_postgresql:01_streaming_replica [2022/07/11 08:08] (現在) – matsui | ||
---|---|---|---|
行 4: | 行 4: | ||
+ | ^hostname^IP^ | ||
+ | |pg1001|172.16.0.51| | ||
+ | |pg1002|172.16.0.52| | ||
+ | |pg1003|172.16.0.53| | ||
+ | ===== インストール ===== | ||
+ | |||
+ | |||
+ | yum -y install epel-release centos-release-scl | ||
+ | |||
+ | |||
+ | ===== PostgreSQL リポジトリ ===== | ||
+ | yum -y install https:// | ||
+ | yum -y install https:// | ||
+ | |||
+ | |||
+ | ===== PostgreSQLインストール ===== | ||
+ | yum -y install postgresql13-contrib postgresql13-devel | ||
+ | |||
+ | ===== 自動起動 defautl: disabled ===== | ||
+ | |||
+ | systemctl enable postgresql-13.service | ||
+ | systemctl disable postgresql-13.service | ||
+ | |||
+ | |||
+ | ===== Dataディレクトリ変更 ===== | ||
+ | |||
+ | < | ||
+ | mkdir /data/ | ||
+ | chown postgres: | ||
+ | chmod 750 /data/ | ||
+ | |||
+ | # grep Environment=PGDATA / | ||
+ | Environment=PGDATA=/ | ||
+ | ↓ | ||
+ | Environment=PGDATA=/ | ||
+ | </ | ||
+ | |||
+ | ==== 反映 ==== | ||
+ | systemctl daemon-reload | ||
+ | |||
+ | |||
+ | ===== 初期化 ===== | ||
+ | |||
+ | PGSETUP_INITDB_OPTIONS=" | ||
+ | |||
+ | ===== PATH追加 ===== | ||
+ | |||
+ | < | ||
+ | cat << __EOM__ | tee / | ||
+ | PATH=/ | ||
+ | export PATH | ||
+ | __EOM__ | ||
+ | |||
+ | source / | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== PGDATA変更 ===== | ||
+ | |||
+ | |||
+ | < | ||
+ | # vi / | ||
+ | # | ||
+ | PGDATA=/ | ||
+ | |||
+ | source / | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== パスワード ===== | ||
+ | < | ||
+ | # su - postgres | ||
+ | $ psql | ||
+ | alter role postgres with password ' | ||
+ | </ | ||
+ | |||
+ | ===== 起動 ===== | ||
+ | |||
+ | systemctl status postgresql-13.service | ||
+ | |||
+ | |||
+ | ===== 確認 ===== | ||
+ | < | ||
+ | -bash-4.2$ psql -V | ||
+ | psql (PostgreSQL) 13.7 | ||
+ | -bash-4.2$ psql -l | ||
+ | List of databases | ||
+ | | ||
+ | -----------+----------+----------+---------+-------+----------------------- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | (3 rows) | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== ユーザ、DB作成 ===== | ||
+ | |||
+ | < | ||
+ | -bash-4.2$ createuser --login --pwprompt testuser | ||
+ | Enter password for new role: | ||
+ | Enter it again: | ||
+ | -bash-4.2$ createdb --owner=testuser testdb | ||
+ | </ | ||
+ | |||
+ | ==== Sampleデータを投入 ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | < | ||
+ | curl -L -O https:// | ||
+ | unzip dvdrental.zip | ||
+ | cd sample_data | ||
+ | tar zxvf ../ | ||
+ | </ | ||
+ | |||
+ | ===== 外からの接続許可 ===== | ||
+ | |||
+ | < | ||
+ | vi / | ||
+ | |||
+ | # | ||
+ | ↓ | ||
+ | listen_addresses = ' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | vi / | ||
+ | |||
+ | ↓追加 | ||
+ | ### ローカルホストから、testdb testuser でアクセス | ||
+ | local | ||
+ | |||
+ | ### 他のホストからネットワーク経由でアクセス | ||
+ | host all | ||
+ | |||
+ | ### 他のホストからreplicationを許可 | ||
+ | host replication | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 反映 ==== | ||
+ | |||
+ | < | ||
+ | # systemctl reload postgresql-13.service | ||
+ | </ | ||
+ | ===== バックアップ ===== | ||
+ | |||
+ | 他のノードから、node1へ接続してバックアップを取得 | ||
+ | < | ||
+ | # pg_basebackup -R -D /data/ -h 172.16.0.51 -U postgres | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 切り替え ===== | ||
+ | |||
+ | < | ||
+ | Secondaryは下記を追加 | ||
+ | / | ||
+ | primary_conninfo = へ追加 application_name=postgresql | ||
+ | |||
+ | ## Secondaryは下記をコメントアウト | ||
+ | # grep synchronous_standby_names | ||
+ | synchronous_standby_names = ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 確認 ===== | ||
+ | |||
+ | |||
+ | ==== Primary ==== | ||
+ | |||
+ | < | ||
+ | [root@pg1001 ~]# systemctl status postgresql-13.service | ||
+ | ● postgresql-13.service - PostgreSQL 13 database server | ||
+ | | ||
+ | | ||
+ | Docs: https:// | ||
+ | Process: 19243 ExecReload=/ | ||
+ | Process: 8558 ExecStartPre=/ | ||
+ | Main PID: 8564 (postmaster) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Primaryではwalsenderプロセスが存在する。 | ||
+ | < | ||
+ | # ps auxw| grep [w]alsender | ||
+ | postgres 19068 0.0 0.0 398732 | ||
+ | postgres 19071 0.0 0.0 398228 | ||
+ | </ | ||
+ | |||
+ | ==== Secondary ==== | ||
+ | |||
+ | < | ||
+ | # systemctl status postgresql-13.service | ||
+ | ● postgresql-13.service - PostgreSQL 13 database server | ||
+ | | ||
+ | | ||
+ | Docs: https:// | ||
+ | Process: 8147 ExecStartPre=/ | ||
+ | Main PID: 8154 (postmaster) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | Secondaryでは、walreceiverも動いている | ||
+ | < | ||
+ | # ps auxw| grep [w]alreceiver | ||
+ | postgres 19711 0.0 0.0 408884 | ||
+ | </ | ||
+ | |||
+ | ==== 更新確認 ==== | ||
+ | |||
+ | === Primary更新 === | ||
+ | |||
+ | Primaryが更新されると、Secondaryもちゃんとデータ更新されている。 | ||
+ | < | ||
+ | $ psql -h 172.16.0.51 -U postgres | ||
+ | UPDATE 1 | ||
+ | |||
+ | |||
+ | $ psql -h 172.16.0.52 -U postgres | ||
+ | | ||
+ | ----------+------------+-----------+---------------------------- | ||
+ | 1 | BBB | Guiness | ||
+ | (1 row) | ||
+ | |||
+ | $ psql -h 172.16.0.53 -U postgres | ||
+ | | ||
+ | ----------+------------+-----------+---------------------------- | ||
+ | 1 | BBB | Guiness | ||
+ | (1 row) | ||
+ | |||
+ | </ | ||
+ | |||
+ | Primary以外では更新できない。 | ||
+ | < | ||
+ | ubuntu@jump: | ||
+ | ERROR: | ||
+ | </ | ||
+ | |||
+ | ===== Primary障害時 ===== | ||
+ | |||
+ | pg1001が障害発生で、落ちた事を想定 | ||
+ | |||
+ | [root@pg1001 ~]# systemctl stop postgresql-13.service | ||
+ | |||
+ | |||
+ | pg1002, | ||
+ | < | ||
+ | $ psql -h 172.16.0.52 -U postgres | ||
+ | | ||
+ | ----------+------------+-----------+---------------------------- | ||
+ | 1 | CCC | Guiness | ||
+ | (1 row) | ||
+ | |||
+ | $ psql -h 172.16.0.53 -U postgres | ||
+ | | ||
+ | ----------+------------+-----------+---------------------------- | ||
+ | 1 | CCC | Guiness | ||
+ | </ | ||
+ | |||
+ | pg1002をPrimaryへ昇格させる | ||
+ | |||
+ | Secondaryの要素をコメントアウト | ||
+ | < | ||
+ | [root@pg1002 ~]# vi / | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | Primaryの要素を追加 | ||
+ | < | ||
+ | [root@pg1002 ~]# vi / | ||
+ | synchronous_standby_names = ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | Primaryへ昇格 | ||
+ | < | ||
+ | [root@pg1002 ~]# systemctl reload postgresql-13.service | ||
+ | [root@pg1002 ~]# su - postgres | ||
+ | -bash-4.2$ / | ||
+ | waiting for server to promote.... done | ||
+ | server promoted | ||
+ | </ | ||
+ | |||
+ | 他のSecondaryの接続先を変更しリロード | ||
+ | < | ||
+ | [root@pg1003 ~]# vi / | ||
+ | host=172.16.0.52 | ||
+ | ↓ | ||
+ | host=172.16.0.51 | ||
+ | |||
+ | [root@pg1003 ~]# systemctl reload postgresql-13.service | ||
+ | </ | ||
+ | ===== 参考 ===== | ||
+ | |||
+ | |||
+ | インストール | ||
+ | [[https:// | ||
+ | |||
+ | pgpool-IIについて | ||
+ | [[https:// | ||
+ | |||
+ | 動作モード master_slave_mode master_slave_sub_mode stream | ||
+ | [[https:// | ||
+ | |||
+ | ロジカルレプリケーション ストリーミングレプリケーション違い | ||
+ | [[https:// | ||
{{tag> | {{tag> |