01_基礎

Section 2 — 基礎編:DB の運用管理

📘 対象: 全員(必読) ゴール: 接続管理、監視、バックアップ・リカバリ、コスト最適化、自動化の基本概念を理解する。


1. DB 接続とアクセス管理

接続管理の基本要件

Cloud SQL のアクセスフロー

┌─ App / User ─┐                           ┌──────────────┐
│ (Service Acct │── ① IAM トークン取得 ────│   IAM        │
│  + Workload   │                           └──────────────┘
│  Identity)    │
└───────────────┘
       │
       │ ② Auth Proxy 起動 (トークン渡す)
       ↓
┌─────────────┐                            ┌──────────────┐
│ Auth Proxy  │── ③ TLS + IAM 認証 ──────│ Cloud SQL    │
│ (sidecar)   │                            └──────────────┘
└─────────────┘

IAM DB 認証 のメリット

DB ユーザー管理(標準的なベストプラクティス)


2. 監視 (Monitoring) の基礎

Cloud Monitoring の階層

Cloud Monitoring
├─ メトリクス (Metrics)        — 数値時系列データ
├─ ダッシュボード (Dashboards) — メトリクス可視化
├─ アラート (Alerting)          — 閾値超過で通知
├─ アップタイムチェック         — 外部からのヘルスチェック
└─ Uptime SLO/SLA               — 信頼性目標管理

DB バイタル(必ず監視すべき項目)

メトリクス 何を見るか 異常値の例
CPU 利用率 コンピュート負荷 > 80% が継続
メモリ利用率 RAM の使用状況 > 90% が継続
ストレージ利用率 ディスク残量 > 80% で警告、> 90% で危険
IOPS 書き込み/読み取り I/O プロビジョニング上限に近い
アクティブ接続数 同時接続数 max_connections に近い
レプリケーション遅延 レプリカ遅延(秒) > 数秒
クエリレイテンシ クエリ応答時間 p99 が SLO 超過

Cloud Logging の利用


3. アラート設計の基本

良いアラートの 3 条件

  1. アクション可能 — 通知を受けたら明確な対応がある
  2. 誤検知が少ない — 一時的なスパイクで鳴らない
  3. 重要度がある — クリティカル / 警告を区別

アラート設計テンプレート

条件: メトリクス [CPU 利用率] が
      [80%] を超えた状態で
      [5分間] 継続したとき
通知: Slack #db-alerts チャンネル + PagerDuty
重要度: 警告 (Warning)

推奨アラート(Cloud SQL の場合)

アラート 閾値 重要度
CPU 80%超 5分継続 80% 警告
メモリ 90%超 5分継続 90% 警告
ストレージ 80%超 80% 警告
ストレージ 90%超 90% クリティカル
レプリケーション遅延 > 60秒 60s クリティカル
接続失敗率 > 5% 5% クリティカル
インスタンス UP/DOWN DOWN クリティカル

4. バックアップとリカバリの基本

バックアップの種類

種類 何を取るか 復旧速度 試験で頻出
自動バックアップ 全データ(フル) 中(数十分〜)
オンデマンドバックアップ 全データ(フル)
PITR フル + トランザクションログ 速い(任意の時点) ◎◎
エクスポート (mysqldump 等) 論理データ 遅い

Cloud SQL のバックアップ概要

RPO / RTO の理解と要件マッピング

業務種別 典型的な RPO 典型的な RTO 推奨構成
金融取引 0(ゼロロス) 数秒〜分 Spanner Multi-region
EC注文 数分 数十分 Cloud SQL HA + クロスリージョン リードレプリカ
社内システム 数時間 1〜数時間 Cloud SQL HA + 日次バックアップ
分析バッチ 1日 数時間 バックアップ + 再実行

バックアップ戦略の例

日次自動バックアップ + PITR
   ↓
週次オンデマンドバックアップ(長期保管)
   ↓
月次エクスポート → Cloud Storage Archive クラス
   ↓
データレジデンシー必要時 → クロスリージョン バックアップ

5. スロークエリとインデックス

スロークエリ調査の標準手順

  1. Query Insights または slow query log で遅いクエリ特定
  2. EXPLAIN ANALYZE で実行計画確認
  3. インデックス不足 / フルスキャン / JOIN戦略 を分析
  4. インデックス追加 / クエリ書き換え で改善
  5. 改善後に 再度メトリクス確認

インデックス設計の原則

ロック競合の調査


6. クォータと制限

よく問われるクォータ

項目 例(Cloud SQL)
最大インスタンス数 / プロジェクト 100(拡張可能)
最大ストレージサイズ エディションによる
最大接続数 エディションによる(Enterprise Plus は数千)
1日のバックアップ取得回数 制限なし(保持件数に制限)
Read Replica 数 最大 10(同期+非同期合計)

クォータが上限に近づいたら


7. リソース競合の調査

よくある競合シナリオ

競合 症状 調査方法
CPU 競合 クエリ遅延、スロットリング top クエリ確認、CPU メトリクス
メモリ競合 OOM、スワップ shared_buffers / innodb_buffer_pool_size 見直し
I/O 競合 クエリ遅延、IOPS 上限 プロビジョニング IOPS 確認、SSD への変更
接続枯渇 新規接続拒否 max_connections 増加、コネクションプーラー導入
ロック競合 クエリブロック、デッドロック pg_locks / InnoDB ロック状態

8. メンテナンスウィンドウとアップグレード

メンテナンスウィンドウ

Cloud SQL のメンテナンス通知

メジャーアップグレード

パターン メリット デメリット
インプレース 簡単、IP変更なし ロールバック不可、ダウンタイムあり
新インスタンス + リストア ロールバック容易、検証可 接続先変更必要
DMS による移行 ニアゼロダウンタイム 設定が複雑

事前準備(必須)


9. このセクションのチェックリスト