kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

DBスキーマの管理 phinx

DBののスキーマ管理をいままでやっていなかったため、複数人での開発になりDBへの変更がよくわからない状態になってしまったので、本格的にマイグレーションをいれてみました。

Phinx

Phinx マイグレーション - 3.6

Introduction — Phinx 0.9.2 documentation

github.com

コードでDBへのスキーマ反映やデータ追加などが可能です。ロールバックをすることで、追加したカラムを削除したりもできます。

ようやく手を出してみましたが、やってよかったです。

簡単でしたし、なんとか運用も回っているみたいです。

使う手順

マニュアルに書いてある通りで動いたので、いいマニュアルですね。

curl -sS https://getcomposer.org/installer | php
php composer.phar require robmorgan/phinx
php composer.phar install
vendor/bin/phinx

テンプレートを作成します。

vendor/bin/phinx create {処理名}

upとdown関数の内容を書き、migrateすると反映されます。

どういう管理がされるか

適用するdatabaseに管理用のテーブルが追加されます。

デフォルトであれば、phinxlogテーブルです。

反映した後にデータをみればわかりますが、処理日時とどの処理のファイルを反映したかが保存されています。

複数人で作成した場合の懸念

テンプレートを先に作ったけど、リリースは後になるケースはどうなる?と思い、テストしてみましたが作られるファイルに記載される日付自体の影響はなく、管理テーブルにまだなければ処理をしてくれます。

安心して複数人で使用できます。

環境ごとの設定

構成設定 - 3.6

phinx.ymlに記載

paths:
    migrations: '%%PHINX_CONFIG_DIR%%/db/migrations'
    seeds: '%%PHINX_CONFIG_DIR%%/db/seeds'
 
environments:
    default_migration_table: phinxlog
    default_database: development
    production:
        adapter: pgsql
        host: 192.168.33.10
        name: myproject
        user: user
        pass: 'password'
        port: 5432
        charset: utf8
  
    development:
        adapter: pgsql
        host: localhost
        name: myproject
        user: user
        pass: 'password'
        port: 5432
        charset: utf8
 
version_order: creation

環境別の対処 ymlファイルの設定を反映

vendor/bin/phinx migrate -e production
vendor/bin/phinx migrate -e development

実は自身では運用でそこまで使っていない

最近コードをちゃんと書いていないため、仕組みだけ用意してあとは任せた!!状態で運用を動かしてみましたが、いろいろ改善しながらうまくやってくれているようです。

なかなかこういう状況を味わったことがなかったので、自分が作ってきたシステムの運用を別の人が担当し動いているのは面白いです。不安もありますが、任せたのであまり関わらずにいこうかと思います。

とにかく仕組みを整えてあげることが今の使命かな。

本当に色々と見る必要がありますね。知識不足がきついです。