アクティブ/パッシブトポロジがあり、2つのx86コンプレックスが共有rawストレージにあり、特定の瞬間に1つのノードのみが共有ストレージ(アクティブノード)にアクセスできます。アクティブノードでフェイルオーバーが発生した場合、パッシブノードがテイクオーバーを開始し、共有ストレージへのアクセス権を持つアクティブノードになります。各ノードには、ファイルシステムを備えた独自のブートデバイスストレージがあります。ただし、共有ストレージにファイルシステムをマウントすることはできません。
MySQLを両方のノードにインストールすることに興味があります。そのデータは共有ストレージにあり、アクティブノードのみがサーバーを実行しています。
MySQLとInnoDBはrawデバイスで実行できます 、および実行方法に関するガイドもあります MySQLをトポロジーに似たクラスターで 。ただし、2番目の例では、共有ストレージにファイルシステムがマウントされています。ファイルシステムの問題は大きな懸念を引き起こします:
ib_logfile *には引き続きファイルシステムが必要です。したがって、未加工のMySQL機能は完全に未加工のものではありません。間違えたら訂正してください。これらのファイルをrawストレージに保存するための回避策はありますか? REDOログ(ib_logfile0
、ib_logfile1
)ノードの起動デバイスで、サーバーが起動する前にそれらのファイルを常に削除します(したがって、複数のフェイルオーバーが発生した場合に古いログファイルはありません)。ただし、これにより、トランザクションの途中で障害が発生した場合に、コミットされていないトランザクションが部分的にコミットされる可能性があり、トランザクションの概念全体と矛盾します。
このトポロジでmysqlの動作に影響を与える可能性のある他のファイル/機能はありますか?
InnoDBの先読みログ(WAL)であるib_logfile *だけがファイルシステムを必要とするわけではないことに注意してください。あなたが持っている:
/<datadir>/<schema>/
内)上記のすべては、datadir=/some/valid/fs/path
がある限り、通常 dataディレクトリ 内にあります-これも複製されます(例:DRBD)または2つのノード間で共有(例:NFS、GFS、OCFS)-それで問題ありません。
.frm、.par、.trn、.trg、および.optファイルは、 新しいデータディクショナリ で削除されることに注意してください。
今後数か月の間に行われるいくつかの大きな発表をお楽しみに! :)
RAWデバイスを使用している理由がわかりません。あなたには理由があると思います。 :)
幸運を!
Rawストレージテクニックは、 innodb_file_per_table が無効になっているibdata1にのみ有効です。
私はこれを数回設定することを述べました
Jul 25, 2012
: データベース設計-テーブルサイズの制限という頭痛の種を回避するために複数のデータベースを作成するFeb 26, 2013
: innodb_file_per_tableが無効な場合のMYSQLのメンテナンスNote InnoDBアーキテクチャ(Percona CTO Vadim Tkachenkoからの画像)
innodb_file_per_table を無効にすると、すべてのInnoDBテーブルのデータとインデックスが、二重書き込みバッファー、挿入バッファー、データディクショナリ、ロールバックセグメント、および元に戻すスペースとともに、未加工ストレージ内に配置されます。
REDOログに関しては、そのフォルダーに/var/lib/mysql
とib_logfile0
を付けて、ib_logfile1
を保持するだけの小さなDRBDブロックデバイスを用意することを検討してください。したがって、フェイルオーバーは次のようになります
Primary/Unknown
に設定します/var/lib/mysql
にマウントservice mysql start
フェイルオーバー設定にはDRBD/ucarpを使用しました。 それらに関する私の古い投稿を参照
すでに述べたように、REDOログは/var/lib/mysql
にマウントされたDRBDブロックデバイスにある必要があります。次のような他の重要なファイルに関して
これらのファイルもすべて/var/lib/mysql
に含まれている必要があります。このようにして、フェイルオーバーはMySQLに関連するすべてのものを転送します(独自のディスクにあるRawデータを除く)。
[〜#〜]警告[〜#〜]:この設定はMyISAMテーブル用ではありません。ハードフェイルオーバーが発生すると、クラッシュ/フェイルオーバーの前に開いているすべてのMyISAMテーブルが破損しているとマークされ、影響を受けるすべてのMyISAMテーブルでREPAIR TABLE
を実行する必要があります。
すべてのテーブルがInnoDBの場合は、この警告を無視してください。残りのMyISAMテーブルをInnoDBに変換する場合は、この警告を無視できます。 (mysql
スキーマのMyISAMテーブルをInnoDBに変換しないでください)。