読者です 読者をやめる 読者になる 読者になる

コラボレーション・エンジニアの考える日々

企業での情報共有とコミュニケーションについて、ITを中心に企業コラボレーションを考えていくブログです。

クラスタ環境にDBを配置する良い方法

Lotus

サーバーAとサーバーBでDominoクラスタを構成していて、そこに新たにDBを配置する場合、どういう方法が一番良いと思いますか? 良くやる方法は、DBをサーバーAとサーバーBにそれぞれテープからリストアするか、FTPやOSのコピーコマンドでコピーする方法でしょう。特に、メールサーバーのように大量のDBがある場合は、これらの方法はレプリカを作成するよりも短時間で済みます。しかし、この方法によって構築される環境では、以下のクリティカルな問題が起こる可能性があります。


Title: クラスタ環境下で OS レベルでコピーされたデータベースに対して
    convert を実行するとデータベース切り替え時に表示が乱れる
Doc #: 726047
URL: http://www.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/726047


この問題は、本来、各レプリカで異なる値で設定されているDatabase ID (DBID) が同じになってしまっているのが原因です。DBIDはレプリカIDでもなく、トランザクションログで関係するDBIIDでもなく、内部的に使用されているIDです。これは、複製を使ってDBを作成すれば、ちゃんと異なる値で作成されます。


複製を使ってDBを配置するには、DBが大量にあると、とても時間がかかります。しかし、DBIDを異なる値でレプリカを作成するためには複製を使うしかありません。そこで今回ご紹介する方法の登場です。


それは、システム管理プロセス(AdminP)を使う方法です。AdminPで複製作成の要求を出すと、”レプリカ作成の実行”、英語では、”Accelerated Create Replica” という要求文書が作成されます。これは作成元と作成先のサーバーが同一Dominoクラスタになっている場合にだけ実行されるものなのですが、普通の複製ではなく、Domino バックアップ API を使って行われます。通常の複製の時のようにDominoはあれこれいろいろ考えずに、コピーするかのようにDBのレプリカを作成しますので、パフォーマンスには期待が持てます。もちろんちゃんとDBIDを変えてくれます。どのくらい早いのだろうかと、とりあえずググってみると、以下のブログを見つけました。


http://www.turtleweb.com/TurtleBlog.nsf/dx/02052006100535MSMCQG.htm

Network Copy via Windows - 7 hrs (100mbps network) - needing watching as there were timeout problems
Restore from backup - 4 hrs to restore but only 2/3 of the files were available / usable
Accelerated Create Replica - < 90 mins with the additional advantage that the databases were created cleanly, correctly and with no need for consistency checking


これが本当だとすると、いままで取っていた方法よりも早いかもしれません。さらに、ファイルレベルのコピーとほぼ同じなので、通常、複製を作る上で問題になる以下のような事もクリアできます。

  • ビュー索引構築に時間がかかる。
  • 未読既読情報が複製されない。
  • 個人フォルダーなどの個人設計要素が複製されない。


私自身は、この機能を実際の構築プロジェクトで使ったことがないので、実用レベルで使用に耐えうるかは分かりません。しかし、採用を検討する価値は十分ありそうです。