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 ハイパーリンクの詳細な説明

推薦する

HTML ユーザー登録ページ設定ソースコード

上記の Web ページをデザインします。 <!DOCTYPE html> <htm...

Nginx は動的と静的の分離を実装します 例の説明

ウェブサイトの解析を高速化するために、動的ページと静的ページを異なるサーバーで解析して、解析速度を向...

LinuxでMySQLのリモートアクセス権を有効にし、ファイアウォールでポート3306を開きます。

mysqlのリモートアクセス権を有効にするデフォルトでは、MySQL ユーザーにはリモート アクセ...

MySql 8.0 と対応するドライバー パッケージの一致に関する注意事項

MySql 8.0 対応ドライバパッケージのマッチングMySql データベースをバージョン 8.0 ...

JDKネイティブスレッドプールのバグを修正するTomcatの実装原理

処理能力と同時実行性を向上させるために、Web コンテナは通常、リクエストを処理するタスクをスレッド...

複数のドメイン名に対する Nginx リバース プロキシを使用した HTTP および HTTPS サービスの実装

現在、Nginx は、Web サービスを提供するために、Windows ベースの IIS と Lin...

MySQL はどのようにしてマルチバージョンの同時実行性を実現するのでしょうか?

目次MySQL マルチバージョン同時実行1. マルチバージョン同時実行制御1. 一貫した読み取り2....

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

検証コード干渉を実装する js (動的)

この記事の例では、検証コードの動的干渉を実装するためのjsの具体的なコードを共有しています。具体的な...

Enterキーを押すとフォームが自動的に送信されます。予期せぬ発見

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

MySQL 全文インデックスガイド

全文インデックスには特別なクエリ構文が必要です。全文検索はインデックスの有無にかかわらず実行できます...

CSS3 境界効果

CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...

ツールキット: Bootstrap よりも強力なフロントエンド フレームワーク

注: 現在、最も人気のフロントエンド フレームワークは Bootstrap と Foundation...

CSS オーバーフローラップの新しいプロパティ値をどこでも使用

1.まず、overflow-wrap属性を理解する CSS のoverflow-wrapプロパティは...

Docker で MySQL をデプロイする詳細なプロセス (Docker でデプロイされる一般的なアプリケーション)

以前にも紹介しました: docker (一般的なアプリケーションのデプロイ): docker dep...