危険察知4 択難易度 応用

状況

不要な列を削除するリリース。手順書には切り戻し手順も書かれている。

ダブルチェッカーとして最初に止めるべき点は?

1. mysqldump app users > users_20261016.sql2. ALTER TABLE users DROP COLUMN legacy_flag;3. 新バージョン(legacy_flag を参照しない)をデプロイする4. 切り戻し: 旧バージョンのアプリを再デプロイする

正答

  1. mysqldump に --single-transaction を付けるべき
  2. ダンプファイルをサーバー外にも退避する手順がない
  3. 旧バージョンは legacy_flag を参照するので、4 だけでは列がなく動かない
  4. DROP COLUMN の前に SHOW CREATE TABLE の結果を残すべき

解説

列を削除した後に旧バージョンのアプリへ戻しても、旧アプリが参照する legacy_flag は存在しないため、エラーで動かない。切り戻し手順として成立していない。列の削除は新バージョンが安定してから別のリリースで行うか、切り戻しに列の復元(ダンプからの戻し方を含む)を書く。--single-transaction やダンプの退避も熟練者がする指摘だが、切り戻しが機能しないという根本の誤りより優先度は低い。

runbookrollbackmigration

この問題を含む 危険察知 のテストを制限時間つきで解く

危険察知クイズへ