安心のデータ管理を実現するデータベース冗長化

4.1. データベースの基礎 | 4.3. 可用性重視のレプリケーション適用事例

4.2. コスト重視のレプリケーション適用事例

ここでは、PostgreSQLに搭載されている非同期方式を使い、初期コストおよび運用コストを抑えたレプリケーションの適用を実現した事例を紹介します。PostgreSQLは、日本国内で利用されている代表的なオープンソースRDBMSであり、プラットフォームレスでもあることから、ここでご紹介する事例は、様々なシステムへの適用が可能です。

この事例のシステム要件は、以下の通りでした。

  • 自社の社員でサーバを運用するため、OSはWindows Serverにしたい
  • 自社内向け、かつ、ノンクリティカルなシステムである
  • システムダウン時は、メールや電話など、代替手段が使える
  • そのため、システムダウン時のスレーブへの切り替えは手動で可

この要件を受け、正常時の運用負担をなるべく減らすように、Windows Server + PostgreSQLの2セットで構築可能な、非同期方式を選択しました。

PostgreSQLの非同期方式は、マスタは更新処理が完了したのち更新レコードを書き出し、これを更新ログとしてスレーブへ送信します。その送信には、2つの送信方法があります。ひとつは”ログシッピング”と呼ばれるファイルベースの送信で、更新レコードが一定量に達すると一つのファイルにまとめて、スレーブへ送信します。もうひとつは"ストリーミングレプリケーション”と呼ばれる送信方法で、更新レコードが作成されると、即時にスレーブへ送信します。ストリーミングレプリケーションのほうが、マスタとスレーブとのデータ不一致時間が短くなります。なお、いずれの場合も、更新情報を通信するチャネルはスレーブが開きます。

この事例においては、不一致時間はできるだけ短くしたいとのご要望を受け、送信方法としてストリーミングレプリケーションを選択しました。

通常運用時は、利用者はマスタへ接続します。スレーブはマスタと常時接続しており、定期的にデータが同期されます。縮退運用時は、利用者はスレーブへ接続します。

図4-1 レプリケーション適用事例の図

障害発生時の対処

この事例構成においては、障害が発生した場合の 縮退構成への自動移行は行われないため、人手によって以下の手順を実施するという運用としました。

  1. スレーブが単独稼働できるよう 設定を変更します。(マスタとの接続設定を解除します)
  2. クライアントからの接続先をスレーブに変更します。

この移行作業を行っている間は、システムの運用を停止する必要があります。ただ、データは常時レプリケートされていますので、スレーブとクライアントの簡単な設定変更だけで運用を再開でき、バックアップしか存在しない場合のように完全復旧まで長時間にわたって運用が停止するということは回避できます。

縮退構成から通常構成への復旧には、以下のような作業を実施することになります。

  1. マスタを復旧します。
  2. 縮退運用中のマスタ(=通常構成時のスレーブ)に加えられた更新を、本来のマスタに反映します。
  3. 縮退運用中のマスタをスレーブ化し、マスタに接続させます。
  4. クライアントからの接続先をマスタに戻します。

この復旧作業中は運用を停止する必要があります。


本事例構成のまとめ

Windows Server + PostgreSQL の2セットのみで構築可能なこと、PostgreSQLがオープンソースであること、またストリーミングレプリケーションは設定作業のみで構築可能なことから、初期コストを抑えることができました。

運用面では、マスタとスレーブとの間にルータが介すネットワーク構成で、一定期間通信が無いと切断される可能性があったため、定期的なAliveCheckの仕組みを追加し、レプリケーション機能を停止させないための対応を行いました。
本事例のような構成の場合、このような安定的な稼働環境の確保と監視の仕組みは、PostgreSQL本体では対応できないため、外的な対応が必要となります。 本事例では回線について対応を行いましたが、他には、マスタダウンやスレーブダウンに対する対応も考慮する必要があります。

  • マスタがダウンした場合、縮退構成への移行作業を開始するためのトリガが必要です。
  • スレーブがダウンした場合、運用は停止しませんが、データのコピーが行われなくなるため、やはり復旧作業を開始するためのトリガが必要です。

無料小冊子のお申込みはこちら

株式会社システム計画研究所のオフィシャルサイトはこちら

当サイトへのご質問及び安全・安心・信頼のシステム開発に関するご相談はこちら

通信・ネットワークシステムの開発マネージメント情報サイト「通信・ネットワークシステム開発.COM」はこちら

サーバ監視・ネットワーク監視ツール isNetSentry-S のサイトはこちら