PostgreSQLバージョン:11.2
OS:RHELまたはOracle Linux 7.6(未定)
私は実動データベースをセットアップする設計段階にいます。本番環境では、DBのサイズは約300 GB〜400 GBになります。
これは私が考えていることです。これがPostgreSQLの本番環境への展開に適しているかどうかをお知らせください。
次のファイルシステムを次のサイズでマウントします。
/db ----> 50 GB
/pgdata ---> 500 GB
カスタムの場所/db/postgres/pg11/data
でデータベースクラスターを初期化します。
そして最初から、次のようなテーブルスペースの作成を開始します。
CREATE TABLESPACE orders_tbs LOCATION '/pgdata/<db_name>/orders_tbs';
...次のように、これらのテーブルスペースにビジネスオブジェクトを配置します。
CREATE TABLE orders (id int, order_item text) tablespace orders_tbs;
ありがとうArkhena、CL
上記の場合、データファイル(/pgdata
)用に別のファイルシステムを作成し、構成ファイルとログを/db
に保存することを考えました。だから、私の考えは悪かった。
私はRHEL/Oracle Linuxを使用しているため、デフォルトでは、私の$PGDATA
は/var/lib/pgsql/11/data
になります。
しかし、私は$PGDATA
を/db/postgres/pg11/data
のようなカスタムの場所に置くことを好みます
データファイルは$PGDATA/base
ディレクトリにあるので、LVMを使用して以下のようなディスクレイアウトを作成してみませんか?
$ PGDATAの最上位の親ディレクトリ/db
用の50GBファイルシステムと$PGDATA/base
ディレクトリ用の個別の500 GBファイルシステム?
[root@localhost ~]# df -Ph
Filesystem Size Used Avail Use% Mounted on
<output snipped>
.
.
/dev/mapper/VolGroup1-LogVol02 50G 23M 49.9G 1% /db
/dev/mapper/VolGroup1-LogVol04 500G 2.7M 499.9G 1% /db/postgres/pg11/data/base
ストレージのボトルネックを発生させずに上記のディスクレイアウトを最適に作成する方法について、Linux管理者に確認する必要があります。
PostgreSQLのテーブルスペースは、いくつかの本当に特定のニーズ(そして、その場合は500 GB未満であるとは思えません)とSQLコンプライアンスのために存在します。最終的にすべてを同じディスクに格納するためのテーブルスペースを作成する場合は、作成しないでください。 $ PGDATA内にテーブルスペースを作成する予定がある場合は、作成しないでください。
表スペースは、より複雑なリカバリー操作につながります(必要な場合)。後で自分をのろいますよ、私を信じてください。
Christophe Pettusのスライドには多くの優れたアドバイスがあります( 自分の仕事でない場合はPostgreSQL )。スライド27はテーブルスペースについてであり、なぜそれらを使用しないのかについてです。
最終的にどのソリューションを採用したかわかりませんが、$PGDATA
をデフォルトの場所に置きたくない場合は この記事では カスタム$PGDATA
の作成方法を見つけることができます。この記事は、Postgresql 10を搭載したCentOS 7に関するものです。
(例)/ pgdata/10/dataにデータを配置したい場合は、適切な権限でディレクトリを作成します(これを追加する必要があります:所有者と権限です。これはpostgres:postgres
です。および700
):
# mkdir -p /pgdata/10/data
# chown -R postgres:postgres /pgdata
次に、systemdサービスをカスタマイズします。
# systemctl edit postgresql-10.service
次のコンテンツを追加します。
[Service]
Environment=PGDATA=/pgdata/10/data
これにより、元のサービスファイルとマージされる/etc/systemd/system/postgresql-10.service.d/override.conf
ファイルが作成されます。
その内容を確認するには:
# cat /etc/systemd/system/postgresql-10.service.d/override.conf
[Service]
Environment=PGDATA=/pgdata/10/data
Systemdをリロードします。
# systemctl daemon-reload
PostgreSQLデータディレクトリを初期化します。
# /usr/pgsql-10/bin/postgresql-10-setup initdb
サービスを開始して有効にします。
# systemctl enable postgresql-10
# systemctl start postgresql-10
postgresqlXX.service
ファイルを変更して$PGDATA
の場所を変更できない、または変更できない場合は、systemctlを使用する代わりに手動でクラスターを起動できます。
cd /<location_of_your_PGDATA>
su postgres -c 'pg_ctl start -D <location_of_your_PGDATA> -l <name_of_file_to_log_startup>'