説明

データ処理システム及びデータベースの管理方法

【課題】複数のログ格納領域を備えてログの適用によりリストア処理を行う際に、ソート処理を不要にして迅速に回復可能なデータベースを提供する。
【解決手段】管理サーバ104が、複数のデータ格納領域A〜DにアクセスするDBサーバ1〜3を割り当て、DBサーバ1〜3が、割り当てられたデータ格納領域A〜Dにデータを格納して参照または更新を行いと、更新を行った場合には、データベースサーバ毎に予め設定されたログ領域216〜218にデータの変更履歴を示すログを格納し、管理サーバ104からデータ格納領域A〜Dを変更する通知を受けたときには、領域移動ログ316〜318をログ領域216〜218に格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースの構成変更や障害からの回復に関し、特に無共有型のデータベースの構成変更や回復処理に関する。
【背景技術】
【0002】
近年、安価なブレード型計算機の登場により、複数のブレード型計算機を組合せてサーバ計算機を構成し(以下ブレードサーバと呼ぶ)、システムの負荷変動に応じて前記ブレードサーバ中の必要な計算機資源を用いて処理を行う新しい運用形態が運用が求められている。このような該運用形態の実現のために、データベースシステム、アプリケーションサーバ、Webサーバに代表される基盤ソフトウェア(以下、ミドルウェアと呼ぶ)において、高速なシステム構成変更機構が求められている。また、ブレード型サーバ計算機を用いたシステムではサーバ中のブレードサーバ計算機の台数が多いため、前記ミドルウェアでは高いスケーラビリティまでもが求められる。
【0003】
代表的なミドルウェアであるデータベース管理システム(以下、DBMS)には、該DBMSが複数の計算機で稼動する場合に、計算機間でデータを格納する磁気ディスク装置ディスク装置(ストレージ装置)を共有する共有ディスク型と、それぞれの計算機で別々のデータ格納用の磁気ディスク装置を用いる共有しない無共有型がある。共有ディスク型ではDBMSで管理するデータの前記磁気ディスク装置への配置を気にする必要がないため、システム構成変更が容易となる利点を持つ反面、共有ディスク上のデータ格納領域(以下、データ領域と呼ぶ)へのアクセス時に計算機間で排他制御を必要とするため、スケーラビリティに限界がある。
【0004】
一方、無共有型ではデータ領域を共有していないため計算機間で排他制御が必要なく、スケーラビリティが高い。
【0005】
ここで、DBMSはデータの一貫性ある管理を行わなければならないため、データの変更履歴(ログ)を計算機ごとに管理しているログ領域にそれぞれ記録し、どのような障害が発生してもデータが復元できるようになっている。ある時点でデータ領域のバックアップを取得し、その後のログを保存する。障害発生時にはバックアップに保存されたログを時間順に適用することで、障害発生時のデータ領域に復元する。この処理のことをリストア処理と呼ぶ。
【0006】
無共有型のDBMSでリストア処理を行うには、各計算機毎のログ領域から復元に必要なログを選択し、これらのログを結合してから時間順にソートを行う。そして、ソートを行ったログをバックアップに適用することで、リストア処理を行うものが知られている(例えば、特許文献1、非特許文献1)。
【特許文献1】米国特許出願公開第2004/0030703号明細書
【非特許文献1】笠原 敬 著、「Oracle9i Database新機能ガイド―ミッションクリティカルシステム」、翔泳社、2002年02月12日 発行、第224頁〜第225頁
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、上記従来の無共有型のDBMSでは、リストア処理の際に各計算機のログを一旦結合してからソートを行うため、ログを結合し、ソートするための一時的な領域を確保する必要があり、限られた計算機資源の中で迅速に一時的な領域を確保するのが難しいという問題がある。
【0008】
さらに、上記従来例ではログを一旦結合してからソートを行い、その後、ログを適用するため、リストア処理に多大な計算機資源と時間を要することになり、ディスクの障害などからの回復に時間を要するという問題があった。
【0009】
また、上記無共有型のDBMSでは、共有ストレージ装置上に複数のデータ領域を設定し、各データ領域に計算機を割り当てることができ、レコードの追加削除を伴わない構成変更の際にはデータ領域と計算機の割り当てを変更することで、計算機の追加削除などの構成変更を行う領域移動(リマッピング)を行うことができる。このリマッピングにより、高速なシステム構成変更を実現しつつ、かつ共有ストレージ装置上のデータ領域は論理的に分割されているので、DBMSが稼動する計算機間での排他制御を行う必要がなくスケーラビリティを高めることができる。しかし、無共有型のDBMSでは各計算機毎にログ格納領域を有しているため、上記リマッピングを行うと、ひとつのデータ領域に関するログが複数のログ格納領域に分散する場合がある。したがって、リマッピング後にリストア処理を行うと、複数のログ格納領域を検索しながらログの結合を行うことになり、処理が煩雑化してリストア処理の負荷がさらに増大し、回復までの処理時間も遅延するという問題があった。
【0010】
そこで本発明は、上記問題点に鑑みてなされたもので、複数のログ格納領域を備えてログの適用によりリストア処理を行う際に、ソート処理を不要にして迅速に回復可能なデータベースを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明は、複数のデータベースサーバが、管理サーバにより割り当てられたデータ格納領域にアクセスするデータベースの管理方法であって、前記管理サーバが、複数のデータ格納領域と該データ格納領域にアクセスするデータベースサーバを割り当てる手順と、前記データベースサーバが、前記割り当てられたデータ格納領域にデータを格納して参照または更新を行う手順と、前記更新を行った場合には、データベースサーバ毎に予め設定されたログ領域にデータの変更履歴を示すログを格納する手順と、前記管理サーバからデータ格納領域を変更する通知を受けたときには、前記データベースサーバがデータ格納領域の変更があったことを示す領域移動ログを前記ログ領域に格納する手順と、を含む。
【0012】
また、前記管理サーバが、前記各データベースサーバ毎のログ領域に格納された前記領域移動ログを区切りとしたログ集合を単位としてリストア処理を前記データベースサーバに指令する手順と、前記データベースサーバが、前記指令に基づいて、前記ログ領域に格納されたログを前記データ格納領域に適用し、データを回復する手順と、を含んでデータ格納領域のデータを回復する。
【発明の効果】
【0013】
したがって、本発明は、データベースサーバに割り当てられるデータ格納領域が変更されると、ログ領域にはデータの更新履歴に加えて領域移動ログが格納される。リストア処理を行う際には、領域移動ログを区切りとして各データベースサーバがログを適用していくことで、複数のデータベースサーバ間で同期を取りながらリストア処理を行うことができる。したがって、前記従来例のようにログの結合やソートを必要とせずに、高速でリストア処理を実現することができる。
【発明を実施するための最良の形態】
【0014】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【0015】
図1は、第1の実施形態を示し、本発明を適用した無共有型(Shared−nothing)データベースシステムの一例を示すブロック図である。
【0016】
ユーザとのインタラクション(処理要求の受け付け、処理結果の通知など)を行うクライアント計算機(以下、クライアント)101は、IPネットワーク103を介してフロントエンドサーバ計算機(以下、フロントエンドサーバ)102に接続され、フロントエンドサーバ102はクライアント101からのデータ処理の要求を受け付け、該要求に対する結果をクライアント101に返送する。
【0017】
フロントエンドサーバ102は、IPネットワーク103を介して複数のデータベースサーバ(データベース処理を実行するサーバ計算機)1〜3に接続され、クライアント101からの要求に応じて、データベースサーバ(以下、DBサーバ)1〜3にデータベースの処理(データの参照または更新)を依頼する。つまり、DBサーバ1〜3はバックエンドサーバとして機能する。なお、フロントエンドサーバ102、DBサーバ1〜3、クライアント101は、図示はしないが、それぞれCPU、メモリ、ネットワークインターフェースを備えている。
【0018】
複数のDBサーバ1〜3は、SAN(Storage Area Network)110を介してストレージ装置10に接続され、各DBサーバ1〜3は管理サーバ104によって割り当てられたストレージ装置10上の独立したデータ格納領域に対してアクセスを行い、データ処理を実行する。
【0019】
ストレージ装置10には、各DBサーバ1〜3からアクセス可能なデータ領域211を有し、各DBサーバ1〜3で共有される。このデータ領域211には、独立した小領域であるデータ格納領域(以下、領域)A212〜D215が設定される。各領域A212〜D215は、非共有であり管理サーバ104によって割り当てられたDBサーバ1〜3のみがアクセスする。そして、各領域A212〜D215には、データベースのデータがそれぞれ格納される。
【0020】
また、ストレージ装置10には、データ領域211のバックアップを格納するバックアップ領域311が設定され、バックアップ領域311内には、データ領域211の各領域A212〜D215のバックアップデータを格納するための領域a312〜d315が設定される。バックアップデータの生成は、ストレージ装置10のコピー機能などを用いて行う。
【0021】
管理サーバ104は、IPネットワーク103を介してDBサーバ1〜3に接続され、SAN110を介してストレージ装置10に接続されており、各DBサーバ1〜3に割り当てる領域A212〜D215を管理する。なお、管理サーバ104は、図示はしないが、CPU、メモリ、ネットワークインターフェースを有する。
【0022】
また、各DBサーバ1〜3はSAN110を介して非共有のストレージ装置21〜23に接続され、ストレージ装置21〜23に設定されたログ領域216、217、218にデータの更新履歴であるログを書き込み、リストア処理の際にはログを読み込む。各ログ領域216〜218は、DBサーバ1〜3にそれぞれ独立して割り当てられ、DBサーバ1はストレージ装置21のログ領域216を占有し、DBサーバ2、3はそれぞれストレージ装置22、23のログ領域217、218を使用する。
【0023】
なお、図1においては、管理サーバ104は独立した計算機であるが、フロントエンドサーバ102やDBサーバ1〜3の計算機に共存した構成でもよい。また、ログ領域216、217、218は、各DBサーバ1〜3のローカルディスクに配置する構成でもよく、また各DBサーバ1〜3から共有されるストレージ装置10に配置する構成でもよい。また、管理サーバ104もSAN110を介してログ領域216、217、218を参照することができる。
【0024】
クライアント101は、フロントエンドサーバ102に前記データ処理の要求をSQLにて発行する。本実施形態においては、該要求はDBMSに対するSQL(Structured Query Language)で表現されたクエリで行われるとするが、他の形式でもよい。該クエリを受け付けたフロントエンドサーバ102は、問い合せ解析部120にて実行プランを作成する。実行プランはDBサーバ1〜3に存在するデータ処理部121、122、123の処理内容を記述したものである。各データ処理部121、122、123は、DBサーバ1〜3が保持しているデータ領域A212〜D215に対して処理を行う。
【0025】
管理サーバ104は、DBサーバ1〜3に割り当てる領域A212〜D215を管理する領域割り当て管理部130と、ストレージ装置10の領域A212〜D215とDBサーバ1〜3の割り当て状態を管理する領域・サーバ対応表231を有し、無共有型データベースシステムの構成を管理する。また、管理サーバ104は、後述するリストア処理を行うため、各DBサーバ1〜3のログを適用させるリストア制御部140を有する。なお、領域・サーバ対応表231は、領域の割り当て管理部130が管理する。
【0026】
そして、管理サーバ104の領域割り当て管理部130は、データの挿入または削除を伴わずに領域移動を行うリマッピング機能(領域移動機能)を有する。このリマッピング機能は、特願2004―003601号と同様である。
【0027】
各DBサーバ1〜3から共有されているストレージ装置10のデータ領域211は、複数のデータ格納領域(以下、領域とする)に分割される。該領域は、1つのDBサーバが占有してアクセスする単位である。図1では4つの領域(領域A212、領域B213、領域C214、領域D215)に分割されている。
【0028】
図1の領域・サーバ対応表231では、4つの領域A212、B213、C214、D215とDBサーバ1〜3の対応関係を管理している。図1の状態では、領域A212はDBサーバ1に割り当てられ、領域B213はDBサーバ1に割り当てられ、領域C214はDBサーバ2に割り当てられ、領域D215はDBサーバ3それぞれに割り当てられている。
【0029】
ここで、DBサーバ1は、フロントエンドサーバ102からの要求に応じて、領域A212〜D215のデータを読み込み/更新するデータ処理部121と、管理サーバ104の領域割り当て管理部130からの割り当て指示に応じて、現在割り当てられている領域A212〜D215を管理する領域管理表235と、この領域管理表235に設定された領域A212〜D215にアクセスするようデータ処理部121のアクセス先を管理する領域管理部132と、を有する。また、データ処理部121は、割り当てられた領域A212〜D215の更新を行うと、ストレージ装置21のログ領域216にログを出力する。
【0030】
そして、DBサーバ1は、ログに基づいてデータ領域211のデータベースA1〜D1を回復するため、後述するようにログ領域216等からログを転送し、ログを読み込むログ読み込み転送部141と、読み込んだログをバックアップデータに適用してデータベースを回復するログ適用部152と、を有する。なお、DBサーバ2、3もDBサーバ1と同様のデータ処理部122、123と領域管理部133、134、領域管理表236、237、ログ読み込み適用部142、143及びログ適用部153、154を有する。
【0031】
図1の例では、管理サーバ104の領域・サーバ対応表231の設定に対応して、DBサーバ1の領域管理表235には、領域A212と領域B213が設定され、DBサーバ1はストレージ装置10の領域A212と領域B213にアクセスする。DBサーバ2の領域管理表236には、領域C214が設定されて、DBサーバ2は領域C214のみにアクセスする。DBサーバ3の領域管理表237には、領域D215が設定されて、DBサーバ3は領域D215のみにアクセスする。
【0032】
レコードの削除や挿入を行わない領域移動(リマッピング)を行う場合、管理サーバ104の領域割当て管理部130は、領域・サーバ対応表231を更新し、更新した領域・サーバ対応表231に合うように各DBサーバ1〜3の領域管理部132、133、134にそれぞれが保持する領域管理表を更新するよう指示する。各DBサーバ1〜3の各領域管理部132〜134では該指示に従い、それぞれの領域管理表235〜237を更新する。領域管理表235〜237が更新されたることにより、それぞれのDBサーバ1〜3がアクセスする領域A〜Dが変更される。これにより、物理的なデータの移動を行うことなく、領域A212〜D215にアクセスするDBサーバ1〜3を変更(追加または削除を含む)することができる。
【0033】
次に、上記領域移動とログの関係について説明する。
【0034】
図2は図1の状態で、データ領域211のバックアップを行った後、各領域A212〜D215のデータA1〜D1が更新された状態を示す。ストレージ装置10は、データ領域211の領域A212〜D215をバックアップ領域311の領域a312〜d315に複製し、バックアップを行う。なお、図中A1’〜D1’がリマッピングを行う直前の時点で作成されたバックアップデータを示す。
【0035】
そして、各領域A212〜D215のデータA1〜D1が更新される。データA1〜D1が更新に伴い各DBサーバ1〜3はそれぞれ固有のログ領域216〜218にログを記録する。いま、データベースのデータを格納する領域が図1の例のように割り当てられている場合、DBサーバ1のログ領域216には、図2に示すように、領域A212に対する更新履歴のログ(図中A1→A2)と、領域B213に対するログ(図中B1→B2)が格納され、DBサーバ2のログ領域217には、領域C214に対するログ(図中C1→C2)が格納され、DBサーバ3のログ領域218には、領域D215に対応するログ(図中D1→D2)が格納されている。
【0036】
図3は、図2の状態からリマッピングを行った直後の状態を示す。
【0037】
本実施形態における領域移動の指示は、管理サーバ104が領域B213のDBサーバをDBサーバ1からDBサーバ2に変更する指示をDBサーバ1、2に指令した場合を示す。管理サーバ104の領域割り当て管理部130は、領域・サーバ対応表231を更新し、領域B213にDBサーバ2を割り当てる。そして、DBサーバ1、2及びストレージ装置10に領域の移動を通知する。
【0038】
この通知に伴い、DBサーバ1〜3の領域管理部132、133、134はそれぞれの領域管理表135、136、137を更新し、領域移動の発生を示すログ(領域移動ログ316〜318)をログ領域216〜218にそれぞれ出力する。この結果、領域A212にはDBサーバ1がアクセスし、領域B213と領域C214にはDBサーバ2のみがアクセスし、領域D215にはDBサーバ3のみがアクセスする。また、各ログ領域216、217、218には領域移動ログ316〜318がそれぞれ追加された状態を示す。
【0039】
図4はDBサーバ1〜3の領域管理部132〜134で行われるデータ領域移動領域管理処理のフローチャートを示すである。
【0040】
領域移動時には領域管理部132〜134において各DBサーバ1〜3の領域管理表235〜237を更新する際、領域移動が行われたことを示すログである領域移動ログ316〜318をログ領域216〜218に出力する。領域管理部132〜134は管理サーバ104の領域割り当て管理部130からの指示を受けると領域管理表235〜237を更新する(801)。続いて、ログ領域216〜218に領域移動ログ316〜318を出力する(802)。
【0041】
以上により領域移動時には、全てのDBサーバ1〜3のログ領域216〜218に領域移動ログ316〜318が出力される。この領域移動ログ316〜318により領域移動前後のログを切り分けることが可能となる。
【0042】
図5は、上記図3の状態からデータ領域が更新された後の状態を表す。具体的には領域A212を「A3」に、領域B213を「B3」に、領域C214を「C3」に、領域Dを「D3」に更新する。
【0043】
DBサーバ1には領域A212が割り当てられているため、ログ領域216には領域A212のログが出力される。DBサーバ2には領域B213と領域C214が割り当てられているため、ログ領域217には領域B213と領域C214のログが出力される。DBサーバ3には領域D215が割り当てられているため、ログ領域218には領域D215のログが出力される。
【0044】
図2のデータ領域の更新後に領域移動が行われているため、図2では領域B213のログはDBサーバ1のログ領域216に出力されているが、図3の領域移動後のログでは、領域B213のログがDBサーバ2のログ領域217に出力され、ひとつの領域Bの213ログが、領域移動によって異なるログ領域に分散することになる。
【0045】
以上の図1〜図5で、領域移動を行った後に、図5の後に発生した障害から回復するリストア処理を行う場合を示す。
【0046】
つまり、図2の状態で取得したバックアップデータA1’〜D1’と、図2、図3、図5で行った2つの更新処理と領域移動のログを用いて図5の状態に回復するリストア処理である。
【0047】
図6は、図2のバックアップデータA1’〜D1’を使ってデータ領域211を図5の状態に回復した状態を表す。
【0048】
ログの適用は、本発明の集中ログ転送方式により管理サーバ104のリストア制御部520と、各DBサーバ1〜3のログ読み込み転送部521、522、523及びログ適用部524、525、526により行われる。なお、リストア処理の開始は、管理サーバ104のリストア制御部140が各DBサーバ1〜3にリストア開始の指令を送ることで開始される。
【0049】
図7はリストア処理時のデータの流れを示し、各DBサーバ1〜3は、管理サーバ104からリストア開始の指令を受けると、ログ読み込み転送部141〜143が、各DBサーバ1〜3のログ領域216〜218からログを読み込み、管理サーバ104のリストア制御部140へ送信する(641)。ただし、ログ読み込み転送部141〜143が領域移動ログ316〜318を読み込んだ場合は、領域移動ログ316〜318を送信後、リストア制御部140からログ送信の再開指示(開始指示)を受けるまでログの送信を中断する。
【0050】
リストア制御部140は、ログ読み込み転送部141〜143に開始指示を適切に出しながら領域移動ログ316〜318で区切られたログ集合642〜644ごとにDBサーバ1〜3からログを送信させ、領域・サーバ対応表231を参照して、受信したログを現在該ログに記述されているデータ領域を保持する適切なDBサーバ1〜3のログ適用部に転送する。各DBサーバ1〜3のログ適用部152〜154は、受け取ったログをDBサーバ1〜3に割り当てられている領域のバックアップデータA1’〜D1’に適用し、データA3〜D3に回復する。
【0051】
まず、リストア制御部140が各ログ読み込み転送部141〜143に開始指示を出す(641)。ログ読み込み転送部141〜143は、領域移動ログ316〜318を読み込むまでログ集合642〜644を読み込み(645)、リストア制御部140に送信する(648)。各ログ読み込み転送部141〜143の処理は並列に実行され、領域移動ログ316〜318をリストア制御部140へ送信した時点で、ログ読み込み転送部141〜143は、読み込みと転送を中断する。
【0052】
リストア制御部140は、領域・サーバ対応表231を参照して、ログ読み込み転送部141〜143から送信されたログに記述されている領域を保持する適切なDBサーバのログ適用部152〜154に送信する(649)。
【0053】
リストア制御部140から送信されたログを受信したログ適用部152〜154は、バックアップデータA1’〜D1’にログを適用し、領域A212〜D215に回復後のデータベースA2〜D2を書き込む(650〜652)。
【0054】
このとき、各領域A212〜D215に書き込むDBサーバ1〜3は、リストア開始時点の領域・サーバ対応表231に基づいて決定され、図7の例では、DBサーバ1のログ適用部152が領域A212を回復し(650)、DBサーバ2のログ適用部153が領域B213と領域C214を回復し(651)、DBサーバ3ログ適用部154が領域D215を回復する(652)。
【0055】
この時点で、ログ読み込み転送部141〜143はリストア制御部140からの開始指示待ちになっており、各ログ適用部152〜154が領域移動ログより前のログ(642〜644)を適用したことになる。
【0056】
つまり、バックアップデータA1’〜D1’にログ「A1→A2」、「B1→B2」、「C1→C2」、「D1→D2」を適用し、各領域A212〜D215のデータベースは、A2〜D2の時点まで回復されたことになる。
【0057】
続いて、領域移動ログ316〜318より後のログを適用するために、図8で示すように、リストア制御部140は、各DBサーバ1〜3の各ログ読み込み転送部141〜143に開始指示を出す(741)。なお、この開始指示は各ログ適用部152〜154が、ログ集合642〜644の適用が完了した時点で、リストア制御部140へ完了通知を送信し(740)、リストア制御部140は全てのログ適用部152〜154で、領域移動ログ316〜318までのログ適用が同期したことを判定してから、開始指示を送信するようにしても良い。
【0058】
ログ読み込み転送部141〜143は、ログ領域216〜218から領域移動ログ316〜318以降のログ集合742〜743を読み込み(745)、リストア制御部140に送信する(748)。
【0059】
リストア制御部140部は、上記と同様に領域・サーバ対応表231を参照しログ読み込み転送部141〜143から送信されるログに記述されている領域を保持する適切なDBサーバのログ適用部に転送する(749)。ログ集合742、743、744を送信後、リストア制御部140は、ログ読み込み転送部141〜143から終了ログ740を受信し、終了する。リストア制御部140から送信されたログを受信したログ適用部152〜154は、領域移動ログ316〜318以降のログ集合をデータ領域211の各領域A212〜D215に適用する(750、751、752)。以上の動作によりリストア処理が完了し、データ領域211の各領域A212〜D215には、A3〜D3までの障害発生前のデータベースに回復する。
【0060】
ここで、DBサーバ1、2の動作について図7、図8を参照しながら説明する。
【0061】
DBサーバ1のログ読み込み転送部141は、リストア処理の開始指示を管理サーバ104のリストア制御部140から受けると、ログ領域216からログ「A1→A2」、「B1→B2」を読み込んで管理サーバ104のリストア制御部140に転送する(645、648)。そしてログ読み込み転送部141は、ログ領域216から領域移動ログ316まで読み込み、リストア制御部140に送信すると、ログの読み込み及び転送処理を再開指示があるまで中断する。
【0062】
管理サーバ104のリストア制御部140は、DBサーバ1のログ読み込み転送部141から転送されたログ「A1→A2」を読み込むと、このログに記載されたデータの格納領域を判定し、領域・サーバ対応表231を参照して、判定された領域Aに割り当てられたDBサーバ1を決定し、当該DBサーバ1のログ適用部152へログ「A1→A2」を転送する。そして、ログ適用部152では、バックアップデータA1’にログを適用して領域A212をA2の状態に回復する。
【0063】
次に、リストア制御部140は、ログ「B1→B2」を読み込むと、このログに記載されたデータの格納領域を判定し、領域・サーバ対応表231を参照して、判定された領域Bに割り当てられたDBサーバ2を決定し、当該DBサーバ2のログ適用部153へログ「B1→B2」を転送する。ログ適用部153では、バックアップデータB1’にログを適用して領域B212をB2の状態に回復する。
【0064】
ここで、ログ「B1→B2」は、図2の状態ではDBサーバ1のログとして出力されたものであるが、リストア処理開始時点の領域・サーバ対応表231に基づいて、領域移動後に領域B213割り当てられたDBサーバ2へログを転送することで、各DBサーバ1〜3が占有するデータベースを回復するのである。
【0065】
そして、ログ読み込み転送部141〜143は、領域移動ログ316〜318を読み込むとログの送信を一時的に停止して、リストア制御部140からの開始時を待つ。リストア制御部140は各ログ適用部152〜154が同期するのを待ってから、開始指示を送信し、次のログをログ読み込み転送部141〜143に送信させる。
【0066】
そして、領域移動ログ316〜318まで読み込むと、各ログ適用部152〜154が同期するのを待って、さらに、次のログを適用する処理を、ログの終端まで繰り返す。
【0067】
上記リストア制御部140における、集中ログ転送方式によるリストア制御ログ転送処理のフローチャートを、図9、図10、および図11に示す。
【0068】
はじめに、各DBサーバ1〜3のログ読み込み転送部141〜143に開始指示を出す(911)。リストア制御部140は、ログ読み込み転送部141〜143から送信されるログを受け取り(912)、そのログの種類をチェックする(913)。受け取ったログが領域移動ログである場合は結合子903が示す処理に進む。一方、終了ログである場合は結合子904が示す処理に進む。
【0069】
領域移動ログや終了ログでない場合は、領域・サーバ対応表231により現在該ログに記述されている領域を保持する適切なDBサーバを探し、該DBサーバのログ適用部にログを送信する(処理914)。
【0070】
結合子903の先の処理を図10に示す。領域移動ログを送信したDBサーバを記録する(1001)。なお、この記録は管理サーバ104の図示しないメモリなどに格納することで行われる。記録方法の好適な実施の方法としては、DBサーバ1〜3分のビットマップを保持し、ログを受け付けたDBサーバ1〜3に対応するビットを立てる方法がある。また、他の好適な実施の方法として、送信したDBサーバ1〜3をリストとして保持する方法もある。
【0071】
続いて全てのDBサーバ1〜3から領域移動ログ316〜318が送信されたかチェックする(1002)。前記ビットマップを用いる方法では、全てのDBサーバ1〜3のビットが立っているかをチェックする。全てのDBサーバ1〜3から領域移動ログ316〜318が送信されていなければ結合子902に進む。結合子902の先は処理912であり、続いてログを受け取り、処理を続けることになる。
【0072】
全てのDBサーバから領域移動ログ316〜318が送信されていれば、領域移動ログを受け取ったDBサーバの記録をクリアし(1003)、結合子901に進む。結合子901の先は処理911であり、再度各DBサーバのログ読み込み転送部141〜143に開始指示を出すことになる。結合子901に進む場合は全てのDBサーバ1〜3から領域移動ログが送信されている場合であり、全てのログ読み込み転送部141〜143は集中ログ転送方式によるリストア制御部140からの開始指示を待っている状態である。
【0073】
結合子904の先の処理を図11に示す。終了ログを送信したDBサーバ1〜3を記録する(1101)。記録方法は、上記領域移動ログの記録処理と同様の方法を用いればよいので、説明は省略する。
【0074】
続いて、全てのDBサーバ1〜3から終了ログが送信されていないかチェックする(1102)。全てのDBサーバ1〜3から終了ログが送信されていなければ結合子902の処理へ進む。全てのDBサーバ1〜3から終了ログが送信されていれば結合子905へ進む。結合子905の先では集中ログ転送方式リストア制御部の処理が終了する。つまり全てのDBサーバ1〜3からログの送信が終わり、ログ適用処理が終わったことを示す。
【0075】
次に、各DBサーバ1〜3のログ読み込み転送部141〜143における、ログ読み込み転送処理のフローチャートを図12に示す。
【0076】
図12において、処理開始後、集中ログ転送方式によるリストア制御部140からの開始指示を待つ(1201)。開始指示を受けると、ログ読み込み転送部141〜143は、ログ領域216〜218からログを読み込み(1202)、ログが読み込めたかチェックする(1203)。ここで読み込みに失敗した場合、ログを読み終えたと判断して、リストア制御部140に終了ログを送信する(処理1206)。
【0077】
ログの読み込みが成功した場合は、リストア制御部140にログを送信する(1204)。送信したログが領域移動ログ316〜318かどうかを判断し(1205)、領域移動ログ316〜318であったら処理1201へ進み、領域移動ログでない場合は処理1202へ進む。
【0078】
以上の処理により、リストア制御部140は、各DBサーバ1〜3から送られてきたログをリストア開始時の領域・サーバ対応表231に基づいてログを転送し、領域移動ログ316〜318を区切りとして各ログ適用部152〜154の同期を取ることで、前記従来例のようにログの結合やソートを必要とせずに、高速でリストア処理を実現することができる。また、リストア処理では、無共有型データベースシステムを構成する計算機リソースのみで、ログ適用を行うことができるので、前記従来例のようにログを結合し、ソートするためのリソースを必要としないため、リストア処理のためのリソースの確保作業が不要となり、リストア処理を迅速に開始することができる。
【0079】
また、DBサーバ1〜3のログ読み込み転送部141〜143がログ領域216〜218のログを読み込んで送信したが、図29で示すように、管理サーバ104にログ読み込み部1410を設け、リストア制御部140が各DBサーバ1〜3のログを読み込むように指令してもよい。また、ログ領域216〜218がDBサーバ1〜3のローカルディスクにある場合は、ログ読み込み部1410がログ領域216〜218を管理サーバ104にコピーすることで実現が可能となる。
【0080】
また、上記第1実施形態では、領域管理部132〜134が領域移動ログを出力したが、データ処理部121〜123が領域移動ログ316〜318を出力するようにしても良い。この場合、領域管理部132〜134がデータ処理部121〜123に領域移動ログを出力する指令を送出すればよい。
【0081】
<第2実施形態>
図13は、第2の実施形態を示す無共有型データベースシステムの一例を示すブロック図である。
【0082】
本第2実施形態は、前記第1実施形態に示したDBサーバ1〜3のログ読み込み転送部141〜143に代わって、ログ読み込み振り分け部1321〜1323を設け、管理サーバ104に存在する領域・サーバ対応表231をDBサーバ1〜3にそれぞれコピーし、各自のログ領域216〜218からログを読み込んだDBサーバ1〜3が、現在ログに記述されている領域を保持する適切なDBサーバ1〜3に直接転送するようにしたもので、その他の構成は前記第1実施形態と同様である。
【0083】
図13は、リストア処理を行うための管理サーバ104及びDBサーバ1〜3のブロック図を示しており、図13では図示を省略したが、管理サーバ104は、図1と同様にデータ領域211の各領域A212〜D215とDBサーバ1〜3の割り当てを管理する領域割り当て管理部130を有する。同様に、図13では図示を省略したが、DBサーバ1〜3は、図1と同様に割り当てられたデータ領域211の各領域A212〜D215を管理する領域管理部132〜134と、割り当てられた領域A212〜D215にアクセスしてデータベース処理を行うデータ処理部121〜123を有し、前記図3と同様に、管理サーバ104から領域移動の指令を受けると、各DBサーバ1〜3の領域管理部132〜134はログ領域216〜218に領域移動ログ316〜318を出力する。
【0084】
リストア処理におけるログの適用は、管理サーバ104の分散ログ転送方式によるリストア制御部1400と、各DBサーバ1〜3のログ読み込み振り分け部1321〜1323及びログ適用部152〜154により行われる。
【0085】
各DBサーバ1〜3のログ読み込み振り分け部1312〜1323は、管理サーバ104の領域・サーバ対応表231をコピーした領域・サーバ対応表(ログ転送情報格納部)2311〜2313をそれぞれ有し、ログ領域216〜218からログを読み込み、領域・サーバ対応表2311〜2313を検索して現在のログに記述されている領域を保持する適切なDBサーバのログ適用部152〜154に送信する。ただし、ログ読み込み振り分け部1321〜1323が領域移動ログ316〜318を読み込んだ場合は、分散ログ転送方式によるリストア制御部1400からの開始指示を受けるまでログの送信を中断する。リストア制御部1400は、各DBサーバ1〜3のログ読み込み振り分け部1312〜1323に開始指示を適切に出しながらリストア処理を制御する。
【0086】
分散ログ転送方式によるリストア制御部1400におけるリストア処理のフローチャートを、図14、図15、および図16に示す。
【0087】
はじめに、各DBサーバ1〜3に領域・サーバ対応表231をコピーし、各DBサーバ1〜3のログ読み込み振り分け部1312〜1323に領域・サーバ対応表2311〜2313を格納する(1411)。続いて、各DBサーバ1〜3のログ読み込み振り分け部1321〜1323にリストア処理の開始指示を出す(1412)。ログ読み込み振り分け部から送信される通知を受け取り(1413)、通知の種類をチェックする(1414)。受け取った通知が領域移動通知である場合は結合子1403が示す処理に進む。終了通知である場合は結合子1404が示す処理に進む。なお、領域移動通知は、各DBサーバ1〜3のログ読み込み振り分け部1321〜1323が領域移動ログ316〜318を読み込んだときに、リストア制御部1400へ送信する通知であり、終了通知は、各ログ読み込み振り分け部1321〜1323が各自のログ領域216〜218の終端まで達したときにリストア制御部1400へ送信する通知である。
【0088】
図14の結合子1403の先の処理を図15に示す。領域移動通知を送信したDBサーバ1〜3を記録する(1501)。記録方法は、前記第1実施形態と同様に行えばよい。続いて全てのDBサーバ1〜3から領域移動通知が送信されたかチェックする(1502)。全てのDBサーバ1〜3から領域移動通知が送信されていなければ結合子1402に進む。結合子1402の先は処理1413であり、引き続き通知を待つ。全てのDBサーバ1〜3から送信されていれば、領域移動通知を受け取ったDBサーバ1〜3の記録をクリアし(1503)、結合子1401に進む。結合子1401の先は処理1412であり、再度各DBサーバ1〜3のログ読み込み振り分け部1321〜1323に開始指示を出すことになる。結合子1401に進む場合は、全てのDBサーバ1〜3から領域移動通知が送信されている場合であり、全てのログ読み込み振り分け部1321〜1323は分散ログ転送方式リストア制御部1400からの開始指示を待っている状態である。
【0089】
結合子1404の先の処理を図16に示す。終了通知を送信したDBサーバ1〜3を記録する(1601)。終了通知の記録も上記領域移動通知と同様に、前記第1実施形態と同様に行えばよい。続いて、全てのDBサーバ1〜3から終了通知が送信されていないかチェックする(1602)。全てのDBサーバ1〜3から終了通知が送信されていなければ結合子1402の処理へ進む。全てのDBサーバ1〜3から終了通知が送信されていれば結合子1405へ進む。結合子1405の先ではリストア制御部1400の処理が終了する。つまり全てのログ読み込み振り分け部1321〜1323がログを読み終わり、ログ適用処理が終わったことを示す。
【0090】
各DBサーバ1〜3のログ読み込み振り分け部1321、1322、1323における、ログ送信ログ読み込み振り分け処理のフローチャートを図17に示す。
【0091】
処理開始後、分散ログ転送方式によるリストア制御部1400からの開始指示を待つ(1711)。開始指示を受けると、ログ領域216〜218からログを読み込み(1712)、ログが読み込めたか否かをチェックする(1713)。ここで読み込みが失敗した場合には、ログを読み終えたと判断し、リストア制御部1400に終了通知を送信する(1717)。ログの読み込みが成功した場合は、領域移動ログ316〜318かどうかをチェックする(1714)。領域移動ログ316〜318であった場合にはリストア制御部1400に領域移動通知を送信し、処理1711へ進む。領域移動ログ以外の場合は、領域・サーバ対応表2311〜2313を検索し、読み込んだログに記述されている領域を保持する適切なDBサーバのログ適用部152〜154に当該ログを送信し(処理1715)、処理1712に進む。
【0092】
図13を用いて上記リストア処理の全体の流れを説明する。
【0093】
リストア制御部1400は領域・サーバ対応表231を各DBサーバ1〜3にコピーし、各DBサーバ1〜3のログ読み込み振り分け部1312〜1323は領域・サーバ対応表2311〜2313を格納する(1341)。
【0094】
リストア制御部1400は各ログ読み込み振り分け部1321、1322、1323にリストア処理の開始指示を出す(1342)。ログ読み込み振り分け部1321〜1323は、各自のログ領域216〜218から領域移動ログ316〜318を読み込むまでログを読み込み、ログに記述されている領域に対応するDBサーバ1〜3のログ適用部152〜154にログを送信する。
【0095】
領域移動ログ316〜318を読み込むとログ読み込み振り分け部1312〜1323は、リストア制御部1400に領域移動通知を送信する(1352、1353、1354)。ログ読み込み振り分け部1321〜1323は、ログ領域216〜218から領域移動ログ316〜318までをログ集合1343〜1345として読み込む(1346)。
【0096】
ここで、DBサーバ1のログ読み込み振り分け部1322はログ領域216に格納されている領域A212のログと領域B213のログを読み込むため、領域A212のログをログ適用部512へ送りログを適用し、領域B213のログは領域・サーバ対応表2311に基づいてDBサーバ2のログ適用部153へ送信する。
【0097】
DBサーバ2のログ読み込み振り分け部1322は、ログ領域217から領域移動ログ317までのログをログ集合1344として読み込む(1347)。ログ読み込み振り分け部1322は領域C214のログを読み込むため、領域Cのログはログ適用部153へ送る(1350)。
【0098】
また、DBサーバ2のログ適用部153は、DBサーバ1のログ読み込み振り分け部1321から受信した領域Bのログを読み込む(1349)。
【0099】
DBサーバ3のログ読み込み振り分け部1323は、ログ領域218から領域移動ログ317までのログをログ集合1345として読み込む(1348)。ログ読み込み振り分け部1323は領域D215のログを読み込むため、領域Dのログはログ適用部154へ送る(1351)。
【0100】
各ログ読み込み振り分け部1321、1322、1323の処理は並列に実行される。各ログ適用部152〜154は、それぞれログを適用し、データ領域211の各領域A212〜D215を回復する(1355、1356、1357)。この時点で、ログ読み込み振り分け部1321、1322、1323はリストア制御部1400からの開始指示待ちになっており、ログ適用部152〜154が領域移動ログ316〜318より前のログを適用したことになる。
【0101】
リストア制御部1400は領域移動通知を全てのDBサーバ1〜3のログ読み込み振り分け部1321〜1323から受信すると、各ログ読み込み振り分け部1321〜1323に対して再度開始指示を出す。
【0102】
各ログ読み込み振り分け部1321〜1323と各ログ適用部152〜154は、領域移動ログ316〜318より後のログを上記と同様に読み込み、領域・サーバ対応表2311〜2313に基づくDBサーバ1〜3に転送し、自DBサーバ1〜3に対応するログを適用する。ログをすべて読み込んだ後、各ログ読み込み振り分け部1321〜1323はリストア制御部1400に終了通知を送信する。この終了通知を受け、リストア制御部1400はリストア処理を終了する。以上の動作によりリストア処理が完了し、データ領域211の各領域A212〜D215の回復が完了する。
【0103】
以上の処理により、リストア処理の際には、各DBサーバ1〜3のログ読み込み振り分け部1321〜1323がリストア開始時の領域・サーバ対応表2311〜2313に基づいてログを転送し、領域移動ログ316〜318を区切りとして各ログ適用部152〜154の同期を取ることで、前記従来例のようにログの結合やソートを必要とせずに、高速でリストア処理を実現することができる。また、リストア処理では、無共有型データベースシステムを構成する計算機リソースのみで、ログ適用を行うことができるので、前記従来例のようにログを結合し、ソートするためのリソースを必要としないため、リストア処理のためのリソースの確保作業が不要となり、リストア処理を迅速に開始することができる。
【0104】
<第3実施形態>
図18は、第3の実施形態を示し、前記第2実施形態に示した各DBサーバ1〜3がそれぞれ占有するログ領域216〜218を格納するストレージ装置21〜23に、ログ管理領域1216、1217、1218を設け、各DBサーバ1〜3にはログ管理領域1216〜1218及びログ領域216〜218を管理するログ領域管理部1841〜1843を設けたもので、その他の構成は前記第1実施形態と同様である。
【0105】
前記第2実施形態との相違点について説明する。DBサーバ1〜3には、DBサーバ1〜3がそれぞれログ領域216〜218を使い始める際に、これらログ領域の初期化を行うモジュールである。そして、各DBサーバ1〜3がログ領域216〜218を設定したストレージ装置21〜23には、ログ管理領域1216〜1218が設定される。ログ領域管理部1841〜1843は、領域移動時など、DBサーバ1〜3がログ領域216〜218の使用を開始するときに、ログ管理領域1216〜1218に領域管理表135〜137を書き込んで初期化を行う。つまり、領域移動が発生するたびに、ログ管理領域1216〜1218には、領域管理表135〜137の履歴が蓄積される。
【0106】
ログ領域管理部1841〜1843で行われるログ領域管理処理のフローチャートを図21に示す。ログ領域管理部1841〜1843は、ログ領域216〜218の初期化を行った後(2101)、ログ管理領域1216〜1218に領域・サーバ対応表231を記録する(2102)。
【0107】
ログ領域216〜218を使い始める際に、データ領域211は図2で示す割り当てであったとする。この場合、ログ領域216〜218を初期化した後、ログ領域管理部1841はログ管理領域12161に割り当てられた領域「A、B」と記録し、ログ領域管理部1842はログ管理領域1852に割り当てられた領域「C」と記録し、ログ領域管理部1843はログ管理領域1853に割り当てられた領域「D」と記録する。
【0108】
そして、前記第1実施形態の図3で示したように、領域移動が発生すると、領域管理部132〜134は、各ログ領域216〜218に領域移動ログ1316〜1318を出力する。また、ログ領域管理部1841〜1843は、ログ管理領域1216〜1218に新たな領域管理表を書き込む。これにより、ログ管理領域1216〜1218には、領域移動のログが蓄積される。
【0109】
ここで、領域管理部132〜134が出力する領域移動ログ1316〜1318には、管理サーバ104の領域割り当て管理部130からの指令に応じた新たな割り当て領域を付加される点が前記第1実施形態と相違する。
【0110】
領域管理部132〜134は、領域移動の際に、前記第1実施形態の図8に示したフローチャートに従って領域移動ログ1316〜1318をログ領域216〜218に出力する。
【0111】
ここで、前記第1実施形態の図3と同様の領域移動が発生した場合、DBサーバ1の領域管理部132は領域移動ログ1316に新たな割り当て領域「A」を記述し、DBサーバ2の領域管理部133は、領域移動ログ1317に新たな割り当て領域「B、C」を記述し、DBサーバ3の領域管理部134は、同一の割り当て領域「D」を領域移動ログ1318に記述する。
【0112】
同様に、DBサーバ1のログ領域管理部1841は、新たな割り当て領域「A」をログ管理領域1216に書き込み、DBサーバ2のログ領域管理部1842は、新たな割り当て領域「B、C」をログ管理領域1217に書き込み、DBサーバ3のログ領域管理部1843は、同一の割り当て領域「D」をログ管理領域1218に書き込む。
【0113】
リストア処理の際には、各DBサーバ1〜3のログ読み込み振り分け部1321〜1323は、ログ管理領域1216〜1218を参照することで、領域移動の履歴を把握でき、また、領域移動ログ1316〜1318には新たな割り当て領域が記述されているので、ログの転送先の変化を迅速に把握することができる。
【0114】
本第3実施形態におけるリストア処理は、前記第1実施形態と同様に、図5の状態(データベースのデータ=A3、B3、C3、D3)後に発生した障害から回復する場合について、図19、図20を参照しながら説明する。
【0115】
ログの適用は、前記第1実施形態と同様に、リストア制御部1400、ログ読み込み振り分け部1321〜1323、ログ適用部152〜154、およびデータ移動機能を実現する領域割り当て管理部130と領域管理部132〜134により行われる。
【0116】
各DBサーバ1〜3ではログ読み込み振り分け部1321〜1323がログを読み込み、ログ適用部152〜154がログの適用を行う。リストア制御部1400は、ログ読み込み振り分け部1321〜1323と領域管理部132〜134を制御し、ログが出力された時点の割り当て状態にしながらログの適用を進める。
【0117】
リストア制御部1400における領域移動方式によるリストア処理のフローチャートを、図22、図23、及び図24に示す。はじめに、バックアップデータA1’〜D1’によりバックアップ取得時点の領域割り当てに戻す(2211)。続いて、ログ読み込み振り分け部1321〜1323に開始指示を出す(2212)。各DBサーバ1〜3から通知を待ち(2213)、その通知の種類をチェックする(2214)。領域移動通知である場合、結合子2203へ進み、終了通知であれば結合子2204へ進む。
【0118】
結合子2203の先の処理を図23に示す。領域移動通知を送信したDBサーバ1〜3を記録する(2301)。記録方法は、前記第2実施形態と同様である。続いて、全てのDBサーバ1〜3から領域移動通知が送信されたかチェックする(2302)。全てのDBサーバ1〜3から領域移動通知が送信されていなければ結合子2202に進む。結合子2202の先は処理2213であり、引き続き通知を待つ。全てのDBサーバ1〜3から領域移動通知が送信されていれば、領域移動通知に含まれる領域・サーバ対応表231のデータを作成し、領域移動を行う(2303)。続いて、領域移動通知を受け取ったDBサーバの記録をクリアし(2304)、結合子2201に進む。結合子2201の先は処理2212であり、再度各DBサーバ1〜3のログ読み込み振り分け部1321〜1323にリストア処理の開始指示を出すことになる。
【0119】
結合子2201に進む場合は全てのDBサーバ1〜3から領域移動通知が送信されている場合であり、全てのログ読み込み振り分け部1321〜1323はリストア制御部1400からの開始指示を待っている状態である。
【0120】
結合子2204の先の処理を図24に示す。終了通知を送信したDBサーバ1〜3を記録する(2401)。続いて、全てのDBサーバ1〜3から終了通知が送信されていないかチェックする(2402)。全てのDBサーバ1〜3から終了通知が送信されていなければ結合子2202の処理へ進む。全てのDBサーバ1〜3から終了通知が送信されていれば結合子2205へ進む。結合子2205の先ではリストア制御部1400の処理が終了する。つまり全てのログ読み込み振り分け部1321〜1323がログを読み終わり、ログ適用処理が終わったことを示す。
【0121】
ログ読み込み振り分け部1321〜1323における振り分け処理のフローチャートを図25に示す。処理開始後、リストア制御部1400からのリストア処理の開始指示を待つ(2511)。開始指示を受けると、ログ領域216〜218からログを読み込み(2512)、ログが読み込めたか否かをチェックする(2513)。ここで読み込みが失敗した場合、ログを読み終えたと判断し、リストア制御部1400に終了通知を送信する(2517)。ログの読み込みが成功した場合は、領域移動ログかどうかをチェックする(2514)、領域移動ログであったらリストア制御部1400に領域移動通知を送信し、2511へ進む。領域移動ログ以外の場合は、同一DBサーバのログ適用部152〜154にログを送信し(2515)、処理2512に進む。
【0122】
上記リストア処理の全体の流れを図19、図20を用いて説明する。
【0123】
まず、リストア制御部1400は、バックアップ領域311のバックアップデータA1’〜D1’を用いて、データ領域211のデータベースをバックアップ取得時の状態に戻し、DBサーバ1〜3とデータ領域211の領域割り当て状態をバックアップ取得時点の状態に戻す。バックアップ取得時の領域割り当て状態は、ログ管理領域1216〜1218に格納されており、これを読み込む1961。読み込む手段としては、各DBサーバ1〜3のログ読み込み振り分け部1321〜1323がログ管理領域1216〜1218を読み込み、データを転送する方法がある。また、管理サーバ104がSAN110などを介して直接読み込める場合は直接読み込む方法もある。バックアップ取得時の領域割り当てを知ることができると、領域割り当て管理部130によりデータ領域の割り当てを変更する。これにより領域・サーバ対応表231や領域管理表235、236、237が更新される。その後、領域移動方式リストア制御部は全てのDBサーバ〜3のログ読み込み振り分け部1321〜1323にリストア処理の開始指示を出す(1962)。
【0124】
開始指示を受けたログ読み込み振り分け部1321〜1323は、領域移動ログ1316〜1318を読み込むまでログ領域216〜218からログを読み込み、同じDBサーバにあるログ適用部152〜154に転送する。ログ読み込み振り分け部1321〜1323はログ領域216〜218からログを読み込み(1963)、ログ適用部152〜154に送信する(1966)。
【0125】
ログ読み込み振り分け部1321〜1323が領域移動ログ1316〜1318を読み込むと、領域移動通知をログに含まれる領域管理表のデータと共にリストア制御部1400に送信する(1972)。
【0126】
ログ読み込み振り分け部1321〜1323から送信されたログを受信したログ適用部152〜154は、それぞれの領域にログを適用する。ログ適用部152は領域A212と領域B213を更新し(1969)、ログ適用部153は領域C214を更新し(1970)、ログ適用部154は領域D215を更新する(1971)。
【0127】
3つのDBサーバ1〜3から領域移動通知を受信したリストア制御部1400は、領域移動通知に含まれる領域管理表235〜237のデータを元に、次の領域割り当てに変更する。図19で領域移動通知を全て受け取り、次の割り当てに移行した状態を図20に示す。領域移動ログ1316〜1318のデータより、領域・サーバ対応表231と各DBサーバ1〜3に存在する領域管理表235〜237が更新される。
【0128】
そして、領域・サーバ対応表231に基づいてDBサーバ1〜3とデータ領域211の領域A〜Dの割り当てを更新した後、リストア制御部1400は再びログ読み込み振り分け部1321〜1323に開始指示を出す(2061)。
【0129】
開始指示を受けたログ読み込み振り分け部1321〜1323は、領域移動ログを読み込むまでログ領域216〜218からログを読み込み、同じDBサーバにあるログ適用部152〜154に転送する。ログ読み込み振り分け部1321〜1323がログ領域216〜218の全てのログを読み終えると、終了通知をリストア制御部1400に送信する2071。
【0130】
ログ読み込み振り分け部1321〜1323から送信されたログを受信したログ適用部は、それぞれのDBサーバ1〜3に割り当てられた領域にログを適用する。ログ適用部152は領域A212を更新し(2068)、ログ適用部153は領域B213と領域C214を更新し(2069)、ログ適用部154は領域D215を更新する(2070)。図19と異なる点は、領域・サーバ対応表231や各領域管理表235〜237が更新されているため、領域Bを更新するDBサーバが異なることである。図19ではログ適用部152が更新したのに対し、図20ではログ適用部1532が更新した。
【0131】
3つのDBサーバ1〜3から終了通知を受信したリストア制御部1400は、処理を終了する。これにより、リストア処理が完了する。
【0132】
ログ管理領域1216〜1218と領域移動ログ1316〜1318に領域割り当てのデータを記録せずに、通常運用時には領域管理部132により領域割り当ての履歴を記録し、リストア処理時に該領域割り当ての履歴により割り当てを変化させながらリストア処理するようにしてもよい。
【0133】
以上のように、第3の実施形態では、領域移動ログ1316〜1318に領域の割り当て情報を含め、ログ管理領域1216〜1218に領域移動の履歴を保存しておくことで、リストア処理の際にはDBサーバ1〜3とデータ領域211の割り当て関係を、バックアップ取得時点に戻してログ適用を行ってデータベースを回復させることができる。したがって、各DBサーバ1〜3のログを他のDBサーバに移動させることなくログ適用を行うことができるので、IPネットワーク103やSAN110の負荷を低減でき、より高速なリストア処理が可能となる。そして、前記第2実施形態と同様に、前記従来例のようなログの結合やソートが不要になるので、前記従来例に比して計算機リソースに対する負荷を大幅に低減しながらも、極めて高速なリストア処理を実現することができる。
【0134】
<第4実施形態>
図26は、第4の実施形態を示し、前記第1実施形態の領域移動ログ316〜318に識別子(ID)を付すようにしたもので、その他の構成は前記第1実施形態と同様である。
【0135】
DBサーバ1〜3に新たなDBサーバが追加されたり、DBサーバ1〜3の何れかが削除されたりする場合、各DBサーバ1〜3に割り当てられたログ領域216〜218も追加・削除される。このような場合、あるログ領域の領域移動ログが、別のログ領域の領域移動ログと対応していることが判別不能になる。このため、領域移動ログ2316〜2318にデータベースシステム内で位置の識別子であるIDを付ける。
【0136】
IDがつけられた領域移動ログを出力した状態を図26に示す。領域移動ログ2316〜2318が同じ領域移動で出力されたログであることを示すために、同じID(図中id000)が付加されている。
【0137】
この場合、管理サーバ104の領域割り当て管理部130がIDを管理する。領域移動を行う際には、領域割り当て管理部130は、各DBサーバ1〜3の領域管理部132〜134へ領域移動を通知するとともに、IDを通知する。領域管理部132〜134は、各DBサーバ1〜3のログ領域216〜218へ、受信したIDを付加した領域移動ログ2316〜2318を出力する。
【0138】
リストア処理の際には、リストア制御部140が領域割り当て管理部130に各ログ領域216〜218の領域移動ログ2316〜2318のIDを問い合わせることで、追加あるいは削除されたDBサーバを識別することができる。
【0139】
なお、本第4実施形態のIDを、前記第3実施形態の領域移動ログ1316〜1318に付加するようにしても良い。
【0140】
<第5実施形態>
図27は、第5の実施形態を示し、前記第1実施形態のログ領域216〜218を複数の書き込み領域(ログファイル)を設け、領域移動があるとログを書き込む領域を切り換えるようにしたものであり、その他の構成は、前記第1実施形態と同様である。
【0141】
図27は、前記第1実施形態に示した図1のログ領域216〜218がログファイルの切り換えにより区切られた状態を示す。
【0142】
ログ領域216〜218は、それぞれ2つのログファイル2720、2721、2722、2723、2724、2725から構成される。領域移動前のログはログファイル2720、2722、2724に出力される。領域移動を行った際にはログファイルを切り換え、領域移動を行った後のログはログファイル2721、2723、2725に出力される。領域移動時にログファイルが切り替わることにより領域移動前後のログが別々のログファイルに格納され、領域移動前後のログ集合が切り分けられる。
【0143】
通常複数のログファイルで運用している際には、領域移動以外のイベントでもログファイルが切り替わる。例えば、ログファイルの空き領域がなくなった場合や、ログファイルを保存するために強制的にログファイルを切り替える場合などである。ファイルの終端が領域移動により切り替わったものか、その他のイベントで切り替わったものかを判定するために、ログファイルの管理領域に領域移動により切り替わったことを記録する。例えば、ログファイルの先頭に特定のビットパターンを記録する方法でも良いし、ログファイルのメタデータ(ファイルサイズや所有者等ファイルの属性を示すデータ)を記録する場所に記録する方法でもよい。通常ログファイルは制御ファイルにて世代管理されており、この世代管理している制御ファイルで管理する方法でもよい。
【0144】
リストア処理の際には、領域移動ログを検出する代わりに、領域移動により切り替わったログファイルの終端を検出することでログの区切りとすることができる。ログ読み込み転送部141〜143が各ログ領域216〜218を読み込んでいる場合、ログファイル2720、2722、2724から読み込む。ログ読み込み転送部141〜143がログファイル2720、2722、2724の終端を検出すると、領域移動ログを読み込んだとして領域移動ログを送信し、リストア制御部140からの開始指示を待つ。ログ読み込み転送部141〜143が開始指示を受けると、読み込むログファイルをログファイル2720、2722、2724からログファイル2721,2723,2725に切り替え処理を続ける。このようにリストア処理の際には、各ログ領域216〜218内のログファイル2720〜2725を切り替えて、ログを読み込んで適用することができる。
【0145】
なお、各ログ領域216〜218内のログファイルの数は、2つに限定されるものではなく、任意の数に設定することができる。あるいは、各ログ領域216〜218内のログファイルの数は、領域移動の度に増加するようにしても良い。
【0146】
<第6実施形態>
図28は、第6の実施形態を示し、前記第1実施形態のストレージ装置21〜23を、ストレージ装置10に集約し、ストレージ装置10に設けた非共有ボリューム2160、2170、2180を、それぞれログ領域216〜218としたもので、その他の構成は、前記第1実施形態と同様である。
【0147】
この場合、ストレージ装置10には、DBサーバ1〜3で共有されるボリュームにデータ領域211が設定され、データ領域211内にはDBサーバ1〜3と一意に対応する領域(データ格納領域)A212〜D215が設定され、さらに、DBサーバ1〜3がそれぞれ占有する非共有ボリューム2160、2170、2180に、ログ領域216〜218が設定される。
【0148】
領域移動によりDBサーバ1〜3とデータ格納領域A212〜D215の対応関係が変化しても、各DBサーバ1〜3が出力するログは、各DBサーバ1〜3が占有するログ領域216〜218に格納される点は、前記第1実施形態と同様である。
【産業上の利用可能性】
【0149】
以上のように、本発明は、無共有型データベースの管理システムに適用可能であり、領域移動前のデータ領域とバックアップ取得時以降のログから、ソート処理や結合処理を行うことなくリストア処理を実現できる。
【図面の簡単な説明】
【0150】
【図1】第1の実施形態を示し、データベースシステムの構成図。
【図2】バックアップ取得時点のデータ及びログの状態を示す説明図。
【図3】領域移動時のデータの状態を示す説明図。
【図4】各DBサーバの領域管理部で行われる処理の一例を示すフローチャート。
【図5】領域移動を行った後のデータの状態を示す説明図。
【図6】リストア処理の開始時のデータの状態を示す説明図。
【図7】リストア処理中のデータの状態を示す説明図で、領域移動までの処理を示す。
【図8】リストア処理中のデータの状態を示す説明図で、領域移動後からの処理を示す。
【図9】管理サーバのリストア制御部で行われる処理の一例を示すフローチャート。
【図10】同じく、管理サーバのリストア制御部で行われる処理の一例を示し、領域移動ログの判定処理を示すフローチャート。
【図11】同じく、管理サーバのリストア制御部で行われる処理の一例を示し、終了ログの判定処理を示すフローチャート。
【図12】DBサーバのログ読み込み転送部で行われる処理の一例を示すフローチャート。
【図13】第2の実施形態を示し、データベースシステムの構成図。
【図14】第2の実施形態を示し、管理サーバのリストア制御部で行われる処理の一例を示すフローチャート。
【図15】第2の実施形態を示し、同じく、管理サーバのリストア制御部で行われる処理の一例を示し、領域移動通知の判定処理を示すフローチャート。
【図16】第2の実施形態を示し、同じく、管理サーバのリストア制御部で行われる処理の一例を示し、終了通知の判定処理を示すフローチャート。
【図17】第2の実施形態を示し、DBサーバのログ読み込み振り分け部で行われる処理の一例を示すフローチャート。
【図18】第3の実施形態を示し、データベースシステムの構成図。
【図19】第3の実施形態を示し、リストア処理中のデータの状態を示す説明図で、領域移動までの処理を示す。
【図20】第3の実施形態を示し、リストア処理中のデータの状態を示す説明図で、領域移動後からの処理を示す。
【図21】第3の実施形態を示し、DBサーバのログ領域管理部で行われる処理の一例を示すフローチャート。
【図22】第3の実施形態を示し、管理サーバのリストア制御部で行われる処理の一例を示すフローチャート。
【図23】第3の実施形態を示し、同じく、管理サーバのリストア制御部で行われる処理の一例を示し、領域移動通知の判定処理を示すフローチャート。
【図24】第3の実施形態を示し、同じく、管理サーバのリストア制御部で行われる処理の一例を示し、終了通知の判定処理を示すフローチャート。
【図25】第3の実施形態を示し、DBサーバのログ読み込み振り分け部で行われる処理の一例を示すフローチャート。
【図26】第4の実施形態を示し、データベースシステムの構成図。
【図27】第5の実施形態を示し、ログ領域の説明図。
【図28】第6の実施形態を示し、ストレージ装置の説明図。
【図29】第1の実施形態の他の例を示し、データベースシステムの構成図。
【符号の説明】
【0151】
1〜3 DBサーバ
10、21〜23 ストレージ装置
102 フロントエンドサーバ
103 IPネットワーク
104 管理サーバ
110 SAN
121〜123 データ処理部
130 領域の割り当て管理部
132〜134 領域管理部
140 リストア制御部
141〜143 ログ読み込み転送部
152〜154 ログ適用部
211 データ領域
212〜215 領域A〜D
216〜218 ログ領域
231 領域・サーバ対応表
235〜237 領域管理表
311 バックアップ領域
316〜318 領域移動ログ
1216〜1218 ログ管理領域
1321〜1323 ログ読み込み振り分け部
1841〜1843 ログ領域管理部

【特許請求の範囲】
【請求項1】
ネットワークを介して接続された複数のデータベースサーバと、
前記データベースサーバのデータを格納する複数のデータ格納領域と、
前記データベースサーバとデータ格納領域の対応関係を管理する管理サーバと、を備えたデータ処理システムにおいて、
前記管理サーバは、
前記複数のデータ格納領域と該データ格納領域にアクセスするデータベースサーバを割り当て、前記データベースサーバに割り当てるデータ格納領域を指示する領域割り当て管理部を有し、
前記データベースサーバは、
前記領域割り当て管理部が該データベースサーバに割り当てた前記データ格納領域を保持する領域管理部と、
前記領域管理部が保持するデータ格納領域にデータを格納して参照または更新を行い、前記更新を行った場合にはデータベースサーバ毎に予め設定されたログ領域にデータの変更履歴を示すログを格納するデータ処理部と、を有し、
前記領域管理部は、前記管理サーバの領域割り当て管理部からデータ格納領域を変更する通知を受けたときには、データ格納領域の変更があったことを示す領域移動ログを前記ログ領域に格納することを特徴とするデータ処理システム。
【請求項2】
前記管理サーバは、
前記各データベースサーバ毎のログ領域に格納された前記領域移動ログを区切りとしたログ集合を単位としてリストア処理を行うリストア制御部を有し、
前記データベースサーバは、
前記リストア制御部からの指令に基づいて、前記ログ領域のログを前記データ格納領域に適用し、データを回復することを特徴とする請求項1に記載のデータ処理システム。
【請求項3】
前記データ格納領域は、前記各データベースサーバ間で共有可能な第1のストレージ装置に設定され、
前記ログ領域は、前記各データベースサーバがそれぞれ占有する第2のストレージ装置に設定されたことを特徴とする請求項1に記載のデータ処理システム。
【請求項4】
前記データベースサーバは、
前記リストア制御部からの指令に基づいて、前記ログ領域からログを読み込んで、前記領域管理部に保持されたデータ格納領域以外のログを前記リストア制御部に転送するログ読み込み転送部と、
前記リストア制御部から転送されたログまたは、前記ログ読み込み転送部が読み込んだ前記領域管理部に保持されたデータ格納領域に対応するログを当該データベースサーバに割り当てられたデータ格納領域に適用するログ適用部と、を有し、
前記リストア制御部は、
前記領域割り当て管理部の設定に基づいて、受信したログを適用すべきデータベースサーバに送信することを特徴とする請求項2に記載のデータ処理システム。
【請求項5】
前記データベースサーバは、
前記リストア制御部から転送されたログを当該データベースサーバに割り当てられたデータ格納領域に適用するログ適用部を有し、
前記管理サーバは、
前記リストア制御部からの指令に基づいて、前記データベースサーバのログ領域からログを読み込むログ読み込み部を有し、
前記リストア制御部は、
前記領域割り当て管理部の設定に基づいて、前記読み込んだログを適用すべきデータベースサーバに送信することを特徴とする請求項2に記載のデータ処理システム。
【請求項6】
前記ログ読み込み転送部は、
前記領域管理部に保持されたデータ格納領域に対するログは、前記ログ適用部に送り、前記領域移動ログを前記リストア制御部へ転送したときには、前記リストア制御部からの指令を待って次のログを読み込み、
前記リストア制御部は、前記領域移動ログを受信したときには、全てのデータベースサーバのログ読み込み転送部から領域移動ログを受信した後に、前記ログ読み込み転送部へログの読み込みを再開する指令を送信することを特徴とする請求項4に記載のデータ処理システム。
【請求項7】
前記データベースサーバは、
前記リストア制御部からの指令に基づいて、前記管理サーバの領域割り当て管理部からデータベースサーバに割り当てたデータ格納領域の対応関係を取得するログ転送情報格納部と、
前記ログ領域からログを読み込んで、前記ログ転送情報格納部の対応関係に基づいて当該ログをデータベースサーバに転送するログ読み込み振り分け部と、
他のデータベースサーバから受信したログまたは、前記ログ読み込み振り分け部から送られたログを当該データベースサーバに割り当てられたデータ格納領域に適用するログ適用部と、を有することを特徴とする請求項2に記載のデータ処理システム。
【請求項8】
前記ログ読み込み振り分け部は、
前記領域移動ログを転送したときには、当該領域移動ログの読み込みを前記リストア制御部に通知した後、リストア制御部からの指令を待って次のログを読み込み、
前記リストア制御部は、前記領域移動ログの読み込み通知を受信したときには、全てのデータベースサーバのログ読み込み振り分け部から領域移動ログの読み込み通知を受信した後に、前記ログ読み込み振り分け部へログの読み込みを再開する指令を送信することを特徴とする請求項7に記載のデータ処理システム。
【請求項9】
前記ログ領域は、前記データベースサーバに割り当てられたデータ格納領域の履歴を格納するログ管理領域を含み、
前記領域管理部は、前記管理サーバの領域割り当て管理部からデータ格納領域を変更する通知を受けたときには、新たなデータ格納領域を前記ログ管理領域に格納することを特徴とする請求項1に記載のデータ処理システム。
【請求項10】
前記管理サーバは、
前記各データベースサーバにリストア処理を指令するリストア制御部を有し、
前記データベースサーバは、
前記領域管理部が、前記リストア制御部からの指令に基づいて、前記ログ管理領域に格納されたデータ格納領域の履歴に基づいて当該データベースサーバがアクセスするデータ格納領域を設定し、
前記ログ領域からログを読み込むログ読み込み部と、
前記ログ読み込み部が読み込んだログを前記領域管理部に設定されたデータ格納領域に適用するログ適用部と、を有し、
前記領域管理部は、前記領域移動ログを読み込んだときには、前記データ格納領域の履歴に応じて前記データ格納領域を変更しながら、データを回復することを特徴とする請求項9に記載のデータ処理システム。
【請求項11】
前記領域管理部は、前記領域移動ログに識別子を付して前記ログ領域に格納することを特徴とする請求項1に記載のデータ処理システム。
【請求項12】
ネットワークを介して接続された複数のデータベースサーバと、
前記データベースサーバのデータを格納する複数のデータ格納領域と、
前記データベースサーバとデータ格納領域の対応関係を管理する管理サーバと、を備えたデータ処理システムにおいて、
前記管理サーバは、
前記複数のデータ格納領域と該データ格納領域にアクセスするデータベースサーバを割り当て、前記データベースサーバに割り当てるデータ格納領域を指示する領域割り当て管理部を有し、
前記データベースサーバは、
前記領域割り当て管理部が該データベースサーバに割り当てた前記データ格納領域を保持する領域管理部と、
前記領域管理部が保持するデータ格納領域にデータを格納して参照または更新を行い、前記更新を行った場合にはデータベースサーバ毎に予め設定されたログ領域にデータの変更履歴を示すログを格納するデータ処理部と、を有し、
前記データベースサーバ毎に設定されたログ領域は、複数のログ領域であり、
前記領域管理部は、前記管理サーバの領域割り当て管理部からデータ格納領域を変更する通知を受けたときには、前記ログ領域を変更することを特徴とするデータ処理システム。
【請求項13】
前記管理サーバは、
前記各データベースサーバにリストア処理を指令するリストア制御部を有し、
前記データベースサーバは、
前記リストア制御部からの指令に基づいて、前記ログ領域からログを読み込むログ読み込み部と、
前記ログ読み込み部が読み込んだログを前記領域管理部に設定されたデータ格納領域に適用するログ適用部と、を有し、
前記ログ読み込み部は、領域移動ログを読み込んだときには前記ログ領域を切り替えることを特徴とする請求項12に記載のデータ処理システム。
【請求項14】
複数のデータベースサーバが、管理サーバにより割り当てられたデータ格納領域にアクセスするデータベースの管理方法であって、
前記管理サーバが、複数のデータ格納領域と該データ格納領域にアクセスするデータベースサーバを割り当てる手順と、
前記データベースサーバが、前記割り当てられたデータ格納領域にデータを格納して参照または更新を行う手順と、
前記更新を行った場合には、データベースサーバ毎に予め設定されたログ領域にデータの変更履歴を示すログを格納する手順と、
前記管理サーバからデータ格納領域を変更する通知を受けたときには、前記データベースサーバがデータ格納領域の変更があったことを示す領域移動ログを前記ログ領域に格納する手順と、
を含むことを特徴とするデータベースの管理方法。
【請求項15】
前記管理サーバが、前記各データベースサーバ毎のログ領域に格納された前記領域移動ログを区切りとしたログ集合を単位としてリストア処理を前記データベースサーバに指令する手順と、
前記データベースサーバが、前記指令に基づいて、前記ログ領域に格納されたログを前記データ格納領域に適用し、データを回復する手順と、
を含むことを特徴とする請求項14に記載のデータベースの管理方法。
【請求項16】
前記データベースサーバが前記リストア処理の指令に基づいて、前記データベースサーバ毎に設定されたログ領域からログを読み込む手順と、
前記読み込んだログが、当該データベースサーバに割り当てられたデータ格納領域に対応しない場合には、前記管理サーバへ送信する手順と、
前記管理サーバは、前記割り当てたデータ格納領域とデータベースサーバの対応関係から、前記データベースサーバから受信したログを適用すべきデータ格納領域が割り当てられたデータベースサーバに転送する手順と、
前記管理サーバから転送されたログ、または当該データベースサーバに割り当てられたデータ格納領域に対応する前記読み込んだログを、当該データベースサーバに割り当てられたデータ格納領域に適用する手順と、
を含むことを特徴とする請求項15に記載のデータベースの管理方法。
【請求項17】
前記データベースサーバが前記リストア処理の指令に基づいて、前記管理サーバからデータベースサーバに割り当てたデータ格納領域の対応関係をログ転送情報として取得する手順と、
前記データベースサーバ毎に設定されたログ領域からログを読み込む手順と、
前記読み込んだログが、当該データベースサーバに割り当てられたデータ格納領域に対応しない場合には、前記ログ転送情報に基づいて他のデータベースサーバへ送信する手順と、
前記他のデータベースサーバから転送されたログ、または当該データベースサーバに割り当てられたデータ格納領域に対応する前記読み込んだログを、当該データベースサーバに割り当てられたデータ格納領域に適用する手順と、
を含むことを特徴とする請求項15に記載のデータベースの管理方法。
【請求項18】
前記領域移動ログを前記ログ領域に格納する手順は、
前記データベースサーバが、前記管理サーバからデータ格納領域を変更する通知を受けたときには、前記ログ領域に対応して予め設定されたログ管理領域に、新たなデータ格納領域をデータ格納領域の履歴として格納することを特徴とする請求項14に記載のデータベースの管理方法。
【請求項19】
前記データベースサーバが前記リストア処理の指令に基づいて、前記ログ管理領域から前記データ格納領域の履歴を読み込む手順と、
前記履歴に基づいて、前記データベースサーバに割り当てるデータ格納領域を変更する手順と、
前記データベースサーバ毎に設定されたログ領域からログを読み込む手順と、
前記読み込んだログが前記領域移動ログのときには、前記データ格納領域の履歴に応じて前記データ格納領域を変更しながら、データを回復する手順と、
を含むことを特徴とする請求項18に記載のデータベースの管理方法。
【請求項20】
前記データベースサーバが前記リストア処理の指令に基づいて、前記データベースサーバ毎に設定されたログ領域からログを読み込む手順と、
前記ログが領域移動ログのときには、前記ログ領域に設定された複数の領域を切り替える手順と、
前記ログを、当該データベースサーバに割り当てられたデータ格納領域に適用する手順と、
を含むことを特徴とする請求項15に記載のデータベースの管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate


【公開番号】特開2006−268531(P2006−268531A)
【公開日】平成18年10月5日(2006.10.5)
【国際特許分類】
【出願番号】特願2005−86572(P2005−86572)
【出願日】平成17年3月24日(2005.3.24)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】