トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 複数計算機間のデータベースレプリケーション制御方法
【発明者】 【氏名】清水 光洋

【要約】 【課題】更新情報が送信された際、スレーブ計算機のデータベース処理機能を一時的に停止しローカルシステムでのデータ更新を抑止する必要をなくすことである。

【解決手段】マスタ計算機11でデータベース21の変更が発生すると、データベース21の機能として有している回復用ログの他に回復用ログデータの中からレプリケーションに必要となるデータを抽出し、レプリカ用ログを作成し、該レプリカ用ログをスレーブ計算機12に対しメッセージ連携を用いて配信し、前記スレーブ計算機12で前記配信された前記レプリカ用ログをもとにデータベース操作言語に翻訳し、当該スレーブ計算機12のデータベース22に対し更新処理を施す。
【特許請求の範囲】
【請求項1】 同一ネットワーク上に接続された複数の計算機のデータベースを連携して運用する複数計算機間のデータベースレプリケーション制御方法において、マスタ計算機でデータベースの変更が発生すると、データベースの機能として有している回復用ログの他に回復用ログデータの中から、レプリケーションに必要となるデータを抽出し、レプリカ用ログを作成する第1のステップと、該第1のステップで作成した前記レプリカ用ログをスレーブ計算機に対しメッセージ連携を用いて配信する第2のステップと、前記スレーブ計算機では、前記第2のステップで配信された前記レプリカ用ログをもとにデータベース操作言語に翻訳し、当該スレーブ計算機のデータベースに対し更新処理を施し、データベースレプリケーションの一貫性を保証する第3のステップとを備えていることを特徴とする複数計算機間のデータベースレプリケーション制御方法。
【請求項2】 第3のステップは、スレーブ計算機のデータベースに対し、当該スレーブ計算機において生じた更新処理と同時に、マスタ計算機から配信されたレプリカ用ログによる更新処理が発生すると、レプリケーションの対象となっているデータベース操作言語に翻訳された前記レプリカ用ログ、および前記スレーブ計算機において生じた更新処理の対象となっているデータベース操作言語に翻訳されたデータをキューへ蓄積し、前記レプリカ用ログおよび前記データに付されたタイムスタンプから更新の順番を判定し、該判定した順番で当該スレーブ計算機のデータベースに対し更新処理を順次行うことを特徴とする請求項1記載の複数計算機間のデータベースレプリケーション制御方法。
【請求項3】 更新処理は、キューへ蓄積するレプリカ用ログおよびデータの数または周期をあらかじめ設定しておき、前記キューへ蓄積された前記レプリカ用ログおよび前記データの数が前記設定した数または周期のいずれかの値を超過した場合に実行されることを特徴とする請求項2記載の複数計算機間のデータベースレプリケーション制御方法。
【請求項4】 第1のステップは、共通化されたフォーマットでレプリカ用ログを作成することを特徴とする請求項1から請求項3のうちのいずれか1項記載の複数計算機間のデータベースレプリケーション制御方法。
【発明の詳細な説明】【0001】
【発明の属する技術分野】この発明は、複数の計算機が同一ネットワーク上に接続され、データレプリケーションによってデータベースを構成しているシステムにおいて、マスタ計算機からスレーブ計算機に変更データを反映させる複数計算機間のデータベースレプリケーション制御方法に関するものである。
【0002】
【従来の技術】複数計算機間でデータベースのレプリケーション(同一伝送媒体上に接続された複数の計算機システム、および当該各計算機システム上で稼動しているデータベースシステムの構成において、マスタ計算機で稼動しているデータベースとスレーブ計算機で稼動しているデータベースとが同一の内容を保持する)をデータベースログ(回復用ログ)とキューを用いて実現するものとしては、特開平3−122729号公報にあるように、データベースログを分割しキューを用いてスレーブ計算機に転送し、当該スレーブ計算機ではこのログを組み立ててデータベースにログを適用する方法がある。
【0003】しかしながら、この方法ではデータベースの回復用ログに適用してデータの更新処理を行うために、自システム内の更新処理を一時的に停止する必要が生じるとともに、データベース内の回復用ログに対するアクセス頻度が高くなる。また、更新情報として回復用ログ(REDO,再実行レコード)を前記スレーブ計算機に送信しているが、回復用ログにはレプリケーションに必要となる以外の情報も多数あり、そこから必要な情報をスレーブ側で抜き出さなければならない。その他、回復目的のログを直接利用するため、ログ形式(フォーマット)が同一のデータベース管理システム(以下、DBMSという)で構成されたシステムにのみ有効であった。
【0004】
【発明が解決しようとする課題】従来の複数計算機間のデータベースレプリケーション制御方法は以上のように構成されているので、マスタ計算機からの更新情報が送信されてきた際にスレーブ計算機のデータベース処理機能を一時的に停止し、ローカルシステムでのデータ更新を抑止する必要が生じる課題があった。また、データベースログ(回復用ログ)に対するアクセス頻度が高くなるため、前記データベースログに対するアクセス用のバッファをメモリ上に用意しておく必要がある課題があった。また、回復用ログのデータ形式(フォーマット)が同一でないDBMS間で連携をとる場合には、別途、ゲートウエイ装置(機能)を設け、ログデータの変換機能(翻訳機能)を用意する必要がある課題があった。
【0005】この発明は上記のような課題を解決するためになされたものであり、マスタ計算機からの更新情報が送信されてきた際、スレーブ計算機のデータベース処理機能を一時的に停止しローカルシステムでのデータ更新を抑止する必要をなくし、またメモリ上への前記データベースログに対するアクセス用のバッファの設定や、ゲートウエイ装置(機能)などのログデータの変換機能(翻訳機能)を不要にすることの可能な複数計算機間のデータベースレプリケーション制御方法を得ることを目的とする。
【0006】
【課題を解決するための手段】この発明に係る複数計算機間のデータベースレプリケーション制御方法は、マスタ計算機でデータベースの変更が発生すると、データベースの機能として有している回復用ログの他に回復用ログデータの中から、レプリケーションに必要となるデータを抽出し、レプリカ用ログを作成し、該作成した前記レプリカ用ログをスレーブ計算機に対しメッセージ連携を用いて配信し、前記スレーブ計算機では、前記配信されたレプリカ用ログをもとにデータベース操作言語に翻訳し、当該スレーブ計算機のデータベースに対し更新処理を施し、データベースレプリケーションの一貫性を保証するようにしたものである。
【0007】この発明に係る複数計算機間のデータベースレプリケーション制御方法は、スレーブ計算機のデータベースに対し、当該スレーブ計算機において生じた更新処理と同時に、マスタ計算機から配信されたレプリカ用ログによる更新処理が発生すると、レプリケーションの対象となっているデータベース操作言語に翻訳された前記レプリカ用ログ、および前記スレーブ計算機において生じた更新処理の対象となっているデータベース操作言語に翻訳されたデータをキューへ蓄積し、前記レプリカ用ログおよび前記データに付されたタイムスタンプから更新の順番を判定し、該判定した順番で当該スレーブ計算機のデータベースに対し更新処理を順次行うようにしたものである。
【0008】この発明に係る複数計算機間のデータベースレプリケーション制御方法は、キューへ蓄積するレプリカ用ログおよびデータの数または周期をあらかじめ設定しておき、前記キューへ蓄積された前記レプリカ用ログおよび前記データの数が前記設定した数または周期のいずれかの値を超過した場合に更新処理が実行されるようにしたものである。
【0009】この発明に係る複数計算機間のデータベースレプリケーション制御方法は、共通化されたフォーマットでレプリカ用ログを作成するようにしたものである。
【0010】
【発明の実施の形態】以下、この発明の実施の一形態を説明する。実施の形態1.図1は、この実施の形態1による複数計算機間のデータベースレプリケーション制御方法が適用される伝送媒体で接続されたマスタ計算機とスレーブ計算機、およびデータベースシステムの構成を示すブロック図である。ここでマスタ計算機とは、複数の計算機が同一ネットワーク上(LAN、回線)に接続され、各計算機が共通的に使用するデータベースをレプリケーションしている構成において、変更の発生した計算機であり、スレーブ計算機とは前記マスタ計算機での更新結果を反映させたい計算機である。
【0011】この実施の形態1の複数計算機間のデータベースレプリケーション制御方法は、同一伝送媒体(LAN、回線)上で接続された複数の計算機システムとこの上で稼動している複数のデータベースシステムの構成において、マスタ計算機で稼動しているデータベースとスレーブ計算機で稼動しているデータベースが、同一の内容を保持する(レプリケーションを実現する)ことを前提として、マスタ計算機のデータベースで変更が発生した場合、同一の変更をスレーブ計算機のデータベースにも反映させるものであり、このため、回復用ログの他にレプリケーション用のログを作成し、この更新情報をマスタ計算機の更新結果を反映させたいスレーブ計算機にメッセージ連携を用いて配信する。前記スレーブ計算機では、前記更新情報を、データベースに対して更新を行うためのデータベース操作言語DML(Database Manipulate Language)に変換し、データベースシステムに反映させる。ここでメッセージ連携とは、複数計算機間のトランザクション処理において更新レコードをキューを用いて配信するものである。
【0012】図1において、1はネットワークなどの伝送媒体、11はマスタ計算機、11aはマスタ計算機11のデータベース管理システム(以下、DBMSという)、12はスレーブ計算機、12aはスレーブ計算機12のDBMS、13はユーザ計算機、13aはユーザ計算機13のユーザプログラム、21はマスタ計算機11上で可動するデータベース、22はスレーブ計算機12上で可動するデータベースである。
【0013】次に動作について説明する。この複数計算機間のデータベースレプリケーション制御方法の概略は、複数の計算機でデータレプリケーションを構築しているシステムにおいて、マスタ計算機11で発生した変更データ(回復用ログ情報)を磁気ディスク等の外部媒体に出力する際に、同時にマスタ計算機11のメモリから読み込みレプリケーション用のログとして加工する。この場合、前記マスタ計算機11のDBMS11aで管理されているメモリ上のバッファプールから前記外部媒体へ回復ログを書き出すタイミングを捉えて、更新情報(レプリカ用ログ)をデータレプリケーションを構成するシステム内で共通化した形式で作成する。この更新情報をデータレプリケーションを構築している他の計算機に配信する手段としてはメッセージ連携機能を用いる。この更新情報を受け取った前記他の計算機では、メッセージキューから前記更新情報を取り出し、これをもとにデータベース変更言語に翻訳する。データベース変更言語の実行は、自システム内でローカルに発生する更新処理との整合性をとるために、一旦、翻訳したデータベース変更言語および自システム内で発行するデータベース変更言語をキューイングしておき、ある一定周期で他のマスタ計算機から配信された更新情報と自システムで発生した更新情報を日付、時刻などのタイムスタンプを活用してソート処理行い、実施可能なデータベース変更言語を選別し、さらにその実行順序を決定して逐次実行することで実現する。
【0014】図2は、ユーザ計算機13とマスタ計算機11内のデータベース処理動作を示すシーケンス図である。ユーザプログラム13aからの更新要求が発行されると(ステップST1:UPDATE要求)、DBMS11aでは、この情報を一旦、メモリ31上に蓄積し、完了報告をユーザプログラム13aに返す(ステップST2:UPDATE完了報告)。さらに、ユーザプログラム13aからコミット要求が発行されると(ステップST3:回復同期点要求)、DBMS11a側ではコミット準備完了報告を返し(ステップST4:回復同期点準備完了報告)、ユーザプログラム13aではコミット実施要求を発行する(ステップST5:回復同期点実施要求)。これらのシーケンスは、通常、2相コミットと呼ばれている方式であり、本実施の形態ではコミット実施要求(ステップST5)後の処理において、メモリ31上に蓄積した情報を物理媒体上のデータベース21に書き出すとともに回復用ログを磁気ディスク等の外部媒体33に出力する。また、これと同時に回復用ログに書き出す情報をもとにレプリケーション用の更新情報を作成し、メッセージ連携用のキューエリア34に書き出す。
【0015】図3は、より詳細にコミット実施要求(図2に示すステップST5)後の処理動作を示す説明図である。図3に示すマスタ計算機11では、変更が発生したデータを前記メモリ31とは異なるメモリ42上のバッファプール43へ保持してあり、ステップST3のコミット要求に基づいて物理媒体上のデータベース21へ変更データを反映させるとともに(ステップST11)、外部媒体33の回復用ログにデータベースの情報を書き出す(ステップST12)。このステップST12のタイミングをとらえて、前記回復用ログに書き出す情報からレプリカログに必要となる情報を抽出し加工して更新情報作成処理47を行い(ステップST13)、この結果得られる更新情報をマスタ計算機11のメッセージ連携用のキューエリア34に書き出す(ステップST14)。
【0016】図4は、メッセージ連携用のキューエリア34に書き出す前記更新情報を示すデータ構成図である。この更新情報をマスタ計算機11からスレーブ計算機12へメッセージ連携機能を用いて配信する。
【0017】図5は、スレーブ計算機12において更新情報51を受け取ったときの動作を示す説明図である。図5において、51はスレーブ計算機12において受け取った更新情報、61は受け取った更新情報51からデータベース変更用言語DMLへの変換処理、62は前記変換処理61により変換されたデータベース変更用言語DMLが蓄積されるキュー、62aは前記データベース変更用言語DMLで具現化されている更新情報である。
【0018】スレーブ計算機12においては、図5に示すように、受け取った更新情報51からデータベース変更用言語DMLへの変換処理(DML変換)61を行い、このデータベース変更用言語DMLで具現化された更新情報62aをキュー62に蓄積する。
【0019】図6は、マスタ計算機11からスレーブ計算機12へ更新情報が配布され、また同時にスレーブ計算機12の自システム内でレプリケーションの対象となっているデータベースに対して変更処理が発生した場合の処理方法を示す機能ブロック図である。図6において図1と同一または相当の部分については同一の符号を付し説明を省略する。図6において、46はメッセージ連携用のキューエリア、74はDML変換プログラム、76はスレーブ計算機12側で発生したデータベース変更用言語DMLなどの言語形態で具現化されている更新情報、77は前記更新情報76が発生した更新時刻、78は更新情報76と前記更新時刻77とを対にしたデータ、79はDML実施前キュー、80は一意に決めた周期、または、DML実施前キュー79に一定以上の更新情報が蓄積した場合は時刻をキーにして実行されるソート処理、81はDML実行(データベースの更新)である。
【0020】マスタ計算機11から配信される更新情報72は、一旦、メッセージ連携用のキューエリア46に蓄積された後、時間間隔やキューの蓄積件数などのメッセージ連携システムのパラメータ設定に従って取り出される。
【0021】取り出された更新情報72はDML変換プログラム74によってデータベース変更用言語DMLに変換されるとともに、更新処理が発生した時刻を1対のデータ78としてDML実施(データベース変更用言語DMLを実行してデータベースを更新する)前キュー79に蓄積する。一方、スレーブ計算機12は、自システムで発生したデータベース変更用言語DMLなどの言語形態で具現化されている更新情報76を、更新が発生した時刻77と対のデータ78にしてDML実施前キュー79に蓄積し、双方で更新情報をまとめる。
【0022】DML実施前キュー79に蓄積された情報についてはデータ更新が発生した時間的な順序でデータベースを更新する必要があるため、あらかじめ一意に決めた周期、または、DML実施前キュー79に一定以上の更新情報が蓄積した場合の前記更新情報の数をキーにして、ソート処理80を行いDML実行(データベース変更用言語DMLを実行してデータベースを更新する)81となる。ソート処理80を行なってからのDML実行81は、前記周期が経過した場合、およびDML実施前キュー79の更新情報が上限値を超えた場合に起動する。
【0023】図7は、前記ソート処理80および前記DML実行81によるデータベース更新処理の概要を示すフローチャートである。システムを起動後、前記周期の経過後、または更新情報が一定数以上蓄積された場合に、マスタ計算機11から受信した更新情報の内でタイムスタンプが最新の情報を選択し(ステップST91)、この時刻より以前に更新処理が発行された更新情報(データベース変更用言語DMLなどの言語形態で具現化されている)を抜き出し(ステップST92)、これに対し実行時間順にソート処理80を行なった後(ステップST93)、DML実行81を行う(ステップST94)。そして、DML実行後のステータスをマスタ計算機11に返すとともに(ステップST95)、キュー内の実行済みの更新情報を消し込む(ステップST96)。
【0024】以上のように、この実施の形態1によれば、一意に決めた周期、または、DML実施前キュー79に一定以上の更新情報が蓄積した場合は更新情報の数をキーにして、ソート処理80を行なった後、データベース変更用言語DMLを実行し、データベース変更用言語DMLをもとに具現化されている変更情報によりスレーブ計算機12のデータベース22に対し更新処理を行うことで、マスタ計算機11からの更新情報が転送されてきた際にスレーブ計算機12のデータベース22を一時的に停止し、ローカルシステムでのデータ更新を抑止することなく、各計算機が共通的に使用するデータベースをレプリケーションすることができる複数計算機間のデータベースレプリケーション制御方法が得られる効果がある。
【0025】
【発明の効果】以上のように、この発明によれば、マスタ計算機でデータベースの変更が発生すると、データベースの機能として有している回復用ログの他に回復用ログデータの中から、レプリケーションに必要となるデータを抽出し、レプリカ用ログを作成し、該作成した前記レプリカ用ログをスレーブ計算機に対しメッセージ連携を用いて配信し、前記スレーブ計算機で前記配信された前記レプリカ用ログをもとにデータベース操作言語に翻訳し、当該スレーブ計算機のデータベースに対し更新処理を施し、データベースレプリケーションの一貫性を保証するように構成したので、従来のように回復用ログに対し高い頻度でアクセスすることがなく、アクセス用のバッファをメモリ上に用意する必要もなくなる効果がある。
【0026】この発明によれば、スレーブ計算機のデータベースに対し、当該スレーブ計算機において生じた更新処理と同時に、マスタ計算機から配信されたレプリカ用ログによる更新処理が発生すると、レプリケーションの対象となっているデータベース操作言語に翻訳された前記レプリカ用ログ、および前記スレーブ計算機において生じた更新処理の対象となっているデータベース操作言語に翻訳されたデータをキューへ蓄積し、前記レプリカ用ログおよび前記データに付されたタイムスタンプから更新の順番を判定し、該判定した順番で当該スレーブ計算機のデータベースに対し更新処理を順次行うように構成したので、マスタ計算機からの更新情報が送信されてきた際、スレーブ計算機のデータベース処理機能を一時的に停止しローカルシステムでのデータ更新を抑止する必要がなくなる効果がある。
【0027】この発明によれば、キューへ蓄積するレプリカ用ログおよびデータの数または周期をあらかじめ設定しておき、前記キューへ蓄積された前記レプリカ用ログおよび前記データの数が前記設定した数または周期のいずれかの値を超過した場合に更新処理が実行されるように構成したので、マスタ計算機からの更新情報が送信されてきた際に、スレーブ計算機のデータベース処理機能を一時的に停止してローカルシステムでのデータ更新を抑止する必要がなくなる効果がある。
【0028】この発明によれば、データベースの機能として有している回復用ログの他に回復用ログデータの中から、レプリケーションに必要となるデータを抽出し、共通化されたフォーマットでレプリカ用ログを作成するように構成したので、ゲートウエイ装置(機能)などのログデータの変換機能(翻訳機能)を不要にできる効果がある。
【出願人】 【識別番号】000006013
【氏名又は名称】三菱電機株式会社
【出願日】 平成10年(1998)5月7日
【代理人】 【弁理士】
【氏名又は名称】田澤 博昭 (外1名)
【公開番号】 特開平11−327988
【公開日】 平成11年(1999)11月30日
【出願番号】 特願平10−125080