Migrations、Metadataとは?
DBのスキーマやHasuraのメタデータをファイルとして出力でき、これを使用して全く別環境に類似環境の構築が可能。
出力したファイルは編集することで環境のカスタマイズが可能
各時点でのスキーマやメタデータをバージョン管理するので環境をロールバックすることも可能。
メタデータとは?
メタデータの中には以下の内容が含まれています。
- テーブルやVIEW
- Action
- スキーマ登録内容
- リレーションの情報など
手順
Hasura CLIのインストール
Hasura CLIを自分のPCにインストールします。
Hasuraのmetadataなどを作る。
1 |
hasura init |
metadataディレクトリ
hasura metadataファイルです。まだ構築したばかりの時はファイルはたくさんありますが中身がほぼ空の状態になります。テーブルの構造情報ではなくHasuraに対してテーブルの存在をtrackさせる役割です。
migrationsディレクトリ
database migrationファイルが保持されます。これはHasuraが裏側のPostgreSQLに対して実行したDDL(create文など)そのものになります。なので、これを別DBに実行すれば全く同じ状態のテーブルを再現できます。
移行の初期化
1 |
hasura migrate create init --from-server |
すると、「hasura/migrations」配下に「up.sql」という移行用のSQLファイルが生成されます。
metadataのエクスポート
1 |
hasura metadata export |
metadataフォルダ配下にyamlファイルが生成されます。
metadataとデータベーススキーマ情報をhasuraデータベースと同期させる
1 2 |
hasura metadata apply # metadata hasura migrate apply # migrate |
metadataの情報をHasuraに反映させます。
例えば、ローカルのdockerでHasuraを動作させている場合はdocker-compose downすればdockerインスタンスの情報が全てリセットされるので再度docker-compose upした時はHasuraの情報が消えることになりますが、metadataさえ保持していればこのコマンドを実行した際にHasuraに再度trackさせて反映させることができます。
注意点
この手順ではテーブルの中身は復元できません。もし復元したい場合はseedなどを使います。
便利コマンド
現在のhasuraの構成バージョンを見る。
1 |
hasura migrate status |
Hasuraのリアルタイムコンソールを立ち上げる。
1 |
hasura console |
Hasuraのコンソールが立ち上がります。注意点としては通常の8080で立ち上げるコンソールと違ってGUIでテーブルをいじるたびに自動でmigrationファイル(up、downなど)が生成される点です。また、metadataの中身もリアルタイムに変わります。(例えばテーブルを作成したらtablesディレクトリに新しいyamlファイルが出力されます。
この記事へのコメントはありません。