Red Hat Enterprise Linuxにデータベースを作成する
データベースのインストール前提条件
- HTTP Proxy の設定が必要な場合、HTTP Proxy の設定(環境変数)が予め行われていること。
- ネットワーク設定が予め行われていること。
- 本ページの記述では、データベースを以下の設定値で作成することを仮定します。
- データベース名称: dbname
- データベースホスト名: dbhost
- データベースサービスポート: 5432
- データベースユーザ名: dbuser
- データベースユーザパスワード: dbpass
データベースセットアップ手順
-
root ユーザに昇格します。
$ su - -
PostgreSQL をインストールし、起動します。
# yum check-update# yum update -y# yum install -y postgresql-server -
データベースを初期化します。
# postgresql-setup initdb -
PostgreSQLの設定 (postgresql.conf) を変更します。
PostgreSQLバージョン14以降は、パスワードハッシュアルゴリズムが標準でscram-sha-256になっている場合がありますが、SIDfmVMサーバでは現在のところ対応していないため、md5に変更します。
[変更前]# vi /var/lib/pgsql/data/postgresql.conf
[変更後]#listen_addresses = 'localhost' # what IP address(es) to listen on;listen_addresses = '*' # what IP address(es) to listen on;
[変更前]# vi /var/lib/pgsql/data/postgresql.conf
[変更後]#password_encryption = scram-sha-256 # scram-sha-256 or md5password_encryption = md5 # scram-sha-256 or md5 -
PostgreSQLの設定 (pg_hba.conf) を変更します。
- [SIDfm VM Server と同一のホスト上にデータベースをセットアップしている場合]
-
5-1-1. まず、docker0 インタフェースの IP アドレスを確認します。
# ip address show dev docker03: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscnoqueue state UP group defaultlink/ether 02:42:e6:14:05:27 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever上記の場合、データベースサーバの IP アドレスは 172.17.0.1 で、ネットワークアドレスは 172.17.0.0/16 であることを確認できます。
-
5-1-2. 5-1-1.よりdocker0のネットワークアドレスが172.17.0.0/16であることが 確認できるため、PostgreSQL設定ファイルのpg_hba.confにアクセス許可の設定を 行います。
# vi /var/lib/pgsql/data/pg_hba.conf[変更]host all all 127.0.0.1/32 identhost all all ::1/128 ident↓host all all 127.0.0.1/32 trusthost all all ::1/128 trust[最後に追記]host dbname dbuser 172.17.0.0/16 md5 - [SIDfm VM Serverと別のホスト上にデータベースをセットアップしている場合]
-
5-2-1. SIDfm VM ServerのIPアドレスを xxx.xxx.xxx.xxx とした場合、PostgreSQL 設定ファイルの pg_hba.conf にアクセス許可の設定を行います。
# vi /var/lib/pgsql/data/pg_hba.conf[変更]host all all 127.0.0.1/32 identhost all all ::1/128 ident↓host all all 127.0.0.1/32 trusthost all all ::1/128 trust[最後に追記]host dbname dbuser xxx.xxx.xxx.xxx/32 md5
-
データベースサーバを起動します。
# systemctl enable postgresql# systemctl start postgresql -
データベースを作成します。
# su - postgres$ psql -l※ 作成しようとしているデータベース名のデータベースが無いことを確認します。
$ createdb --encoding=UTF-8 dbname --template=template0 -
データベースユーザ(データベースにアクセスする際の認証で使用するユーザ)を作成します。
$ createuser -P dbuser※ パスワード入力(ここでは dbpass)
-
8.で作成したユーザに dbname へのアクセス権限を付与
$ echo 'grant all privileges on database dbname to dbuser' | psql dbname$ exit -
firewalld の設定を変更します。
標準では、firewalldによりアクセス制限されているため、アクセスの許可を行ないます。 インストールしている環境により、10-1 もしくは 10-2 の操作を実施します。
- 10-1. SIDfm VM Server を同一ホスト上にインストールした場合
dockerコンテナとの通信に利用される専用I/F docker0 からのアクセスを許可する設定を行う。
# firewall-cmd --change-interface docker0 --zone=trusted --permanent# firewall-cmd --reload - 10-2. SIDfm VM Server を別ホスト上にインストールした場合
SIDfm VM ServerのIPアドレス(ここでは xxx.xxx.xxx.xxx とする)からのアクセスを許可する。
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.xxx" service name="postgresql" accept' --permanent# firewall-cmd --reload
- 10-1. SIDfm VM Server を同一ホスト上にインストールした場合
- 以上で、データベースのセットアップは完了です。
データベースバックアップ手順
-
データベースのバックアップは、データベースのセットアップを行ったホスト上で以下のように操作します。
# su - postgres$ pg_dump dbname | gzip -c > /tmp/dbname.psql.gz作成された /tmp/dbname.psql.gz がバックアップファイルです。
データベースリストア手順
-
データベースのリストアは、データベースのセットアップを行ったホスト上で以下のように操作します。データベースを一度削除していますので、十分に注意して実行してください。dbname.psql.gzは、データベースのバックアップで作成したバックアップファイルです。操作の 前に/tmp/ディレクトリに転送しておきます。
# su - postgres$ dropdb dbname$ createdb --encoding=UTF-8 dbname$ gzip -dc /tmp/dbname.psql.gz | psql dbnameなお、pg_dumpコマンドは異なるホスト上のデータベースを指定してバックアップを取得すること も可能ですが、PostgreSQLのバージョンが異なる場合にはアクセスに失敗する可能性があります。 そのため、データベースのバックアップについては、データベースサーバ上で実行することを お勧めします。取得したバックアップファイルについては、異なるバージョンのPostgreSQLでも基本的には読み 込むことが可能ですが、一部互換性のない機能が使用されていた場合にエラーが出力される場合 があります。