DBサーバのストレージをDRBDで冗長化するのは是か非か

LinuxにはDRBDというものがあります。

DRBDとは何か? 簡単にいうと、ミラーリングです。ミラーといっても、RAID-1のようにディスクtoディスクではなく、2つの異なるサーバ間のネットワーク越しのミラーリングです。

RAIDの場合は、ディスク故障の耐性は高まりますが、サーバのほかの部分(電源など)が壊れると元も子もありません。DRBDだと、そういった場合の障害にも対応できますね。

DRBDには普通のブロックデバイスとしてアクセスできます。つまり、mkfsしてmountしてフツーのディスクのように使えます。

で、

は、そのDRBDを使って、MySQLのストレージを冗長化するという話。(だと思う。ナナメ読みなので)

しかーし、いくつか危険な点があるので、この構成はやらんほうがいいというのが個人的な意見。以下、その理由。

  • InnoDBMyISAMのデータファイルが論理的に壊れたときに、そのままDRBDのセカンダリ側にも壊れたデータが同期コピーされちゃう。
  • mysqldの稼働中にDRBDがfail overすると、(MySQLの世界でクローズ処理されていないので)データファイルが論理的に壊れる可能性が高まる。

なので、MySQLのストレージとしてはちとキビシイと思うす。


一方、NFSなんかしているストレージサーバにはDRBD使えると思うす。

例えば、

  • 一応、RAID組んでるけど念のためコールドバックアップもとっときたい。
  • でも、ストレージがでかすぎ or ファイルが多すぎて rsync とか rdist が全然終わらん。

というときに、DRBDはよさげす。

ちなみに、/var/lib/nfsもDRBDでミラーすれば、NFSのfail overもすんなりいきます。