web-dev-qa-db-ja.com

InnoDBデータベースのACIDプロパティの保証

デフォルトで構成されたInnoDBサーバーが本当にACIDに準拠していることを確認するには、どのような手順を実行する必要がありますか? InnoDB構成ページ は、ハードウェア自体がfsync呼び出しを受け入れるように構成する必要があること、つまり、ライトバックキャッシュを無効にする必要があることを示しています。

このページ 他のいくつかの懸念事項について言及していますが、バイナリログとInnoDBログが混同されている可能性があり、MySQL5.xのデフォルト設定に関して少し古くなっている可能性があります。

バイナリログドキュメントページ を読むと、「sync_binlog = 1」設定は一般にACIDプロパティには必要なく、ポイントインタイムリカバリとレプリケーションに対するACIDプロパティにのみ必要であるように見えます。

それで、ライトバックディスクキャッシングを無効にすることで十分ですか、それとも微調整する必要がある他の設定がありますか?

4
plinehan

あなたは難しい質問をします。 MySQLの設定は次のとおりです。

  • sync-frm
  • sync-binlog
  • innodb-flush-log-at-trx-commit = 1(デフォルト)
  • innodb_support_xa = 1(デフォルト)
  • innodb_doublewrite = 1(デフォルト)
  • sync-relay-log = 1(スレーブの場合)
  • rpl_transaction_enabled = 1(スレーブの場合-5.5/Perconaサーバーのみ)

そしてOS /ファイルシステム/ etcから:

  • ディスクまたはRAIDコントローラのバッテリバックアップされていないキャッシュを無効にします。
  • OSがラップトップモードなどになっていないことを確認してください。
2
Morgan Tocker

書き戻しを無効にしても、必ずしもACIDが破損するわけではありません。 RAIDコントローラーにバッテリーバックアップの書き込みキャッシュがある場合はそうなりません。その見返りは書き込み容量の大幅な増加です。ただし、一部のハードドライブとSSD(Intel X-25など)には、RAIDコントローラーがバッテリーでバックアップされていても、バッテリーでバックアップされていない独自のライトバックキャッシュがあり、確実に無効にする必要があることに注意してください。 O_DIRECTを設定すると、OSとファイルシステムが邪魔にならず、RAIDコントローラーがより効果的に処理できるようになります。

私は通常、妥当な信頼性のために次の設定を使用します。

innodb_flush_method = O_DIRECT 
 innodb_support_xa = 1 
 innodb-flush-log-at-trx-commit = 2
1
Synchro