質問

共有RAWストレージとの2つのx86複合施設があるアクティブ/パッシブトポロジを持ち、特定の瞬間のノードの1つだけが共有ストレージ(AKA The Activeノード)にアクセスできます。アクティブノードのフェールオーバーの場合、パッシブノードは引き継ぎを開始し、共有ストレージへのアクセスを持つアクティブノードになります。各ノードには、ファイルシステムを備えた独自のブートデバイスストレージがあります。ただし、共有ストレージにファイルシステムをマウントすることはできません。

両方のノードでMySQLをインストールすることに興味があり、そのデータが共有ストレージに存在し、アクティブノードのみがサーバーを実行しています。

InnoDBを搭載したMySQLは生の上で実行可能です。 DEVICE と、 MySQL 。ただし、2番目の例では、それらは共有ストレージにマウントされたファイルシステムを持っています。ファイルシステムの問題は大きな関心事を提起します:

ib_logfile *はまだファイルシステムを必要とします。そのため、RAW MySQL機能は正確にはまったく生のものではありません。間違っているなら私を修正してください。これらのファイルを生のストレージに保存する回避策はありますか? REDOログ(ib_logfile0ib_logfile1)をノードの起動デバイスに保存し、サーバーが起動する前にそれらのファイルを常に削除できます(たとえば、複数のフェールオーバーの場合は古いログファイルはありません)。ただし、これは、取引の途中で障害が発生した場合には、コミットされていないトランザクションに部分的にコミットされる可能性があり、したがってトランザクションの全体的なアイデアと矛盾します。

このトポロジのMySQLの動作に影響を与える可能性のある多くのファイル/機能はありますか?

役に立ちましたか?

解決

InnoDBの書き込み先のログ(WAL)、ib_logfile *がファイルシステムを必要とする唯一のものではないことは注目に値する。あなたは:

を持っています

  1. システムテーブルMySQLスキーマ内のシステムテーブル(テーブルごとに.ford、.fyi)を使用する可能性が高い(ほとんどは現在、5.7でInnoDBを使用しています)
  2. 。各InnoDBテーブルのファイルのファイル(必要なテーブルメタデータ)
  3. を使用しています。
  4. MySQLログファイル(エラーログ、一般ログ、バイナリログ)
  5. SSLアーティファクト
  6. auto.cnf(MySQLインスタンスuuidが生成され、自動的に保存されている場合)
  7. 各スキーマのdb.optファイル(/<datadir>/<schema>/
  8. .parファイルパーティションテーブルを作成した場合(5.7で終了しました)
  9. .trnと.trgファイルトリガーを作成した場合
  10. InnoDB TMPテーブルスペース(5.6 +)
  11. 永続化バッファー・プール・ページマップ(IB_BUFFER_POOL、5.6 +)
  12. 上記のすべては典型的にはデータディレクトリの範囲内にあります。 datadir=/some/valid/fs/pathを持っている限り - それはまた2つのノード間の複製されるか、共有される(例えば、NFS、GFS、OCFS)、あなたは大丈夫になるでしょう。

    .frm、.par、.trn、.trg、および.optファイルが新しいデータ辞書

    今後数ヶ月以内にいくつかの大きな発表のために調整されたまま! :)

    あなたがRAWデバイスを使っている理由は私には明らかではありませんか?私はあなたがあなたの理由があると確信しています。 :)

    頑張って!

他のヒント

生の記憶技術は、 Innodb_file_per_table 無効。

これを数回

に設定しました

ノートInnoDBアーキテクチャ(Percona Cto Vadim Tkachenkoからの写真)

href="https://i.stack.imgur.com/9ecri.jpg" rel="nofollow noreferrer">  INDODB配管工場

InnoDB_FILE_PER_TABLE 無効、データまた、すべてのInnoDBテーブルのインデックスは、Double Write Buffer、Insert Buffer、データ辞書、ロールバックセグメント、およびUNDO SPACEとともに、生ストレージの内側に着地します。

REDOログに関しては、そのフォルダ内の/var/lib/mysqlib_logfile0を使用して、ib_logfile1を保持するだけで小型のDRBDブロックデバイスを持つことを検討する必要があります。したがって、フェイルオーバーは次のようになります

  • 2つのサーバーの間にDRBDを破る
  • 新しいサーバーのDRBD状態をPrimary/Unknown
  • に設定します。
  • DRBDマウント
  • IBDATA1の情報
  • でRAWデバイスをマウントします。
  • /var/lib/mysql
  • DRBDデバイス
  • セットアップ pacemaker / ucarp 次のフェイルオーバー
  • の準備をする

フェールオーバー設定のためにDRBD / UCARPを好みます。 それらの古い投稿を参照してください

アップデート2015-10-14 11:30 EDT

既に述べたように、REDOログはservice mysql startにマウントされているDRBDブロックデバイスになければなりません。

などの他の不可欠なファイルについて

  • バイナリログ
  • リレーログ
  • エラーログ
  • スローログ
  • 一般ログ

これらのファイルはすべて/var/lib/mysqlにもなければなりません。そのようにして、フェールオーバーはすべてMySQL関連を持ちます(あなた自身のディスクにある生データを引いたもの)。

警告:この設定はMyisamテーブル用ではありません。ハードフェールオーバーが発生した場合、クラッシュ/フェイルオーバーの前にすべての開いているMyISAMテーブルは破損としてマークされ、Myisamテーブルに影響を与える一般的な/var/lib/mysqlを実行する必要があります。

すべてのテーブルがInnoDBの場合は、この警告を無視してください。残りのMyISAMテーブルをInnoDBに変換すると、この警告は無視できます。 (REPAIR TABLEスキーマにInnoDBにMyISAMテーブルを変換しないでください)。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top