章: 第6章: セキュリティと本番運用
本番リリース後に「あの設定を確認していなかった」と後悔した経験はありませんか?
障害の多くは、機能のバグよりも「バックアップが取れていなかった」「スロークエリの監視がなかった」「権限が過剰だった」といった設定漏れや運用の穴から発生します。本番に出す前にチェックリストを持っておくことで、こうした抜け漏れを事前に防ぐことができます。
MySQL本番運用のチェックリストをカテゴリ別に整理し、毎回のリリース前に確認する習慣を作りましょう。
本番運用チェックリスト:カテゴリ別
| カテゴリ | チェック項目 | 確認コマンド・手段 |
| バックアップ | 定期バックアップが自動取得されているか | mysqldump / クラウドスナップショット |
| バックアップ | 復元テストを実施済みか | バックアップから別環境で復元して確認 |
| 監視 | スロークエリログが有効か | SHOW VARIABLES LIKE 'slow_query_log'; |
| 監視 | 監視アラートの通知先が有効か | CloudWatch / Datadog / PagerDuty など |
| セキュリティ | DBユーザーの権限が最小化されているか | SHOW GRANTS FOR 'user'@'host'; |
| セキュリティ | rootのリモートログインが無効か | SELECT host, user FROM mysql.user; |
| パフォーマンス | 主要テーブルのインデックスが妥当か | EXPLAIN でフルスキャンがないか確認 |
| 設計 | 文字コードが utf8mb4 に統一されているか |
SHOW FULL COLUMNS FROM テーブル名; |
| 設計 | NULLの設計意図がドキュメント化されているか | テーブル定義書・コメント |
| 運用 | マイグレーションのロールバック手順があるか | 手順書・スクリプト |
チェックポイント: チェックリストは「一度作って終わり」ではありません。障害が起きたとき・新しいリスクを発見したときに項目を追加し、チームで定期的に見直す運用を続けてください。
実際のコードサンプル
# MySQL本番チェック
# - [ ] バックアップ取得と復元テストが完了
# - [ ] スロークエリログを監視中
# - [ ] 権限が最小化されている
# - [ ] 主要テーブルのインデックスが妥当
# - [ ] 監視アラートの通知先が有効
まとめ & 次のステップ
- バックアップ・監視・セキュリティ・パフォーマンスの4カテゴリを毎回のリリース前に確認する
- 「復元テスト未実施のバックアップ」は存在しないのと同じ。定期的に復元テストを実施する
- 監視アラートは設定するだけでなく、通知先が有効かを確認する
- チェックリストはチームで共有し、属人化しない運用フローに組み込む
- 障害が起きたらチェックリストを更新し、同じ失敗を繰り返さない仕組みを作る
これでMySQL上級編の第6章「セキュリティと本番運用」が完了です。権限管理・SQLインジェクション対策・スロークエリ改善・レプリケーションという実務直結の知識を体系的に習得できました。ここまで学んだ知識を実際のプロジェクトに活かしてみてください。