web-dev-qa-db-ja.com

InnoDBダブルライトバッファリングを無効にしても安全なのはいつですか?

MySQL InnoDBでは、 innodb_doublewrite = 0 。その他のデータベース この設定を微調整できないようです

InnoDBがデータの整合性[〜#〜] acid [〜#〜] を維持できるようにするにはどうすればよいでしょうか?ダブルライトバッファリング?

InnoDBの二重書き込みバッファをオフにするのはどのような状況で安全になりますか?

7
Pacerier

私が考えることができる唯一の状況は、大きなmysqldumpをリロードすることです。どうして ?

InnoDB(Percona CTO Vadim Tkachenko)のこの図解をご覧ください。

InnoDB Architecture

図から、InnoDBバッファープールがダーティページを書き込むことがわかります。

  • ログバッファ
  • Ibdata1にバッファを挿入する
  • Ibdata1の二重書き込みバッファ
  • 各InnoDBテーブルの.ibdファイル

ダブルライトバッファーを停止すると、mysqldumpは同じ 16Kページ をibdata1に書き込む必要がないため、テーブル内のデータとインデックスページをより速く書き込むことができます。

本番サーバーでは、二重書き込みバッファを無効にしないでください。データのロードを高速化するために(もちろん、メンテナンス中に)行う場合は、DBサーバーをリロードした直後に有効にしてください。

言い換えると、

  • innodb_doublewrite = 0my.cnfに追加
  • SET GLOBAL innodb_fast_shutdown = 0;を実行します
  • Mysqlを再起動します
  • Mysqldumpをロードする
  • innodb_doublewrite = 0my.cnfから削除します
  • SET GLOBAL innodb_fast_shutdown = 0;を実行します
  • Mysqlを再起動します
12
RolandoMySQLDBA

この問題は、安全であると示唆していると思われるイヴトルドーによる this の投稿で十分に対処されました-彼の結論は、

結論

ZFSと同様に、ext4はトランザクション処理が可能で、InnoDBの二重書き込みバッファーをファイルシステムのトランザクションジャーナルに置き換えると、書き込み集中型のワークロードのパフォーマンスが55%向上します。 SSDおよび混合回転/ SSD構成でもパフォーマンスの向上が期待されます

彼は基本的に、もしあなたが適切なファイルシステムを持っているなら、そう、それは安全であると言っています。

ペルコナの人々は本当に自分のものを知っています。

8
Vérace

イヴ・トルドーのブログの更新: https://www.percona.com/blog/2015/06/17/update-on-the-innodb-double-write-buffer-and-ext4-transactions/ =

要するに、それはおそらく安全ではありません。

コメントは指摘しているようです-FSがジャーナル付きのext4、またはZFSである場合、それはプルザプラグテストに耐えますが、単純なキル(またはOOM I疑わしい)FSは、アプリレイヤーから書き込まれた部分的なデータを拒否しないためです。

4
HelloSam

私の暫定ダブルライトバッファをオフにしても問題ない状況のリスト:

  • FusionIO(または、現在の名前)-ドライブが処理します
  • Galera-クラッシュした場合、ノードを再構築します
  • スレーブ-クラッシュした場合はスレーブを再構築します
  • ZFS-ドライバーが処理します
0
Rick James