検索
ホームページデータベースmysql チュートリアル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 サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
MySQLで利用可能なさまざまなストレージエンジンは何ですか?MySQLで利用可能なさまざまなストレージエンジンは何ですか?Apr 26, 2025 am 12:27 AM

mysqloffersvariousstorageEngines、それぞれのfordifferentusecases:1)Innodbisidealforapplicationsingingidcomplianceanceandhighconcurrency、support transactions andforeignkeys.2)myisamisbestforread-havyworkloads、transactionsupptort.3)

MySQLの一般的なセキュリティの脆弱性は何ですか?MySQLの一般的なセキュリティの脆弱性は何ですか?Apr 26, 2025 am 12:27 AM

MySQLの一般的なセキュリティの脆弱性には、SQLインジェクション、弱いパスワード、不適切な許可構成、および非合事ソフトウェアが含まれます。 1。SQL注射は、前処理ステートメントを使用することで防ぐことができます。 2。強力なパスワード戦略を強制的に使用することにより、弱いパスワードを回避できます。 3.不適切な許可構成は、ユーザー許可の定期的なレビューと調整を通じて解決できます。 4.未使用のソフトウェアは、MySQLバージョンを定期的にチェックして更新することでパッチを適用できます。

MySQLでスロークエリをどのように識別できますか?MySQLでスロークエリをどのように識別できますか?Apr 26, 2025 am 12:15 AM

MySQLの遅いクエリを識別することは、遅いクエリログを有効にし、しきい値を設定することで実現できます。 1.スロークエリログを有効にし、しきい値を設定します。 2.スロークエリログファイルを表示および分析し、詳細な分析のためにMySQLDumpSlowやPT-Query-Digestなどのツールを使用します。 3.インデックスの最適化、クエリの書き換え、およびselect*の使用を回避することで、遅いクエリの最適化を実現できます。

MySQLサーバーの健康とパフォーマンスをどのように監視できますか?MySQLサーバーの健康とパフォーマンスをどのように監視できますか?Apr 26, 2025 am 12:15 AM

MySQLサーバーの健康とパフォーマンスを監視するには、システムの健康、パフォーマンスメトリック、クエリの実行に注意する必要があります。 1)システムの健康を監視する:Top、HTOP、またはShowGlobalStatusコマンドを使用して、CPU、メモリ、ディスクI/O、ネットワークアクティビティを表示します。 2)パフォーマンスインジケーターの追跡:クエリ番号あたりのクエリ番号、平均クエリ時間、キャッシュヒット率などのキーインジケーターを監視します。 3)クエリ実行の最適化を確保します:スロークエリログを有効にし、実行時間が設定されたしきい値を超えるクエリを記録し、最適化します。

mysqlとmariadbを比較対照します。mysqlとmariadbを比較対照します。Apr 26, 2025 am 12:08 AM

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

MySQLのライセンスは、他のデータベースシステムと比較してどうですか?MySQLのライセンスは、他のデータベースシステムと比較してどうですか?Apr 25, 2025 am 12:26 AM

MySQLはGPLライセンスを使用します。 1)GPLライセンスにより、MySQLの無料使用、変更、分布が可能になりますが、変更された分布はGPLに準拠する必要があります。 2)商業ライセンスは、公的な変更を回避でき、機密性を必要とする商用アプリケーションに適しています。

MyisamよりもInnodbを選びますか?MyisamよりもInnodbを選びますか?Apr 25, 2025 am 12:22 AM

Myisamの代わりにInnoDBを選択する場合の状況には、次のものが含まれます。1)トランザクションサポート、2)高い並行性環境、3)高いデータの一貫性。逆に、Myisamを選択する際の状況には、1)主に操作を読む、2)トランザクションサポートは必要ありません。 INNODBは、eコマースプラットフォームなどの高いデータの一貫性とトランザクション処理を必要とするアプリケーションに適していますが、Myisamはブログシステムなどの読み取り集約型およびトランザクションのないアプリケーションに適しています。

MySQLの外国キーの目的を説明してください。MySQLの外国キーの目的を説明してください。Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター