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

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

4.1. データベースの基礎

データベースとは、「あらかじめ定義された形式で蓄積され、アプリケーションやユーザによって共有されるデータの集合」です。それを管理するシステムであるDBMS(DataBase Management System)を含めて言うこともあります。

データベースにはいくつかの種類がありますが、主流はリレーショナルデータベース(RDB)と呼ばれるものです。RDBを管理するシステムはRDBMSと呼ばれ、大小様々な製品、または、無償で利用可能なフリーソフトウェアが存在します。


4.1.1. RDBMSの種類と特徴

ここでは、主要なRDBMSの種類と特徴を紹介します。

名称特徴
Oracle DatabaseOracle社の大規模向け有償製品。「Oracle Database Standard Edition One」というライセンス体系により、以前に比べて安価に導入できるようになった(最小構成で98,000円)。UNIX、Linux、Windows OSをサポート。RDBMS市場では国内シェアNo.1。
Microsoft SQL ServerMicrosoft社の大規模向け有償製品。Microsoft Windowsとの親和性が高い。Windows ベースの SAP システムで圧倒的なシェアを持つ。
Microsoft AccessMicrosoft社の小規模向け有償製品。Microsoft Office Professionalにパッケージされて販売されている他、単独パッケージも存在する。データベースの専門知識がなくても、簡単に素早くデータベースを構築できる。
MySQLオープンソースで開発されており、商用ライセンスとGNU GPL(再頒布時にライセンスの制約を受ける)の元で無償利用できるデュアルライセンス。UNIX系、Linux、Microsoft Windows、OS/2、MacOSで動作する。オープンソースRDBMS市場での世界シェアはNo.1(約80%強)。元々の開発者は、スウェーデンのMySQL ABという企業であったが、2008年にSun Microsystemsによって買収され、2010年1月にOracleがSun Microsystemsを買収したことにより、現在はOracleが所有権・著作権を保有している。ストレージエンジンを選択でき、特に高速参照の性能は高い。
PostgreSQLフリー(料金、ライセンス、再頒布)で利用可能なRDBMS。有償製品に匹敵する機能、性能を持ち、企業システムでも多数採用されている。UNIX系、Linux、Microsoft Windows、OS/2、MacOSで動作する。日本国内のオープンソースRDBMSでは、MySQLとほぼ同程度のシェアを持つ。MySQLと比し、高速参照エンジンに対抗する機能は無いが、一般的なRDBMS機能には大差が無い。
SQLiteフリー(料金、ライセンス、再頒布)で利用可能なRDBMS。PostgreSQLやMySQLとの大きな違いは、サーバとして動作するのではなく、アプリケーションに組み込んで利用する軽量のデータベースであること。インストールも非常に容易で、アプリケーションと一緒に配布して利用されることも多い。大規模システムには不向きだが、中小規模のシステムであれば、機能、性能面において問題なく利用できる。

4.1.2. レプリケーションの必要性

現在の企業組織においては、データベースが非常に重要な役割を担っています。そのため、データベースが破損する等の事故が発生した場合、業務やサービスを継続できなくなり、組織の利益を著しく低下させてしまうことになります。このような万が一のリスクに備えるために、データは常にバックアップしておく必要があります。

データベースをバックアップする方法には、いろいろあります。RDBMSには、バックアップを取るためのツールが用意されていますので、このツールを利用することができます。もしくは、OS上の単なるファイルとしてバックアップすることも可能です。ただしこの場合は、運用を停止してからバックアップしなければなりません。いずれの方法を採るにしても、取得したバックアップファイル(静的なファイルです)の保管方法を検討する必要があります。バックアップファイルが壊れたら復旧できなくなります。

バックアップ計画を立てる上でたいせつなことは、

  • 回復時点 (どの時点まで復旧させるか)
  • 復旧時システム停止可能時間 (復旧のためにどのくらいの時間、システムを停止できるか)

をあらかじめ取り決めておくことです。

回復時点は「バックアップを取る間隔」を、復旧時システム停止可能時間は「バックアップ取得形態」を、それぞれ決定する要因となります。回復時点と復旧時システム停止可能時間とは、相反する要素であり、運用上はトレードオフになります。

事故発生時になるべく発生直前の状態に復旧できるようにするためには、頻繁にバックアップする必要があります。この場合、あまり高度な形態でバックアップを取ることは難しくなります。それに対し、システム停止可能時間を短くするためには、些少の手間のみで復旧できる形態でバックアップする必要があります。例えば、最短で復旧するには、RDBMSを構成するファイル群を、まるごとバックアップしておくのが有効でしょう。しかしこの方法は運用を止めなければなりません。システム停止可能時間を短くする選択をすると、あまり頻繁にバックアップと取ることは難しくなります。

バックアップはデータベースの事故に備える意味で有効な手段ではありますが、バックアップでどのような方法を採ったとしても、いったん事故が発生したら、復旧が完了するまでの間はシステムの運用が停止してしまいます。事故が発生しても運用を継続させるためには、バックアップとは別の方法をとる必要があります。その方法として、オリジナルのデータベースの他に、二重、三重にデータベースのコピーを持っておく方法があります。この仕組みをデータベースの「レプリケーション」と呼びます。大規模用途で利用される主要なRDBMSには、レプリケーション機能が備わっており、先ほど紹介したRDBMSの内、Microsoft Access、SQLite以外は、レプリケーション機能を持っています。


4.1.3. レプリケーション機能の概要

前節で触れたとおり、レプリケーションではオリジナルのデータベースの他に、二重、三重にデータベースのコピーをもちます。オリジナルのデータベースを「マスタ」または「プライマリ」、コピーDBを「スレーブ」または「スタンバイ」と呼びます。以降、マスタ/スレーブの表記で統一して記載します。

データの更新はマスタに対して行います。マスタに加えられたデータの更新をスレーブにコピーするタイミングには、同期方式と非同期方式の2通りがあります。

同期方式

同期方式では、マスタの更新と同時にすべてのスレーブを更新します。すべてのスレーブの処理終了を待つ必要があるため、スレーブが増えるほど全体の処理に時間がかかりますが、常にすべてのデータベースで同じデータが保持されることが保証されます。これが同期方式のメリットです。

同期方式では、いずれかのデータベースで障害が起きると、自動的にそのデータベースを同期対象から除外し、正常なデータベースに対してのみ同期処理を行います。マスタで障害が発生した場合、スレーブのうちいずれかを代理マスタに昇格させ、マスタを同期対象から除外します。障害が発生したデータベースを除外して運用することを、縮退といいます。

同期方式をサポートするRDBMSは、自動的な縮退運用への移行と、縮退運用に入ったことを何らかの形で外部へ通知する機構を備えています。

非同期方式

非同期方式では、データの更新時にまずはマスタの更新のみが行われます。マスタは更新の際、更新ログを出力します。この更新ログを順次スレーブに適用することで、同じデータが保持されることになります。マスタを更新してから、スレーブで更新ログを適用するまでの間は、一時的にデータが一致していない状態となりますが、スレーブ数増加による処理時間の増加は発生しません。これが非同期方式のメリットです。

非同期方式においてマスタで障害が発生した場合、クライアントからの接続先をいずれかのスレーブに切り替えることで運用を継続できます。バックアップしか行っていない場合のように、完全復旧までシステムの運用ができなくなってしまうということはありません。

非同期方式でレプリケーションの最初のアクションをとるのはスレーブで、リソースや回線などの条件に応じてスレーブごとに任意のタイミングでレプリケーションを実行することができます。

非同期形式はスレーブがレプリケーションのスタートを制御する形式のため、同期方式のような自動的な縮退運用への移行、及び、縮退運用に入ったことの外部通知機能はありません。

各RDBMSが搭載する方式

以下は、各RDBMSが搭載する方式についてまとめたものです。

RDBMS同期非同期説明
Oracle非同期/同期方式とも、多彩な設定が可能。
SQL Server×異種RDBMS間のレプリケーションが可能。
PostgreSQL同期方式は 外部ツールにて実現。
MySQL同期方式の△:完全な同期ではなく、半同期。一部のスレーブとのみ同期し、その他とは非同期。

なお、レプリケーション機能を利用することで、障害が発生した際の運用停止時間を最小限にとどめることはできますが、バックアップが不要になるわけではありません。レプリケーションを構成するすべてのデータベースで障害が発生した場合に備えて、定期的にバックアップをとる必要があります。

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

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

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

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

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