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

推薦する

CSS における要素の表示モード

CSS では、要素タグは、要素の表示モードの違いに応じて、インラインレベル要素とブロックレベル要素の...

Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する

シナリオ: docker で tomcat を起動すると (Alibaba Cloud からダウンロ...

Nginx を使用してグレースケール リリースを実装する

グレースケールリリースとは、白と黒をスムーズに移行できるリリース方法を指します。 ABテストとは、グ...

サイト全体を灰色にするCSSコードのまとめ

国務院は本日、新型コロナウイルス感染症との闘いで殉教した方々と犠牲者に対し、全国各民族人民の深い哀悼...

MySQL Limitクエリのパフォーマンスを向上させる方法

MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...

Mysql は null 値の first/last メソッドの例を実装します

序文MySQL が SQL SELECT コマンドと WHERE 句を使用してテーブルからデータを読...

CSS で 3 列レイアウトを実装するいくつかの方法と利点と欠点

序文3 列レイアウトは、その名前が示すように、両側が固定され、中央が適応します。実際の開発では、3 ...

CSS を使用して親コンテナ div を img 画像で埋め、コンテナのサイズを調整する方法

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

Idea で Tomcat のソースコードデバッグを開始し、デバッグのために Tomcat に入る方法

idea 開発ツールを使用してコードをデバッグする場合、Java Web プロジェクトで、Web コ...

MySQL 8.0 の新機能 - チェック制約の紹介

目次序文チェック制約作成、削除、表示制限要約する序文MySQL 8.0 では、チェック制約という非常...

バックエンド管理システムを構築するためのvue-element-adminの実装手順

最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...

Vue での weixin-js-sdk の一般的な使用方法の詳細な説明

リンク: https://qydev.weixin.qq.com/wiki/index.php?ti...

nginx+WordPressで個人ブログを構築するプロセス全体の詳細な説明

0x00 はじめにWordPress は、世界で最も人気のある CMS システムです。PHP と M...

MySQL サービスを起動できない問題の解決策を含む MySQL 5.7.17 インストール チュートリアル

.net 開発に関しては、Microsoft の SQL Server データベースに精通しており、...

MySQLクエリが遅い場合の理由と解決策

Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くない...