0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PostgreSQLのデータベースクラスタ内のサブディレクトリや設定ファイルの役割(2、PG_VERSION・baseの役割)

Last updated at Posted at 2020-04-29

はじめに

Dockerを使ってPostgreSQLのデータべースクラスタのサブディレクトリ・設定ファイルの役割を理解するのが目的です

使用コンテナ

・postgres:11-alpin

PostgreSQLのデータベースクラスタのディレクトリ構成は下記のような構造になっています。

$ tree -L 1
data
├── PG_VERSION 
├── base          #データベースごとのサブディレクトリを保有するサブディレクトリ
├── global        #pg_databaseのようなクラスタで共有するテーブルを保有するサブディレクトリ
├── pg_commit_ts  #トランザクションのコミット時刻のデータを保有するサブディレクトリ
├── pg_dynshmem   #動的共有メモリサブシステムで使われるファイルを保有するサブディレクトリ
├── pg_hba.conf   #PostgreSQL に接続するクライアントの認証に関する設定を記述するファイル
├── pg_ident.conf #Ident認証のユーザー名をPostgreSQLのロール名にマッピングするためのファイル
├── pg_logical    #論理デコードのための状態データを保有するサブディレクトリ
├── pg_multixact  #マルチトランザクション状態のデータを保有するサブディレクトリ(共有行ロックで使用される)
├── pg_notify     #LISTEN/NOTIFY状態データを保有するサブディレクトリ
├── pg_replslot   #レプリケーションスロットデータを保有するサブディレクトリ
├── pg_serial     #コミットされたシリアライザブルトランザクションに関する情報を保有するサブディレクトリ
├── pg_snapshots  #エキスポートされたスナップショットを保有するサブディレクトリ
├── pg_stat       #統計サブシステム用の永続ファイルを保有するサブディレクトリ
├── pg_stat_tmp   #統計サブシステム用の一時ファイルを保有するサブディレクトリ
├── pg_subtrans   #サブトランザクションの状態のデータを保有するサブディレクトリ
├── pg_tblspc     #テーブル空間へのシンボリックリンクを保有するサブディレクトリ
├── pg_twophase   #プリペアドトランザクション用の状態ファイルを保有するサブディレクトリ
├── pg_wal        #WAL(ログ先行書き込み)ファイルを保有するサブディレクトリ
├── pg_xact       #トランザクションのコミット状態のデータを保有するサブディレクトリ  
├── postgresql.auto.conf #ALTER SYSTEMにより設定された設定パラメータを格納するのに使われるファイル
├── postgresql.conf #PostgreSQLのパラメータを設定するファイル
├── postmaster.opts #最後にサーバを起動した時のコマンドラインオプションを記録するファイル
└── postmaster.pid  #現在のpostmasterプロセスID(PID)、クラスタのデータディレクトリパス、postmaster起動時のタイムスタンプ、ポート番号、共有メモリのセグメントIDを記録するロックファイル

PG_VERSIONの役割

PG_VERSIONはPostgreSQLのメジャーバージョンを記録しています

$ cat PG_VERSION
11

バージョン11のPostgreSQLなので11と出力されています。

baseの役割

baseはデータベースごとのサブディレクトリを保有するサブディレクトリ
新しく作成・追加したデータベースを追加した際に、そのデータベース対応したディレクトリが作成されます。
実際に作成してみると、どうなるか確認してみましょう。

まずbaseの中に入っているサブディレクトリを確認します

$ ls /var/lib/postgresql/data/base
1      13116  13117

初期の状態では3つのディレクトリが存在していますが、これがそれぞれ、テンプレートデータベースであるpostgres・template0・template1を表しています。
ここに、createdbで新しいDBを作成します。

$ createdb -O postgres test

$ ls /var/lib/postgresql/data/base
1      13116  13117  24577

createdb後にサブディレクトリが追加されています。
この24577という数字がデータベースOIDに当たり、testという名前のデータベースの実体に該当します。

終わりに

今回のように、PostgresSQLへの操作がデータベースクラスタへどう変化を起こすかを見て行けたらと思います。

1、ディレクトリ構造を確認
2、PG_VERSION、baseの役割
3、globalの役割
4、pg_commit_tsの役割
5、pg_dynshmemの役割

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?