目次
バイナリログの書き込みプロセス
sync_binlog
概要
max_binlog_cache_size
要約
Use
ホームページ データベース mysql チュートリアル MySql でバイナリ ログを作成するプロセスを完全にマスターする

MySql でバイナリ ログを作成するプロセスを完全にマスターする

Feb 18, 2022 pm 05:06 PM
mysql

この記事では、「sync_binlog」、「binlog_cache_size」、「max_binlog_cache_size」に関連する問題など、mysql でバイナリ ログを記述するプロセスに関する関連知識を提供します。皆様のお役に立てれば幸いです。

MySql でバイナリ ログを作成するプロセスを完全にマスターする

バイナリログの書き込みプロセス

まず、公式ドキュメントの sync_binlog 設定の説明を見てみましょう。

sync_binlog

# #コマンドライン形式--sync-binlog=#システム変数sync_binlog影響範囲グローバル#動的#YesSET_VAR プロンプトが適用されるNoInteger##デフォルト値1最小値0最大値2^32=4294967295


##Type
MySQL サーバーがバイナリ ログをディスクに同期する頻度を制御します。
sync_binlog=0: MySQL サーバーによるバイナリ ログのディスクへの同期を無効にします。代わりに、MySQL サーバーは、他のファイルと同様に、オペレーティング システムに依存してバイナリ ログを時々ディスクにフラッシュします。この設定では最高のパフォーマンスが得られますが、停電やオペレーティング システムのクラッシュが発生した場合、サーバーはまだフラッシュされていないトランザクションをコミットする可能性があります。

  • sync_binlog=1: トランザクションをコミットする前に、バイナリ ログとディスクの同期を有​​効にします。これは最も安全な設定ですが、ディスクへの書き込みが増加するため、パフォーマンスに悪影響を及ぼす可能性があります。停電やオペレーティング システムのクラッシュが発生した場合、バイナリ ログで失われたトランザクションは準備済みの状態にあるだけです。これにより、定期的な自動回復によってトランザクションをロールバックできるため、バイナリ ログからトランザクションが失われないことが保証されます。

  • sync_binlog=N、0 または 1 以外の値: N 個のバイナリ ログ送信グループが収集された後、バイナリ ログはディスクに同期されます。停電やオペレーティング システムのクラッシュが発生した場合、サーバーはまだバイナリ ログにフラッシュされていないトランザクションをコミットしている可能性があります。この設定は、ディスクへの書き込みが増加するため、パフォーマンスに悪影響を与える可能性があります。値を大きくするとパフォーマンスは向上しますが、データ損失のリスクが増加します。

  • InnoDB

    トランザクションで使用されるレプリケーション セットアップで可能な限り最大の耐久性と一貫性を得るには、次の設定を使用します。

sync_binlog =1.innodb_flush_log_at_trx_commit=1.

  • 警告
#多くのオペレーティング システムと一部のディスク ハードウェアの不正行為は、ディスクへのフラッシュ操作に使用されます。リフレッシュがまだ発生していない場合でも、リフレッシュが発生したことを mysqld に通知する場合があります。この場合、推奨設定であってもトランザクションの耐久性は保証されず、最悪の場合、停電により
InnoDB

データが破損する可能性があります。 SCSI ディスク コントローラまたはディスク自体でバッテリ バックアップ式ディスク キャッシュを使用すると、ファイルの更新が高速化され、操作がより安全になります。ハードウェア キャッシュでのディスク書き込みのキャッシュを無効にしてみることもできます。

概要

sync_binlog 設定タイプは符号なし整数です。

一般的には 0 に設定されません。0 はシステム動作と不規則な fsync に依存します。停電やシステムクラッシュが発生した場合はより危険です。トランザクションは送信されますが、バイナリ ログが失われます。

これを 1 に設定し、可能な限り最大限の耐久性と一貫性を確保し、その後のマスター/スレーブのレプリケーションとリカバリを確実にする方が安全です。ただし、これはパフォーマンスに悪影響を与えるため、ビジネスに必要な IOPS が高くない場合に設定できます。
  • 1 より大きい値を設定する目的は、パフォーマンスを向上させることです。トランザクションをコミットする代わりに、fsync はバッチ フラッシュと同等です。これは賢い方法ですが、停電やシステム クラッシュが発生した場合は、バイナリ ログは失われますが、さらに存在します。ディスク自体がバッテリーバックアップのディスクキャッシュを使用していればより安全です。したがって、ビジネスで要求される IOPS が比較的高い場合に設定できますが、一般的にはあまり大きく設定せず、[100, 1000] の範囲に設定できます。
  • また、sync_binlog=0 の記述から、実際にはトランザクションが送信された時点で、すぐには fsync は発生していないものの、実際にページに書き込まれていることも大まかに感じられます。ファイル システムのキャッシュ。実際、mysql には、トランザクションの実行中にトランザクションで生成されたバイナリ ログをキャッシュするキャッシュもあります。
  • 引き続き、トランザクション実行時のバイナリ ログのキャッシュ関連の構成を見てみましょう。
  • binlog_cache_size

--binlog-cache-size=#システム変数binlog_cache_size #スコープ#動的#はい#いいえ##整数##デフォルト値##32768##最小値4096最大値(64ビットプラットフォーム)2^64=18446744073709547520最大値 (32 ビット プラットフォーム)2^32=4294967295ブロック サイズ4096

バイナリ ログを保持するメモリ バッファのサイズは、トランザクション中に変化します。値は 4096 の倍数である必要があります。

サーバーでバイナリ ログが有効になっている (log_bin システム変数が ON に設定されている) 場合、サーバーがトランザクション ストレージ エンジンをサポートしていれば、各クライアントにバイナリ ログ キャッシュが割り当てられます。トランザクションのデータがメモリ バッファ内のスペースを超える場合、超過したデータは一時ファイルに保存されます。サーバー上でバイナリ ログ暗号化がアクティブな場合、メモリ バッファは暗号化されませんが、(MySQL 8.0.17 以降では) バイナリ ログ キャッシュを保持するために使用される一時ファイルは暗号化されます。各トランザクションがコミットされた後、メモリ バッファをクリアし、一時ファイル (使用されている場合) を切り捨てることによって、バイナリ ログ キャッシュがリセットされます。

大規模なトランザクションを頻繁に使用する場合は、一時ファイルへの書き込みの必要性を減らすか排除することで、このキャッシュ サイズを増やしてパフォーマンスを向上させることができます。 Binlog_cache_use (サービス ステータス変数 - バイナリ ログ キャッシュを使用するトランザクションの数) および Binlog_cache_disk_use (サービス ステータス変数 - 一時バイナリ ログ キャッシュを使用するが、binlog_cache_size 値を超え、トランザクション ステートメントを保存するために一時ファイルを使用するトランザクションの数) ステータス変数この変数サイズを調整するために使用できます。 「バイナリログ」を参照してください。

binlog_cache_sizeトランザクション キャッシュのサイズのみを設定します。ステートメント キャッシュのサイズは、binlog_stmt_cache_size システム変数によって制御されます。

概要

  • binlog_cache_size 設定タイプは符号なし整数です。
  • は、各トランザクション中にバイナリ ログをキャッシュするために使用されるサイズを示すために使用されます。デフォルトは 32k で、4096 の倍数である必要があります。この値を超えると、一時ファイル ストレージが使用されます。
  • ビジネスでは大規模なトランザクションを使用しないようにしてください。トランザクションが大きすぎる場合は、それが合理的かどうかを検討する必要があります。通常、binlog_cache_size を変更する必要はなく、32k で十分です。
  • binlog_cache_size が足りない場合、一時ファイルが保存されますが、パフォーマンスが低下しますので、以下で紹介する max_binlog_cache_size=binlog_cache_size を設定して一時ファイルを使用しないようにすることもできます。

max_binlog_cache_size


# #コマンド形式
グローバル
SET_VARプロンプトが適用されます
タイプ
##コマンド形式--max-binlog-cache-size=システム変数max_binlog_cache_size範囲グローバル動的はいSET_VARプロンプト適用可能Noタイプ整数デフォルト値2^ 64=18446744073709547520 #最小値最大値ブロックサイズ

トランザクションがこのバイト数を超えるメモリを必要とする場合、サーバーは、「max_binlog_cache_size」バイトを超えるストレージ エラーを必要とするマルチステートメント トランザクションを生成します。最小値は 4096 です。可能な最大値は 16EiB (exbibytes) です。推奨される最大値は 4GB です。これは、MySQL が現在 4GB を超えるバイナリ ログの場所を処理できないためです。値は 4096 の倍数である必要があります。

max_binlog_cache_sizeトランザクション キャッシュのサイズのみを設定します。ステートメント キャッシュの上限は、max_binlog_stmt_cache_size システム変数によって制御されます。

セッションの可視性 max_binlog_cache_size binlog_cache_size システム変数の可視性と一致します。つまり、値の変更は、値の変更後に開始された新しいセッションにのみ影響します。

概要

  • max_binlog_cache_size は安全な値であり、通常はサーバーによって割り当てられるメモリに応じて設定されます。

概要

上記の構成から、バイナリ ログの書き込みプロセスは大まかに次のように結論付けることができます。

  1. トランザクションはランタイムに変更され、配置されます。各トランザクションのバイナリ ログ キャッシュに保存されます。
  2. トランザクション送信後は設定に従ってトランザクションが実行され、sync_binlog=1 の場合、fsync が実行されるたびにキャッシュが解放されます。 sync_binlog=0 の場合、オペレーティング システムに依存してバイナリ ログを随時フラッシュし、システム ファイルのページ キャッシュに直接書き込まれます。 sync_binlog=N (N>1) の場合はバッチフラッシュに相当し、当然ながら各トランザクションが保持していたバイナリログキャッシュは解放されます。

したがって、一般的なプロセスは次のとおりです。

要約

これまでのところ、プロセスについては一般的に理解できています。 Mysql をバイナリに書き込むには、Through: 各トランザクションが保持するバイナリ キャッシュ -> ファイル システムのページ キャッシュ -> ディスクが必要です。特定の実行戦略は、sync_binlog を通じて制御できます。

Use

  • sync_binlog: 最大限の耐久性と一貫性を得る必要がある場合は、1 に設定します。パフォーマンスの問題に関しては、ハードウェアやその他の方法を調整できます。バイナリ ログ、損失は許容されます。または、他の方法で制御を失い、現在のサーバー リソースに基づいて最適化したい場合は、[100,1000] の範囲に設定します。
  • binlog_cahe_size: 前述したように、実際のビジネスではトランザクション粒度の制御に注意が必要ですが、ほとんどの場合、デフォルトの 32k で十分です。

推奨学習: mysql ビデオ チュートリアル



4096
2^64=18446744073709547520
4096

以上がMySql でバイナリ ログを作成するプロセスを完全にマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

SQLデータベースの構築方法 SQLデータベースの構築方法 Apr 09, 2025 pm 04:24 PM

SQLデータベースの構築には、DBMSの選択が必要です。 DBMSのインストール。データベースの作成。テーブルの作成;データの挿入;データの取得。データの更新。データの削除。ユーザーの管理。データベースのバックアップ。

See all articles