この記事は「 本番環境などでやらかしちゃった人 Advent Calendar 2025」の1日目です。
はじめに
「慣れてきた頃が一番危ない」
あれ、ほんとです。
当時の私は作業にも環境にも慣れてきて、油断が出始めていました。
「いつもの作業だし、サクッと終わらせよう」
完全にそんな気持ちでした。
何が起きたのか
ECサイトの保守運用をしていた頃のことです。
本番/検証(STG)/ローカルの3環境でphpMyAdminを使っており、
なぜか3つとも同じテーマ・同じ色・同じUI。
仮に言えばこんな状況。
「URLをよく見ないと、どこで作業してるかわからない」
そんな、今思えば事故るためのレールはピカピカに敷かれた状態でした。
本来やる予定だった作業&何を間違えたのか
やりたいことは単純です。
STGのDBをエクスポートしてそれをローカルに流し込む。
こんなものは、お腹が空いていても、眠くても、コーヒー片手でも、できる作業。
…そう、できるはずでした。
その日の私は慣れた手つきで、STG環境とローカルのphpMyAdminにアクセス。
「ちゃちゃっとすませよ」くらいの気持ちで、確認を怠り作業続行。
そして、実際にやった操作はこちら。
そう。つまり、ローカルDBをバックアップし、STGを初期化したのです。
その後、エクスポートしたつもりのファイルを流し込もうとしたところ
#1062 - Duplicate entry '1' for key 'PRIMARY'
「???」
ローカルを見たらテーブルが生きてる。...なぜ?
嫌な予感がしてSTG環境のphpMyAdminを開くと、表示がやけに軽い。
データが無い。なるほど。爆速なのはそのせいだったか.....
ん!?!?!?!?データが無い!?!?!?!?!?!?????
なんとなく事態を理解し始めていた瞬間にここでクライアントからSlack通知。
「STG環境でエラー出てますが、作業中ですか?」
心臓が二段階で止まりました。
どうなったか
幸い、その日にダンプファイルを作った開発者がいたため、
その方のダンプから復旧できました。
(インフラにロールバック依頼でもよかったですが...)
後にも先にも、あの日ほど
バックアップを愛おしく思った瞬間はありません。
クライアントには、すぐに電話で状況説明をして謝罪しました。
数年一緒にプロジェクトを進めてきた関係性もあって、
「いや〜やっちゃったね(笑)」と笑って許していただけました。
STGかつ、復旧がすぐ可能だったことも大きいですが、
日頃の信頼残高が無かったらと思うと、背筋が寒くなります。
精神力 HP はごっそり削られましたが、
大事故にはならずに済みました。
教訓
・取り返しのつかない作業は勢いでしないこと
・UIテーマ統一しすぎは危険
「慣れ」は味方にも、敵にもなります。
今ではphpMyAdminのテーマはシステムや環境ごとで必ず変更させています。
これだけで「あっ安全…」と安心する体になりました。
(補足)本番環境にphpMyAdminってどうなの?
余談ですが、本番にもphpMyAdminが入っていて、
普通に操作できる状態もヒヤヒヤ案件ですよね。
当時は経験もあまりなく「まあ便利だからいいでしょ」くらいの温度感だったのですが
本番でGUIからDBを触れるというのは、リスクが高すぎます。
もちろん、組織やプロダクトの規模によって事情は様々ですが
当時の環境を思い返すと、うーーん。と唸ってしまいます。

