6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

検証環境のデータを消してヒヤッとした話

Posted at

初めに

とある新規開発案件にて、結合試験中に誤って検証環境のデータを消してしまった事故の話です。

その背景と事故の対処、再発防止をしたかを自分への戒めとともに、このようなことが他でも起こらないようになればと思い、共有します。

そもそもなにをやっていたのか

私はチームリーダー兼プレイヤーとして、結合試験の課題もやりつつ、プロジェクト管理などを担当していました。

そこで、課題対応をするために、検証環境からデータを抽出して、ローカルで取り込んでデバッグをしていました。
デバッグ都度、データの入れ替えか必要だったため、mysqlのTRUNCATEとデータインポートを繰り返していました。

事件は突如起こる

前述の通り、マルチタスクで作業していたため、接続先が「検証環境」になっていることに気づかない。
その状態で、以下の操作をしてしまう。

  1. A5M2で読み取り専用で接続する。
  2. TRUNCATEを実行する。
  3. データをインポートする。
  4. ローカルデバッグする。

あれ、さっきまでデバッグがうまく行っていたのに、意図する動作にならない。

ん?もしかして!!
と思い、参照先を見ると「検証環境」になっていた。

事故の処理

  • テスターチームにデータが消えてしまったことと、結合試験をストップして、単画面の確認をしてもらうように手配。(消えたのは一部テーブルのため。)
  • インフラチームにRDSバックアップからの復元を依頼する。(前日時点に戻るのは止む終えない)

負の連鎖は続く

いざ、インフラチームがRDSバックアップから復元が始まる。

エラーメールがものすごい勢いで来るぞ...
コネクションエラー?

そう、本システムでは、ジョブキューを利用して、キューの監視で定期的にDBのデータ取得が行われていました。
また、それだけでなく並列処理もあるため、約50のプロセスでひたすらコネクションエラーが発生していた。

まずいと思い、ジョブキューを停止させるとともに、アプリをメンテナンスモードに変更する。
(この対応を取るまで2時間近く経過していた)

これで一安心。

まだ終わらない負の連鎖

エラーメールは、所属の親会社ドメインのアドレスに送られてきていて、更にそれを所属会社ドメインのメールに転送していた。
(私を含め、3名のメンバーが同様に設定していた)

■参考までにメールの流れ

システムからエラーメール送信
 ↓
親会社の開発環境メールサーバー
 ↓
Gmailから転送 
 ↓
所属会社メールサーバ

それによって所属会社のメールサーバがパンクする。
メールの受信が遅い、メール送信がエラーになるなど周りがざわつく...
(親会社の方はGmailを使用していたため、Gmail側で制御されて、途中から受信間隔が遅延されるようになった)

社内システムに相談を持ちかける。
メールキューの削除はできるが、対象の絞り込みができない(=本来必要なメールが消失する可能性がある)。
また、Gmailからの転送が止まっていないため、この状況がいつまで続くかわからない。

ということで、親会社に連絡してメールキューを削除できないか相談する。
幸い、今回開発用メールサーバを使用しており、メールキューにエラーメール以外ないことがわかり、削除してもらう。

これで火消しが終わる。

再発防止

今回の事象が本番環境で起こさないために、

  • A5M2の読取専用では、TRUNCATEは実行できてしまうため、参照のみしたい場合には、そもそもDB側に参照用のユーザーを作成する。(mysqlではTRUNCATEはロールバックできない仕様)
  • DB接続が停止した際に、アプリとしてどのような作業が必要になるか把握しておく。(もちろん試験も実施する)
  • マルチタスクは極力避ける

ということをやっていきます!

最後に

1つのミスで、手戻りも含めると15名×8h=120hのコストをロストしたことになりました。

検証環境だったから、ビジネス的な影響はありませんでしたが、とても反省すべきミスでした。

今後はこのようなミスを起こさないような確認と、「データを消す」行為をするときは細心の注意をして作業しようと思いました。

皆さんもくれぐれも気をつけましょう...

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?