skillup

技術ブログ

Database

アンチパターン 連鎖倒産+エラー監視+データのバックアップ

投稿日:

本日は主にインフラの設計的なことに関して。

連鎖倒産

いい言い方が思いつかなかったんでこんな感じにしました(汗)要はあるサーバーのレスポンスが悪いことが原因で他の業務が遅延し、影響を受けることです。

デメリット

  • 重要でないちょっとしたサービスの停止で他のシステムが止まる、などということが起こる
  • あるシステムがハングし、適切なエラーを返さないため、いつまでも応答を待ってしまう

対策

  • エラー時の対策、障害テスト。基本正常系を前提としないこと
  • 受け取るだけ受け取って、そのトランザクションは一旦終わりにし、その後の処理は別のトランザクションで行う(キューイング)
  • 同期と非同期を分けること
  • 基本マイナス思考(どこかしらでシステムが落ちる、失敗する)で考えること(汗)
  • 他のAPIなどを使っている場合も要注意。

エラー監視

正常に稼働しているかどうかの確認。

デメリット

  • 異常時の検知(サーバーの死活だけでなく、ユーザー権限なども注意)が遅れる
  • バッチ時の処理などすぐにはわからないもの

対策

  • 人間の注意力を過信しすぎないこと
  • 監視ツールでのテンプレートを参考にする
  • DB構築の中のプロセスの1つに入れる

データのバックアップ体制

バックアップをしていない。障害への対策が弱い

デメリット

  • いざというときに欲しいときにデータが得られない

対策

  • リカバリについてフルバックアップ(いわゆる全データのバックアップ)以外にも差分バックアップなどの方法に熟知しておく
  • DB構築時の手順書の中などにバックアップの考えを入れておく
  • やや別件だが障害対策時はてんぱっていることが多いので、処理をその場で考えずフローを書いておき頭から実行するのが良い

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

slow-query-logについて

データベースを伴う部分でののチューニングですが、大きく分けると SQLを書き直す インデックスを張りなおす プログラム内部でキャッシュを有効化する 設定ファイルの修正 上記のようなかんじになるのではな …

no image

自己結合に関して

以前もこのエントリーで学習しましたが、SQLの結合では自己結合という考え方があります。 下記のようなテーブルProductsがあるとします。 name | price ——&# …

no image

アンチパターン バインド変数の未使用+直積組み合わせ+データ量爆発+インデックス関連

本日はSQLコーディングに関して。 ここら辺は実際にプログラムを書く際に重要になってくるネタ。 Contents1 バインド変数1.1 デメリット1.2 対策2 直積により組み合わせが爆発する2.1 …

no image

MySQLのロックに関して+サブクエリ内のupdate

MySQLのロックに関して。 データベースではデータの整合性を保つために読み書きを一時的に制限する仕組みがあります。(データベースだけではないですが・・・) 大きく分けると共有ロック(書き込みは当然だ …

no image

SQL case式やウィンドウ関数の威力

プログラマには「プログラムは思った通りに動かない。書いた通りに動く。」「バグではない仕様です」なんて面白い格言がいろいろありますが、データベースの世界にも「WHERE句で条件分岐させるのは素人のやるこ …