私はsync_binlogパラメータのドキュメントを調べていて、sync_binlogパラメータのドキュメントに不一致があります。sync_binlogパラメータmysql
ドキュメントここhttp://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#sysvar_sync_binlogは言う:
クラッシュ時に使用すると、1つのバイナリログからグループをコミットで最も失うので、1の値が最も安全な選択肢です。
これは、基本的にデータが更新されるが、binlogsには存在しない可能性があることを意味します。
はしかし、ここでhttp://dev.mysql.com/doc/refman/5.6/en/binary-log.htmlバイナリログのマニュアルに書かれています:
は、たとえば、あなたがInnoDBテーブルを使用していて、MySQLサーバがCOMMIT文を処理する場合、それは順番にバイナリログに多くの準備されたトランザクションを書き込み、バイナリログを同期させた後、このトランザクションをInnoDBにコミットします。これらの2つの操作の間にサーバがクラッシュした場合、トランザクションはInnoDBによってロールバックされますが、バイナリログにはまだ存在します。
これは基本的にトランザクションが最初にbinlogで書かれ、その後InnoDBにコミットされたことを意味します。したがって、クラッシュの場合、行はbinlogにありますが、データベースには存在しません。
私はこの質問をmysqlフォーラムで尋ねて、応答を待っていますが、このパラメータを使用している人が次の2つの動作のどちらが正しいかを詳しく説明できますか?
あなたのお手伝いをお待ちしております。
私は半同期モードでmysqlを実行すると、コミットがスレーブのbinログに書き込まれていることが分かりますが、ここで私はmysqlの_sync_binlog = 1_設定をもっと心配しています。これは、クラッシュの場合に与えることができる保証の種類です。それはbinログに書き込みますが、master DBでコミットしないか、masterDBにコミットすることはできますが、binログに書き込むことはできません。 ドキュメント自体に矛盾する記述がありますが、これに対してバグが記録されています:https://bugs.mysql.com/bug.php?id=82900。情報のおかげで。 – Ashu