こんにちは。たいら(@tairaengineer2)です。
私事ですが、先日本番データベースにデータ補正をするとき、凡ミスをしましてデータ補正をすべきではないものまで更新をしてしまうという 盛大にやらかしました (-_-;)
ガチでマジでやばかったんですが、とりあえずリカバリできて、本来のデータ補正をすることができました。
そのときの自分の失敗を大反省し、二度と繰り返さないために本番データベースに更新するとき注意すべき5か条というものを作りました。
私の失敗を踏まえて作りましたので、 具体的な内容となっています。
皆さまの本番データベースを更新するときの教訓として頂ければと思います。
スポンサーリンク
- 注意すべき5か条
- 1:Whereの条件文は正しいか
- 2:テスト用のデータベースで実行した結果は正しいか
- 3:データベースのバックアップはとったか
- 4:本番データベースに実行する前、ロールバックで実行したか
- 5:もし失敗した場合、どのようにリカバリするのか
- まとめ:バックアップは必ず取る!
注意すべき5か条
- Whereの条件文は正しいか
- テスト用のデータベースで実行した結果は正しいか
- データベースのバックアップはとったか
- 本番データベースに実行する前、ロールバックで実行したか
- もし失敗した場合、どのようにリカバリするのか
この中で最も大事なのは、【データベースのバックアップはとったか】です。
ぶっちゃけこの1つを覚えていれば、他の4つを忘れてもいいです。
それくらいバックアップをとることは大事です!!
では、5か条を詳細に書いていきます!
1:Whereの条件文は正しいか
Whereの条件は合っているかは本当に大事です。
余計なものまで登録、更新、削除しないように
- Whereで設定する項目は正しいか
- Whereの条件はユニークになるようになっているか
をなめるように見て確認しましょう。
自分が書いたSQLに自信が無かったり、更新するテーブルに特殊な条件があるなど不安があるなら、上司や技術力が高い人に自分の書いたSQLを確認して頂くのは良い手です。
誰かに見て頂く場合、人は選びましょう。
(SQLをチラッと見る)
あー、うん。まあいいんじゃない?
って言うやつマジでいるんで。
そういうこと言うやつに限ってもし失敗したら、手のひらひっくり返して責め立てるので。
2:テスト用のデータベースで実行した結果は正しいか
実行するSQLは、必ず更新しても良いテスト用のデータベースで実行してみましょう。
机上の空論だったら分からなかったら、実行してみるとマジで分かることあるので。
テスト用のデータベースで更新してみると
- 文法が正しいか
- Where文の条件は足りているか
- 結果は望んだものになっているか
が分かります。
本番データベースで実行するSQLは、最低1回テスト用のデータベースで実行しましょう!
3:データベースのバックアップはとったか
バックアップをとるのマジで大事。
さっきも書いたけど、これ以外忘れていいからこれだけは覚えておいてほしい!!!
なんでここまで強くしつこいくらい書くかと言うと、もしデータ補正に失敗した場合リカバリができないからです。
人間なのでどんなに準備してもミスする可能性はあります。
なので、ミスした場合のリカバリ手段としてバックアップは必須です。
私がデータ補正に失敗しても何とかリカバリできたのは、バックアップをしていたからです。
バックアップはマジで神。
SQL Serverのデータベースバックアップの方法は、下記の記事で解説していますのでご参考ください。
【SQL Server】データベースをバックアップする方法を解説します
4:本番データベースに実行する前、ロールバックで実行したか
作成したSQLをロールバックで本番データベースで実行してみましょう。
本当に望んだ結果になるか、ここで最後の確認できます。
本番データベースに実行するのは、めちゃくちゃ責任がでかいです。
私は慎重に慎重を重ねても全然良いと思います。
そりゃ失敗したときはめちゃくちゃ怖いですからね。
ここがコミットする前の最後の砦です。
入念に確認しましょう。
5:もし失敗した場合、どのようにリカバリするのか
人間なので、誰しも失敗することはあります。
失敗したとき、どういうリカバリが必要なのかとイメージするだけでも心の余裕が違います。
もし本当に失敗しても、事前にイメージできているからすぐリカバリに動けます。
リカバリで考えることとして
- 一番最初に誰に報告すべきか
- 何をどのように更新、削除すればいいか
- リカバリするのに時間は概算でどれくらい必要か
リカバリする手段を準備しておくのがベストですが、イメージするだけでも全然OKです。
私は失敗したときのリカバリイメージをしていなかったから、失敗したとたん頭が真っ白。
思考力が激減してもう考えがまとまらず、キーボードを叩く指が震えました。
心臓がガチで全力疾走した後のような速さでバクバクしました。。。
同僚から
まず○○さんに報告。
そして更新しなくてもいいけど、更新してしまったデータを調査。
そのデータに対して、バックアップ使ってリカバリしないと
って超具体的な指示もらわないと、マジで動けないレベルでした。
失敗したあとどう動くのかをイメージするのマジで大事。
スポンサーリンク
まとめ:バックアップは必ず取る!
以上が先日私がやらかした失敗から考えて作った5か条でした。
まとめなのでもう1回書きます。
- Whereの条件文は正しいか
- テスト用のデータベースで実行した結果は正しいか
- データベースのバックアップはとったか
- 本番データベースに実行する前、ロールバックで実行したか
- もし失敗した場合、どのようにリカバリするのか
【データベースのバックアップはとったか】だけは覚えておいてください。
この記事を読んでいるあなたが、私のように本番データベースで失敗をしないことを願っております<(_ _)>