MySQL の innodb_flush_log_at_trx_commit と sync_binlog を区別する方法

MySQL の innodb_flush_log_at_trx_commit と sync_binlog を区別する方法

2 つのパラメータ innodb_flush_log_at_trx_commit と sync_binlog は、MySQL ディスク書き込み戦略とデータ セキュリティを制御するための重要なパラメータです。

「innodb_flush_log_at_trx_commit」のような変数を表示します。

innodb_flush_log_at_trx_commit:

0: MySQL の main_thread は、ストレージ エンジン ログ バッファー内の redo ログを 1 秒ごとにログ ファイルに書き込み、ファイル システムの同期操作を呼び出してログをディスクに更新します。

1: トランザクションがコミットされるたびに、ストレージ エンジン ログ バッファー内の再実行ログがログ ファイルに書き込まれ、ファイル システムの同期操作が呼び出されて、ログがディスクに更新されます。

2: トランザクションがコミットされるたびに、ストレージ エンジン ログ バッファー内の REDO ログがログ ファイルに書き込まれ、ストレージ エンジンの main_thread によって 1 秒ごとにログがディスクにフラッシュされます。

「sync_binlog」のような変数を表示します。

同期バイナリログ:

0: ストレージ エンジンは binlog をディスクにフラッシュせず、オペレーティング システムのファイル システムがキャッシュのフラッシュを制御します。

1: トランザクションが送信されるたびに、ストレージ エンジンはファイル システムの同期操作を呼び出してキャッシュを更新します。この方法は最も安全ですが、パフォーマンスは低くなります。

n: 送信されたログ グループ = n の場合、ストレージ エンジンはファイル システムの同期操作を呼び出してキャッシュを更新します。

sync_binlog=0 または sync_binlog が 1 より大きい場合、トランザクションはコミットされていますが、まだディスクに同期されていません。したがって、停電やオペレーティング システムのクラッシュが発生した場合、バイナリ ログにまだ同期されていないトランザクションがサーバーによってコミットされている可能性があります。したがって、これらのトランザクションはバイナリ ログで失われるため、定期的なリカバリを実行することはできません。

innodb_flush_log_at_trx_commit と sync_binlog の両方が 1 の場合に最も安全です。mysqld サービスまたはサーバー ホストがクラッシュした場合、バイナリ ログでは最大で 1 つのステートメントまたは 1 つのトランザクションが失われる可能性があります。ただし、両方を同時に実現することはできません。1、1 を 2 回実行すると、IO 操作が頻繁に発生するため、このモードは最も遅い方法でもあります。

実際の使用においては、パフォーマンスとセキュリティに対するビジネスニーズを考慮し、2 つのパラメータの設定を総合的に検討する必要があります。上の写真は、当社のオンライン マシンのパラメータを示しています。

以上がMySQLのinnodb_flush_log_at_trx_commitとsync_binlogの見分け方の詳細です。MySQLのinnodb_flush_log_at_trx_commitとsync_binlogの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL InnoDB アーキテクチャの概要
  • MySQL InnoDB ReplicaSet の簡単な紹介
  • MySQL InnoDB ストレージエンジンのメモリ管理の詳細な説明
  • MySQL Innodbの主な機能挿入バッファ
  • MySQL InnoDB ロックの概要
  • MySQL InnoDB ロック メカニズムの詳細な例
  • MySQLテクノロジーにおけるInnoDBロックの詳細な説明
  • MySQLデータベースエンジンをInnoDBに変更する
  • MySQL InnoDBストレージエンジンについて簡単に説明します
  • MySQL InnoDB テーブルスペース暗号化の例の詳細な説明
  • MySQL InnoDB トランザクション ロック ソースコード分析

<<:  Nginx の break と last の違いの詳細な分析

>>:  HTML ハイパーリンクの詳細な説明

推薦する

MySQLユーザー管理操作例の分析

この記事では、MySQL ユーザー管理操作について説明します。ご参考までに、詳細は以下の通りです。こ...

MySQL グリーン解凍バージョンのインストールと設定手順

手順: 1. MySQLデータベースをインストールする1. MySQL-5.6.17-winx64....

nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。

私はtengineを使用しています。インストールディレクトリは/usr/local/tengineで...

vue+element で動的スキニングを実装するためのサンプルコード

プロジェクトのテーマがすべての人の美的感覚を満足できないこともあります。このとき、スキン変更機能は非...

CSS でマウスの位置をマッピングし、マウスを動かしてページ要素を制御する (サンプル コード)

マウスの位置をマッピングしたり、ドラッグ効果を実装したりすることは、 JavaScriptで行うこと...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

さまざまなHTTPリターンステータスコードの詳細な説明

サイト上のページを表示するためのリクエストがサーバーに送信されると(たとえば、ユーザーがブラウザでペ...

ECMAscript の新機能の紹介

目次1. 関数パラメータのデフォルト値1.1 関数パラメータのデフォルト値の指定1.2 分離割り当て...

CSS スタイルが機能しない (史上最も完全な解決策の概要)

ページを作成するときに、記述した CSS スタイルが有効にならないことがあります。この現象にはさまざ...

HTML テーブルの境界線を設定する際のヒント

HTML を初めて使用する多くの人にとって、テーブル <table> は最もよく使用され...

kindとDockerを使用してローカルKubernetes環境を起動する

導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...

Vue で Baidu Map を呼び出して経度と緯度を取得する

プロジェクトでは、現在地の緯度経度を取得したり、場所を検索して緯度経度情報を取得したりする必要があり...

JavaScript 配列重複排除ソリューション

目次方法1: set: データ型ではなくデータ構造であり、メンバーは一意である方法2: オブジェクト...

HTML+CSS マージテーブル境界線サンプルコード

table タグと td タグに境界線を追加すると、デフォルトでは次のように二重境界線が使用されます...

CSS3 アドバンス LESS で星空アニメーションを実装するサンプルコード

この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のよ...