概要
PostgreSQLは、拡張性と標準への準拠に焦点を重点に置いたオープンソースオブジェクトのリレーショナルデータベース管理システムです。PostgreSQLは、エンタープライズの複雑なSQL処理用のOLTPオンライントランザクション処理シナリオであり、NoSQLデータタイプ(JSON/XML/hstore)をサポートし、GIS(Geographic Information SystemまたはGeo-Information system)地理情報処理をサポートし、信頼性とデータ整合性の点で高い評判を得ています。インターネットのWebサイト、ロケーションアプリケーションシステム、複雑なデータオブジェクト処理などのアプリケーションシナリオに適しています。
このドキュメントでは、CentOS 7のCVMインスタンスでのPostgreSQLの構築方法について説明します。
ソフトウェアのバージョン
このドキュメントで作成されたPostgreSQLの構成およびバージョンの使用方法は次のとおりです:
Linux:Linux OSです。このドキュメントではCentOS 7.6を例として説明します。
PostgreSQL:リレーショナルデータベース管理システムです。このドキュメントでは、PostgreSQL 12を例として説明します。
前提条件
2つのCVMインスタンスが作成されています(1つのCVMインスタンスがマスターノードとして機能し、もう1つのCVMインスタンスがスレーブノードとして機能します)。
新しく作成された2つのCVMインスタンスは、セキュリティグループルールが構成されています。ポート5432がオープンされています。
具体的な手順については、セキュリティグループルールの追加 をご参照ください。 操作手順
マスターノードの設定
1. マスターノードインスタンスにログインします。
2. 次のコマンドを実行して、すべてのパッケージ、システムバージョン、カーネルをアップグレードします。
3. 次のコマンドを順番に実行して、PostgreSQLをインストールします。
このドキュメントでは、PostgreSQL 12バージョンを例として説明しますが、必要に応じてその他のバージョンを選択することもできます。
wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql12-server postgresql12-contrib -y
/usr/pgsql-12/bin/postgresql12-setup initdb
4. 次のコマンドを実行して、サービスを起動します。
systemctl start postgresql-12.service
5. 次のコマンドを実行して、起動時に自動的にサービスを開始するように設定します。
systemctl enable postgresql-121.service
6. 次のコマンドを実行して、postgresユーザーにログインします。
7. 次のコマンドを実行して、PostgreSQLインタラクティブ端末に入ります。
8. 次のコマンドを実行して、ユーザーpostgresのパスワードを設定して、セキュリティを強化します。
ALTER USER postgres WITH PASSWORD '自定义密码';
9. 次のコマンドを実行して、データベースのアカウントを作成し、パスワード、ログイン権限、バックアップ権限を設定します。
create role アカウント名 login replication encrypted password 'カスタマイズパスワード';
このドキュメントでは、次のコマンドを実行して、データベースアカウントreplica
およびパスワード123456
の作成を例として説明します。
create role replica login replication encrypted password '123456';
10. 次のコマンドを実行して、アカウントが正常に作成されたかどうかを確認します。
SELECT usename from pg_user;
次の結果が返された場合、正常に作成されたことを示します。
usename
postgres
replica
(2 rows)
11. 次のコマンドを実行して、権限が正常に作成されたかどうかを確認します。
SELECT rolname from pg_roles;
次の結果が返された場合、正常に作成されたことを示します。
rolname
pg_signal_backend
postgres
replica
(3 rows)
12. 「\\q」を入力し、Enterを押して、SQL端末を終了します。
13. 「exit」を入力し、Enterを押して、PostgreSQLを終了します。
14. 次のコマンドを実行して、pg_hba.conf設定ファイルを開き、replicaユーザーホワイトリストを設定します。
vim /var/lib/pgsql/12/data/pg_hba.conf
15. iを押して編集モードに切り替え、IPv4 local connectionsセクションに次の2行を追加します:
host all all <スレーブノードのVPC IPv4セグメント> md5
host replication replica <スレーブノードのVPC IPv4セグメント> md5
例えば、データベースアカウントがreplicaで、スレーブノードのVPC IPv4セクションがxx.xx.xx.xx/16である場合、IPv4 local connectionsセクションに次の内容を追加します。
host all all xx.xx.xx.xx/16 md5
host replication replica xx.xx.xx.xx/16 md5
16. Escを押し、:wqを入力して、ファイルを保存して戻ります。
17. 次のコマンドを実行して、postgresql.confファイルを開きます。
vim /var/lib/pgsql/12/data/postgresql.conf
18. iを押して編集モードに入り、次のパラメータをそれぞれ見つけて、パラメータを次のように変更します:
listen_addresses = '*'
max_connections = 100
wal_level = hot_standby
synchronous_commit = on
max_wal_senders = 32
wal_sender_timeout = 60s
19. Escを押し、:wqを入力して、ファイルを保存して戻ります。
20. 次のコマンドを実行して、サービスを再起動します。
systemctl restart postgresql-12.service
スレーブノードの設定
1. スレーブノードインスタンスにログインします。
2. 次のコマンドを実行して、すべてのパッケージ、システムバージョン、カーネルをアップグレードします。
3. 次のコマンドを順番に実行して、PostgreSQLをインストールします。
wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql12-server postgresql12-contrib -y
4. 次のコマンドを実行して、pg_basebackupベースバックアップツールを使用して、バックアップディレクトリを生成します。
pg_basebackup -D /var/lib/pgsql/12/data -h <マスターノードのパブリックネットワークIP> -p 5432 -U replica -X stream -P
メッセージに従って、データベースアカウントに対応するパスワードを入力し、**Enter**を押します。次の結果が返された場合、正常にバックアップされたことを示します。
Password:
24526/24526 kB (100%), 1/1 tablespace
5. 次のコマンドを実行して、master設定の関連ファイルをコピーします。
cp /usr/pgsql-12/share/recovery.conf.sample /var/lib/pgsql/12/data/recovery.conf
6. 次のコマンドを実行して、recovery.conf
ファイルを開きます。
vim /var/lib/pgsql/12/data/recovery.conf
7. iを押して編集モードに切り替え、次のパラメータをそれぞれ見つけて、パラメータを次のように変更します:
standby_mode = on
primary_conninfo = 'host=<マスターノードのパブリックネットワークIP> port=5432 user=データベースのアカウント password=データベースのパスワード'
recovery_target_timeline = 'latest'
8. Escを押し、:wqを入力して、ファイルを保存して戻ります。
9. 次のコマンドを実行して、postgresql.confファイルを開きます。
vim /var/lib/pgsql/12/data/postgresql.conf
10. iを押して編集モードに切り替え、次のパラメータをそれぞれ見つけて、パラメータを次のように変更します:
max_connections = 1000
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 1s
hot_standby_feedback = on
11. Escを押し、:wqを入力して、ファイルを保存して戻ります。
12. 次のコマンドを実行して、データディレクトリのグループと所有者を変更します。
chown -R postgres.postgres /var/lib/pgsql/12/data
13. 次のコマンドを実行して、サービスを起動します。
systemctl start postgresql-12.service
14. 次のコマンドを実行して、起動時に自動的にサービスを開始するように設定します。
systemctl enable postgresql-12.service
デプロイの検証
次の手順を実行して、正常にデプロイされたかどうかを確認できます:
1. 次のコマンドを実行して、ノードからディレクトリをバックアップします。
pg_basebackup -D /var/lib/pgsql/12/data -h <マスターノードのパブリックネットワークIP> -p 5432 -U replica -X stream -P
データベースのパスワードを入力し、Enterを押して、次の結果が返された場合は、正常にバックアップされたことを示します。
Password:
24526/24526 kB (100%), 1/1 tablespace
2. マスターノードで、次のコマンドを実行して、senderプロセスを表示します。
3. スレーブノードで、次のコマンドを実行して、receiverプロセスを表示します。
次の結果が返された場合は、receiverプロセスを正常に表示できることを示します。
4. マスターノードでは、次のコマンドを順番に実行して、PostgreSQLインタラクティブ端末に入り、マスターデータベースでスレーブデータベースのステータスを表示します。
select * from pg_stat_replication;
次の結果が返された場合は、スレーブデータベースのステータスを正常に表示できることを示します。
この記事はお役に立ちましたか?