TOP調査レポート> Hinemosにおけるデータベース障害時の縮退運転への移行および復帰の仕組み
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密

第6回:「PostgresForest」を使ったデータベースのクラスタリング

著者:NTTデータ  宇山 公隆   2006/10/13
前のページ  1  2  3
Hinemosにおけるデータベース障害時の縮退運転への移行および復帰の仕組み

   Hinemosでは内部で利用しているデータベースの縮退およびサービスへの復帰はどのように行われるのでしょうか。種を明かせばPostgresForestの機能をそのまま利用して実現しています。ここではその仕組みを見ていきます。
縮退運転への移行

   これは簡単で、何か障害が起こったということをPostgresForestが検知すると、障害ノードを切り離します。障害はPostgreSQLからのエラー情報と、タイムアウトを判断材料としています。

   PostgresForestが障害を検知すると、障害ノードへの処理は停止され、残りの正常ノードで引き続き処理を行う縮退運転となります。Hinemosにおいても、この仕組みをそのまま利用してサービスを停止することなく運転を続けることが可能となっています。


データベースの復旧とサービスへの復帰

   こちらは少し難しい動作となります。当然、システムをすべて停止して、正常なデータベースをコピーすることで復旧する手順もあるのですが、Hinemosのクラスタ構成ではサービスの永続性という観点から、PostgresForestのオンラインリカバリの仕組みを利用しています。

   オンラインリカバリの手順は以下の通りとなります。

データベースの復旧とサービスへの復帰の仕組み
図5:データベースの復旧とサービスへの復帰の仕組み
(画像をクリックすると別ウィンドウに拡大図を表示します)

  1. 運用中ノードのデータベースを障害発生ノードにコピーします
  2. この時、運用中ノードでは障害ノードへのコピーの間に更新された情報(差分ログ)の取得を開始します
  3. データベースをコピーしている間に蓄積された差分ログを障害ノードに転送し、適用します
  4. PostgresForestが運用中ノードへの更新処理を一時的に停止させ、残った差分ログを障害ノードに適用します
  5. 差分ログの適用が完了した時点で、障害ノードのデータ復旧は完了しているので、運用中ノードに加えて処理を再開します

表3:オンラインリカバリの手順


まとめ

   前回、Hinemosでは、内部で利用しているプロダクト自体が持つクラスタリング機能を有効利用することでクラスタ環境を実現していることを解説しました。今回解説したデータベースのクラスタリング機能についても、同様にPostgresForestの仕組みを有効利用することで実現しているのがわかったと思います。

   なお、HinemosおよびPostgresForestに用意されている機能情報やダウンロード情報については以下を参照にしてください。

Hinemos紹介サイト
http://www.nttdata.co.jp/services/hinemos/
SourceForge.jp:Project Info - Hinemos
http://sourceforge.jp/projects/hinemos/
PostgresForest紹介およびダウンロード情報
http://www.nttdata.co.jp/services/postgresforest/

   全6回に渡りお届けしてきた、「オープンソースをこう使った!〜運用管理ツールHinemosの秘密」も今回で最終回です。今までお付き合いいただきありがとうございました。

前のページ  1  2  3


NTTデータ  宇山 公隆
著者プロフィール
株式会社NTTデータ   宇山 公隆
基盤システム事業本部 オープンソース開発センタ シニアエキスパート
NTTデータにてDBMSの開発、SI、技術サポートや、ソフトウェア製品開発、新規ビジネス開拓など様々な仕事に従事。2002年よりOSS分野に参画。現在はHinemosの開発リーダとして、機能および品質向上とコミュニティの創造を目指して活動中。


INDEX
第6回:「PostgresForest」を使ったデータベースのクラスタリング
  今回は
  HinemosでPostgresForestを採用した理由について
Hinemosにおけるデータベース障害時の縮退運転への移行および復帰の仕組み