「可用性要件」を満たすデータベースのシステム構成を考える(3/3 ページ)
本連載は、企業の成長に不可欠な「データ活用」を推進していくために必要なデータ基盤の基礎を“あらためて”解説していきます。今回は、データベースシステムに求められる非機能要件について整理し、中でも優先度の高い可用性要件を満たすデータベースシステムの構成について解説します。【更新版】
ストレージの可用性を高めるには
フェイルオーバー型クラスタリング構成と、ロードバランス型クラスタリング構成は、原則としてサーバの可用性向上を目的としています。対して、前述した図4ではデータベース構成ファイルが格納されるストレージは1つしか用意されていませんでした。このストレージに障害が発生しても、同じくサービスを提供できなくなります。事前に取っておいたバックアップからリストアするいった復旧作業が必要となるでしょう。
ここでは、「障害の検知から、バックアップからのリストアとリカバリーを行う時間」がシステムの停止時間となります。もしバックアップデータが膨大にあるならば、その分、システムの停止時間は長くなります。可用性要件を満たせないのであれば、ストレージ部分に対しても可用性を高める対策が必要となります。その前に原則として、そもそもストレージはハードウェア障害に備えて、RAID構成にしておく対策も必要です。
ストレージの可用性も、サーバの場合と同様にストレージ装置を複数台用意することで高められます。しかし、ストレージはデータの記録や更新が随時行われる装置です。このため、更新されたデータを「いかに待機側のストレージへ持っていくか」がポイントとなります。
「Oracle Data Guard」構成による実装
例えばOracle Databaseでは、稼働するデータベースサーバの他にもう1台、同じ構成のデータベースサーバを用意することで、それぞれでデータを同期して複重化する対策を、「Oracle Data Guard」と呼ばれる機能で実現できます。この構成を「Oracle Data Guard構成」と呼びます。
Oracle Data Guard構成では、データベースサーバ上で発生する変更履歴を待機側のデータベースシステムへ転送し、適用することにより、互いのデータを同期します(図5)。データの同期レベルは複数の種類があり、パフォーマンスと可用性のバランスを要件に応じて調節できるようになっています。
待機側のデータベースサーバにもデータが同期されることで、仮に稼働中のサーバやストレージに障害が発生したとしても、待機側のサーバに稼働システムを移すだけでデータベースシステムを復旧できます。
ストレージのDR機能で実現する
Oracle Data Guardを用いる手段の他に、ストレージに備わるDR(Disaster Recovery:災害復旧)機能を用いてデータ同期を行うことも可能です。例えば、稼働するデータベースサーバ側のI/OをTCP/IPに変換して、待機側でI/Oを再現させることでデータ同期を行います(図6)。
この方法は専用のハードウェア機器や、物理的に離れた場所でもう1つのシステムを用意することから、主に大規模なシステムで使われます。しかし最近では、この「離れた場所のサーバ」をサブスクリプション課金のクラウドサービスでカバーする手段も一般的になってきています。また、Oracle Databaseに限らないシステム構築ができる上に、シンプルなシステム構成で高い可用性要件を満たせる方法とも言えます。
まとめ
データベースシステムの可用性は、ハードウェアやソフトウェアを複数持つことで高めます。
ポイントは、「どこを対象にした冗長化構成を作るべきかを明確にする」ことです。システムの要件に応じてハードウェアやソフトウェアの機能、最近ではクラウドサービスもうまく活用することで、コスト効果を意識しつつも、高い可用性要件を満たすデータベースシステムを構築できるでしょう。
もちろん、ハードウェアもソフトウェアも日々新しい機能がリリースされています。これまでは高額で手が出なかった構成も、安価に構築できるようになっているかもしれません。メーカーやベンダーの発信する情報にも日々目を配ることも肝要です。
更新履歴
【2017/2/6】2017年時点の状況に合わせて、内容を追記更新しました
【2009/01/19】初版公開
筆者紹介
佐瀬力
株式会社アシスト データベース技術本部所属。Oracle Databaseのフィールドエンジニアを経て、Oracle DatabaseやEDB Postgres、PostgreSQLのプロダクト担当。吉田類さんの信奉者。3児の父
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- SQLの基礎 「SELECT」文を覚えよう
- SQLとはどういう言語か
「SQLは何となく苦手」という人は意外と多いものです。すでに何らかのプログラミング言語を習得している人を見ても、SQLを苦手としている人は少なくありません。そこで、実際にSQLを入力して結果を見ながら学習する連載を始めます。用意するのはインターネットにつながったWebブラウザだけ。気軽に始めてみてください。(編集部) - RDBMS製品のビッグ3、それぞれの“癖”をつかもう
本連載はOracleを使ったデータベースシステムの開発・運用管理にある程度の知識を持つ読者を対象に、Oracle以外の商用RDBMSであるMicrosoft SQL ServerとIBM DB2とのアーキテクチャの違いを明らかにし、マルチベンダに対応できるデータベースシステムの設計・開発・運用ノウハウを紹介していく。(編集局) - NoSQLはRDBMSに取って代わるものなのか?
「memcached」や「Apache Cassandra」、「Apache CouchDB」など、RDBMSとは異なる考えで設計してあるデータベース管理システムが普及しつつあります。この連載では、これら新しいデータベース管理システムの特徴と、RDBMSとの使い分け方について解説します。(編集部)