ApsaraDB for RDSへのマイグレーション

sequelizeを使ってApsaraDB for RDSにマイグレーションを流します。

ApsaraDB for RDSはちょっとお金がかかって、日本リージョンは1日120円くらいです。1ヶ月だと4000円ですね。個人利用だと地味に効いてくる値段です。

準備

準備として以下を行います。多分特に迷うところはなく画面をポチポチすれば大丈夫です。

ホスト名は「データベースの接続」でインターネット接続を有効化すると表示されます。 f:id:asmsuechan:20180902100906p:plain

ホワイトリストも忘れないように設定しましょう。

マイグレーションする

DBを作成したので今度はテーブルを作成します。sequelizeマイグレーションできるようにしましょう。

$ yarn add global sequelize-cli
$ yarn add sequelize
$ yarn add mysql2
$ sequelize init

Sequelize CLI [Node: 10.6.0, CLI: 4.1.1, ORM: 4.38.0]

Created "config/config.json"
Successfully created models folder at "/Users/ryouta/src/kumonotami-migration/models".
Successfully created migrations folder at "/Users/ryouta/src/kumonotami-migration/migrations".
Successfully created seeders folder at "/Users/ryouta/src/kumonotami-migration/seeders".

config/config.jsonを編集して先ほど調べたホスト名、ユーザー名、パスワードを入力します。

{
  "development": {
    "username": "myapp_test",
    "password": "xxxxxxxxxxxxxx",
    "database": "myapp_db_test",
    "host": "xxxxxxxxxxxxx.mysql.japan.rds.aliyuncs.com",
    "dialect": "mysql"
  }
}

次に新しくテーブルを作ります。

$ sequelize model:create --underscored --name user --attributes "sub:string,deleted_at:date"

Sequelize CLI [Node: 10.6.0, CLI: 4.1.1, ORM: 4.38.0]

New model was created at /Users/ryouta/src/kumonotami-migration/models/user.js .
New migration was created at /Users/ryouta/src/kumonotami-migration/migrations/20180902014424-user.js .

これでマイグレーションファイルとモデルファイルが新規作成されます。これでよければマイグレーションを実行します。

$ sequelize db:migrate --env development

Sequelize CLI [Node: 10.6.0, CLI: 4.1.1, ORM: 4.38.0]

Loaded configuration file "config/config.json".
Using environment "development".
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules/sequelize/lib/sequelize.js:242:13
== 20180902014423-create-user: migrating =======
== 20180902014423-create-user: migrated (0.087s)

MySQL Workbenchで確認してみたところ、ちゃんと作成されていることがわかりました。 f:id:asmsuechan:20180902110414p:plain