initdb — PostgreSQLのデータベースクラスタを新しく作成する
initdb
[option
...] [ --pgdata
| -D
] directory
《機械翻訳》initdb
は新しいデータベースクラスタ.PostgreSQL
《マッチ度[88.574538]》データベースクラスタの作成には、データベースのデータを保存するディレクトリの作成、共有カタログテーブル(特定のデータベースではなく、クラスタ全体に所属するテーブル)の生成、そしてpostgres
データベース、template1
データベース、template0
データベースの作成といった作業が含まれます。
postgres
データベースは、ユーザ、ユーティリティ、サードパーティ製アプリケーションのデフォルトデータベースとしての使用を意図したものです。
template1
とtemplate0
は、後のCREATE DATABASE
コマンドでコピーされる元のデータベースを意図しています。
新しいデータベースを作成する際は、template1
データベースの全ての内容がコピーされます。
template0
を修正してはいけませんが、template1
にはオブジェクトを追加でき、そのオブジェクトは後に生成した各データベースにデフォルトでコピーされます。
より詳細については23.3を参照してください。
《機械翻訳》データベースクラスタの作成は、クラスタデータが存在するディレクトリの作成、共有カタログテーブルの生成(特定のデータベースではなくクラスタ全体に属する表)、およびPOSTGRES
、テンプレート1
およびテンプレート0
データベースの作成で構成されます。
POSTGRES
データベースは、ユーザー、ユーティリティおよびサード・パーティ・アプリケーションでの使用を目的としたデフォルトデータベースです。
テンプレート1
およびテンプレート0
は、ソースデータベースを後のCREATEデータベース
コマンドでコピーすることを目的としています。
テンプレート0
は変更しないでください。
ただし、オブジェクトをテンプレート1
に追加することはできます。
このオブジェクトは、デフォルトによって後で作成されるデータベースにコピーされます。
詳細は23.3を参照してください。
initdb
は指定されたデータディレクトリを作成しようと試みますが、そのデータディレクトリの親ディレクトリの所有者がrootであるなど、権限がないことがあります。
このような場合、まず、空のデータディレクトリをrootで作成し、chown
を使ってそのディレクトリの所有権限をデータベースのユーザに変えてください。
次にsu
を使ってデータベースユーザとなり、initdb
を実行します。
initdb
は、サーバプロセスの所有者となるユーザによって実行されなければなりません。
initdb
によって作成されるファイルやディレクトリにサーバがアクセスできる必要があるからです。
サーバをrootとして実行することはできませんので、rootでinitdb
を実行してはいけません
(実際には、実行しようとしても拒否されます)。
セキュリティ上の理由から、デフォルトではinitdb
により作られた新しいクラスタはクラスタの所有者だけがアクセスできます。
--allow-group-access
により、クラスタの所有者と同じグループのユーザがクラスタ内のファイルを読めるようになります。
これは非特権ユーザとしてバックアップを実行するのに有用です。
《機械翻訳》initdb
は、データベースクラスタのデフォルトロケールとキャラクタセットエンコーディングを初期化します。
これらは、データベースの作成時に各に対して個別に設定することもできます。
initdb
は、他のすべてのデータベースのデフォルトとして機能するテンプレートデータベースのこれらの設定を決定します。
《機械翻訳》デフォルトごとに、initdb
はロケールプロバイダlibc
を使用します(24.1.4を参照してください)。
libc
ロケールプロバイダは環境からロケール設定を取得し、ロケール設定からエンコーディングを決定します。
《マッチ度[86.792453]》クラスタに別のロケールを選択するには、--locale
オプションを使用します。
また、個々のロケールカテゴリに値を設定するための個々のオプション--lc-*
もあります(下記参照)。
異なるロケールカテゴリの設定に一貫性がないと、無意味な結果になることがあるので、注意して使用してください。
《機械翻訳》クラスタに別のロケールを選択するには、オプション--ロケール
を使用します。
また、個々のオプション--lc-*
と--icu-ロケール
(下記参照)を使用して、個々のロケールカテゴリの値を設定することもできます。
ノートでは、異なるロケールカテゴリに対して一貫性のない設定を行うと、無意味な結果が生じる可能性があるため、注意して使用する必要があります。
《マッチ度[61.802575]》また、ICUライブラリを使用してロケールサービスを提供することもできます。
(これも後で作成されるデータベースのデフォルトを設定するだけです。)
このオプションを選択するには、--locale-provider=icu
を指定します。
適用する特定のICUロケールIDを選択するには、--icu-locale
オプションを使用します。
実装上の理由とレガシーコードをサポートするために、initdb
はICUロケールプロバイダが使用されている場合でもlibcロケール設定を選択し初期化することに注意してください。
《機械翻訳》また、initdb
はICUライブラリを使用して、--locale-provider=icu
を指定することにより、ロケールサービスを提供できます。 サーバはICUをサポートしている必要があります。
適用する特定のICUロケールIDを選択するには、オプション--icu-locale
を使用します。 実装上の理由とレガシーコードのサポートのために、initdb
はICUロケールプロバイダが使用されている場合でも、libcロケール設定を選択して初期化します。
initdb
を実行すると、選択したロケール設定を出力します。
複雑な要件がある場合や、複数のオプションを指定した場合は、結果が意図したものと一致するのを確認することをお勧めします。
ロケール設定の詳細については24.1を参照してください。
デフォルトの符号化方式を変更するには、--encoding
オプションを使用します。
詳細は24.3に記載しています。
-A authmethod
--auth=authmethod
#
このオプションは、pg_hba.conf
で使用されるローカルユーザーのデフォルトの認証方法(host
およびlocal
行)を指定します。
有効な値の概要については21.1を参照してください。
initdb
は、非レプリケーションおよびレプリケーションの接続について、指定の認証方式を使うエントリをpg_hba.conf
に事前に作成します。
システムのすべてのローカルユーザが信頼できるわけではない場合は、trust
を使用しないでください。
インストールを簡単にするためにtrust
がデフォルトになっています。
--auth-host=authmethod
#
このオプションはpg_hba.conf
にてTCP/IP接続経由のローカルユーザ用に使用される認証方法(host
行)を指定します。
--auth-local=authmethod
#
このオプションはpg_hba.conf
にてUnixドメインソケット接続経由のローカルユーザ用に使用される認証方法(local
行)を指定します。
-D directory
--pgdata=directory
#
《マッチ度[83.870968]》このオプションは、データベースクラスタを格納すべきディレクトリを指定します。
initdb
が必要とする情報はこれだけですが、環境変数PGDATA
を設定しておけば、このオプションの指定を省略できます。
この方法は、後に同じ変数を使用してデータベースサーバ(postgres
)がデータベースディレクトリを参照できるので、便利です。
《機械翻訳》このオプションは、データベースクラスタを保存するディレクトリを指定します。
これはinitdb
が必要とする唯一の情報ですが、PGDATA
環境変数を設定することで書き込みを避けることができます。
これは、データベースサーバ(POSTGRES
)が後で同じ変数でデータディレクトリを見つけることができるので便利です。
-E encoding
--encoding=encoding
#《機械翻訳》テンプレートデータベースのエンコーディングを選択します。 これは、後で作成するデータベースのデフォルトエンコーディングにもなります。 ただし、その時点で上書きする場合を除きます。 PostgreSQLサーバでサポートされる文字セットについては、24.3.1を参照してください。
《機械翻訳》デフォルト別に見ると、テンプレートデータベースエンコーディングはロケールに由来しています。
--no-locale
が指定されている場合(または同等に、ロケールがC
またはPOSIX
の場合)、デフォルトはICUプロバイダーではUTF8
、libc
プロバイダーではSQL_ASCII
になります。
-g
--allow-group-access
#
クラスタの所有者と同じグループのユーザが、initdb
により作られたクラスタファイルすべてを読むことを許可します。
WindowsではPOSIX形式のグループパーミッションをサポートしませんので、このオプションは無視されます。
--icu-locale=locale
#《機械翻訳》ロケールプロバイダを使用する場合に、ロケールサポートを指定します。 ICUは24.1で記述されます。
--icu-rules=rules
#《機械翻訳》照合順序照合順序の動作をカスタマイズするための追加のデフォルトルールを指定します。 これはICUでのみサポートされています。
-k
--data-checksums
#
I/Oシステムによる破損検知を補助するために、データページにおいてチェックサムを使用します。
これがないと警告もされません。
チェックサムを有効にすると、認知できる程度の性能低下が発生する可能性があります。
設定した場合、すべてのデータベースにおいて、すべてのオブジェクトに対してチェックサムが計算されます。
チェックサムの失敗はすべてpg_stat_database
ビューで報告されます。
詳細については30.2を参照してください。
--locale=locale
#
データベースクラスタ用のデフォルトのロケールを設定します。
このオプションを指定しない場合は、initdb
を実行している環境のロケールが継承されます。
ロケールサポートについては24.1で説明します。
--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale
#
--locale
と似ていますが、指定したカテゴリのロケールのみを設定します。
--no-locale
#
--locale=C
と同じです。
--locale-provider={libc
|icu
}
#
《マッチ度[72.727273]》このオプションは、新しいクラスタで作成されたデータベースのロケールプロバイダを設定します。
新しいデータベースが後で作成されるときに、CREATE DATABASE
コマンドで上書きできます。
デフォルトはlibc
です。
《機械翻訳》このオプションは、新しいロケールで作成されたデータベースのクラスタプロバイダを設定します。
これは、その後新しいデータベースが作成されるときに、CREATEデータベース
コマンドで上書きできます。
デフォルトはlibc
です(24.1.4を参照)。
-N
--no-sync
#
デフォルトではinitdb
はすべてのファイルが安全にディスクに書き出されるまで待機します。
このオプションを使うとinitdb
は待機せずに返るようになり、より高速になりますが、後でオペレーティングシステムがクラッシュした場合にデータディレクトリが破損状態になってしまう可能性があります。
通常、このオプションは試験用では有用ですが、実用のインストレーションを作成する際に使用すべきではありません。
--no-instructions
#
デフォルトではinitdb
は出力の最後にクラスタを起動する手順を表示します。
このオプションを使うと、これらの手順が省略されます。
これは主にinitdb
をプラットフォーム固有の動作でラップするツールで、これらの手順が間違っている可能性がある場合に使用することを目的としています。
--pwfile=filename
#
《マッチ度[81.751825]》initdb
はデータベーススーパーユーザのパスワードをこのファイルから読み取ります。
このファイルの最初の行がパスワードとして解釈されます。
《機械翻訳》initdb
に、ファイルからブートストラップスーパーユーザのパスワードを読み取らせます。
ファイルの最初の直線がパスワードと見なされます。
-S
--sync-only
#
すべてのデータベースファイルを安全にディスクに書き出し、終了します。
これは通常のinitdbの操作をまったく行いません。
通常、このオプションは、fsyncをoff
からon
に変更した後の信頼できるリカバリを確実にするのに有用です。
-T config
--text-search-config=config
#デフォルトの全文検索設定を設定します。 詳細についてはdefault_text_search_configを参照してください。
-U username
--username=username
#《機械翻訳》ブートストラップスーパーユーザのユーザ名前を選択します。 これは、クラスタ所有者の名前にデフォルト設定されます。
-W
--pwprompt
#
《マッチ度[80.708661]》initdb
にデータベースのスーパーユーザ権限を与えるためのパスワード入力のプロンプトを表示させます。
パスワード認証を行うつもりがない場合は必要ありません。
このオプションを指定しても、パスワードの設定を行わない限りパスワード認証は行われません。
《機械翻訳》initdb
プロンプトをパスワードにして、ブートストラップスーパーユーザを与えます。
パスワードプランを使用するときに認証を使用しない場合、これは重要ではありません。
そうしないと、パスワードを設定するまでパスワード認証を使用できません。
-X directory
--waldir=directory
#このオプションは先行書き込みログの格納ディレクトリを指定します。
--wal-segsize=size
#WALセグメントサイズをメガバイト単位で設定します。 これはWALログの個々のファイルの大きさです。 デフォルトの大きさは16メガバイトです。 値は1から1024の間の2の冪でなければなりません。 このオプションは初期化の際にのみ設定することができ、後で変更することはできません。
WALログのシッピングやアーカイブの粒度を制御するために、この大きさを調整することは有用でしょう。 また、大量のWALのあるデータベースでは、ディレクトリ当たりのWALファイルの数だけでパフォーマンスや管理の問題となり得ます。 WALファイルの大きさを増やせば、WALファイルの数は減るでしょう。
この他にも、使用頻度は下がりますが、下記のオプションが使用可能です。
-c name
=value
--set name
=value
#
Forcibly set the server parameter name
to value
during initdb
,
and also install that setting in the
generated postgresql.conf
file,
so that it will apply during future server runs.
This option can be given more than once to set several parameters.
It is primarily useful when the environment is such that the server
will not start at all using the default parameters.
-d
--debug
#
ブートストラップバックエンドからのデバッグ情報と、一般の利用者にはおそらく不要なその他の情報を出力します。
ブートストラップバックエンドとはinitdb
がカタログテーブルを作成する際に使用するプログラムです。
このオプションはうんざりするようなログを大量に出力します。
--discard-caches
#
debug_discard_caches=1
オプションをつけてブートストラップバックエンドを実行します。
これは非常に長い時間がかかるため、難解なデバッグでのみ使用されます。
-L directory
#
データベースクラスタを初期化する際に、initdb
が参照すべき入力ファイルを指定します。
これは通常必要ありません。
明示的に指定する必要がある場合は、その時に指定するよう要求されます。
-n
--no-clean
#
デフォルトでは、initdb
を実行中にエラーが発生し、データベースクラスタを完成できなかった場合に、そのエラーが発生する前に作成された全てのファイルを削除します。
このオプションを指定すると、これらのファイルが削除しないで残されるので、デバッグの際にはとても便利です。
その他のオプションを以下に示します。
initdb
はpg_ctl initdb
経由でも呼び出すことができます。