YugabyteDB(OSS版)をインストールしたあと、まず最初にやっておくべき確認ポイントをまとめた。
この記事では、付属のインターフェースである ysqlsh を用いて、デフォルトのデータベース・ユーザ・拡張機能・テーブルスペースなどを確認する方法を紹介する。
YugabyteDB は PostgreSQL 互換を謳っているため、初期のDB構成やコマンド体系もほぼ PostgreSQL と同じである。しかし、分散データベース固有の挙動や制約もあるため、最初にこれらを押さえておくと構造理解が一気に進む。
1. ysqlsh にログインする
YugabyteDB の YSQL(PostgreSQL 互換レイヤー)に接続するには、ターミナルから以下のコマンドを実行する。
./bin/ysqlsh -h 10.x.x.x -U yugabyte -d yugabyte
2. デフォルトで作成されているデータベースを確認する
無事にログインできたら、まずはメタコマンド \l を実行して、最初から存在しているデータベースの一覧を確認する。
yugabyte=# \l
■ 実行結果(データベース一覧)
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | ロールプロバイダー | アクセス権限 -----------------+----------+------------------+----------+-------------------+--------------------+----------------------- postgres | postgres | UTF8 | C | en_US.UTF-8 | libc | system_platform | postgres | UTF8 | C | en_US.UTF-8 | libc | template0 | postgres | UTF8 | C | en_US.UTF-8 | libc | =c/postgres + | | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | en_US.UTF-8 | libc | =c/postgres + | | | | | | postgres=CTc/postgres yugabyte | postgres | UTF8 | C | en_US.UTF-8 | libc | (5 行)
✔ インストール直後に存在する主なDB:
yugabyte:メインとなるデータベース。実際のアプリケーション開発ではこのDBを使うのが基本となる。
postgres:PostgreSQL互換を維持するための管理用データベース。
template0 / template1:新しくデータベースを作成する際の雛形となるテンプレートDB。
※YugabyteDBはPostgreSQL互換レイヤーを持っているため、初期のシステムデータベースの構成もほぼPostgreSQLの標準状態を踏襲している。
3. デフォルトユーザを確認する
次に、データベースに定義されている初期ロール(ユーザ)を \du コマンドで確認する。
yugabyte=# \du
■ 実行結果(ロール一覧)
ロール一覧 ロール名 | 属性 | 所属グループ --------------+--------------------------------------------------------------------------------------------------------------+-------------- postgres | スーパーユーザー, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {} yb_db_admin | 継承なし, ログインできません | {} yb_extension | ログインできません | {} yb_fdw | ログインできません | {} yugabyte | スーパーユーザー, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
✔ 主な初期ユーザ:
yugabyte:初期接続で利用した最高権限を持つスーパーユーザ。
postgres:PostgreSQL互換の文脈から存在する管理ユーザ。
※セキュリティを確保するため、初期管理者ユーザー(yugabyte)をそのままアプリケーションの接続に常用するのは避け、必要に応じて最小権限を割り当てたアプリ専用のユーザーを別途作成するのがベストプラクティスだ。
4. 拡張(extensions)の確認
YugabyteDB は PostgreSQL 互換ではあるものの、すべてのシステム拡張機能がそのまま利用できるわけではない。利用可能な拡張機能をシステムカタログから確認する。
SELECT name, default_version, comment FROM pg_available_extensions;
■ 出力される主な注目機能
plpgsql | 1.0 | PL/pgSQL procedural language citext | 1.6 | data type for case-insensitive character strings earthdistance | 1.1 | calculate great-circle distances on the surface of the Earth (・・・以下略・・・)
✔ 事前に確認しておきたい主要な拡張:
pg_stat_statements:SQLの実行統計を採取する、パフォーマンスチューニングの必須機能。
uuid-ossp:分散環境で主キーとして多用されるUUIDを生成する関数群。
pgcrypto:データの暗号化・ハッシュ化をサポート。
yb_fdw:YugabyteDB専用の外部データラッパ(Foreign Data Wrapper)。
※100%すべてのPostgreSQLプラグインがそのまま動くわけではないため、利用予定の拡張機能が初期状態でサポートされているかは、開発の最初に必ずチェックしておこう。
5. テーブルスペースの確認
データベース内の物理配置を司るテーブルスペースを確認する。
SELECT oid, spcname FROM pg_tablespace;
■ 実行結果
oid | spcname
------+------------
1663 | pg_default
1664 | pg_global
✔ 各領域の仕組み:
pg_default:ユーザーが作成する通常のテーブルやインデックスが格納される標準領域。通常のPostgreSQLではOS上の特定のディレクトリに紐づくが、YugabyteDBでは分散ストレージである「DocDB」内部の論理的な領域として扱われる。
pg_global:ユーザー情報やシステムカタログなど、クラスター全体で共有・同期されるメタデータ専用の領域。
6. ノード構成(クラスタ情報)の確認
YugabyteDBの本領である分散構成(クラスタ)が正常に機能しているかを、専用の管理ツール yb-admin を使って外側から確認する。
① Master(マスター)ノードの確認
./bin/yb-admin --master_addresses 10.x.x.x:7100 list_all_masters
Master UUID RPC Host/Port State Role Broadcast Host/Port c3f22f44f3864710a8801fa2b41d082f 10.x.x.x:7100 ALIVE LEADER 10.x.x.x:7100
State = ALIVE:Masterが稼働中であることを示す。
Role = LEADER:このMasterがクラスタのメタデータを統括するリーダーであることを示す(単一ノード構成時は1台が自動的にLEADERになる)。
② Tablet Server(データノード)の確認
./bin/yb-admin --master_addresses 10.x.x.x:7100 list_all_tablet_servers
Tablet Server UUID RPC Host/Port Heartbeat delay Status Reads/s Writes/s Uptime SST total size SST uncomp size SST #files Memory Broadcast Host/Port 4e9cc709d23649ac8d67065da18e1211 10.x.x.x:9100 0.81s ALIVE 0.00 0.20 1028 0 B 0 B 0 54.11 MB 10.x.x.x:9100
Status = ALIVE:実際のデータ読み書きを受け持つデーモンが正常稼働している状態。
Heartbeat delay:Masterとの疎通確認(心拍)の間隔。1秒未満など、極めて短く維持されていることが正常の証拠である。
7. ysqlsh 内での基本メタコマンドまとめ(おまけ)
YugabyteDBを操作する上で、最低限これだけは最初に暗記しておきたいメタコマンドの一覧を以下に記す。
\l -- データベース一覧を表示
\c db名 -- 指定したデータベースへ接続を切り替え
\dt -- 現在のDB内のテーブル一覧を表示
\d 表名 -- 指定したテーブルのスキーマ(定義)を表示
\du -- ロール(ユーザー)および付与された権限の一覧を表示
\df -- 定義されている関数(ファンクション)の一覧を表示
まとめ
インストール直後に確認すべきは、以下の5点である。
- デフォルトDB(
\l)
- デフォルトユーザ(
\du)
- 利用可能な拡張(
pg_available_extensions)
- テーブルスペースの実体(
pg_tablespace)
- クラスタ内のノード構成(
yb-admin)
これらをはじめに把握しておくことで、単なるリレーショナルDBとしてではなく、「PostgreSQLのガワを被った堅牢な分散データベース」としての素性をスムーズに掴むことができる。初期設定や運用の第一歩として活用してほしい。