Dumpは気をつけろ!本番環境でやらかした...
DBのDumpとるときは気つけや
実務でやらかしたこと
今回は自分が本番環境でDumpとってやらかしたことについて記載します。
あなたもこれを読めば同じミスはしないでしょう。
Dumpとは?
まず初めに。「Dump」とは何かを説明します。
ダンプとは、パソコンの実行状態やデータベースなどの情報をバックアップすることです。
たとえば、データベースのダンプの場合は、対象のDBの中身丸ごと保存することで、情報を保護することができます。もしデータが消えたり、予期せぬ事態が発生して大量にデータが書き換わってしまった場合にダンプ取得しておくことで復旧が可能です。
本番環境のDumpは気をつけろ
ここからが実際に私が起こしてしまった障害の紹介です。
当時、当日の売り上げ情報を取得するAPIの処理速度改善のためにSQLチューニングの作業を行なっていました。ローカル環境でソース修正していざ動作確認しようとなった時に、本番とローカルのデータ量があまりにも違いすぎて、パフォーマンスが改善されているか判断しずらいため、本番のデータをDumpとってローカルに取り入れようとしました。
MysqlWorkbenchでダンプをとり始め、しばらくすると本番のデータ量が多いためタイムアウトになりました。本番環境なので、実際に運用されており、ユーザーが操作を行なったがローディング状態が続いて動かないという問い合わせがありました。
これはDumpが実際の処理にどのように影響するのかを把握していない+ユーザーが使用時間内にダンプ取得しようとした浅はかな行動が招いたものです。
当時は半年ほどの経験のためそこまで考えることがむずかしかったのかとは思いますが、皆さんは本番環境のダンプをとるときは警戒して行いましょう。
最低限ここは確認しよう
本番環境のダンプをとる際に、個人的に最低限気をつけるべき点が下の3点です。
・本番のダンプが本当に必要なのか?
他の環境のデータで問題ないのであれば、本番からはダンプ取らない
・データ量はどれくらいか
・営業時間外に行うか
Discussion