MySQL バイナリ ログに関する問題の詳細な説明
この記事の出典:
(出典への権利を保持することは、オリジナルの著作物ではありません。私のささやかな仕事はオリジナルの著作物とは程遠いものです。存在する可能性のあるいくつかの間違いは修正されるか、または原文にリンクするだけです。将来追加されるものであり、他には何もありません)
今日、Yunqi コミュニティが開催する MySQL の「シーズン 1: Xuanxian の遅い SQL パフォーマンス最適化コンテストに挑戦」を偶然発見しました。そのテスト スクリプトをテスト サーバー上で実行してデータを書き込むと、エラー メッセージは次のとおりです。
マルチ ステートメント トランザクションには 'max_binlog_cache_size' バイトを超えるストレージが必要です。この mysqld 変数を増やしてもう一度試してください
プロンプト max_binlog_cache_size のスペースが不足しています。バイナリ ログがオンになっているため、これがデフォルトでした。以前の設定では、大規模なトランザクション操作は発生せず、遭遇もありませんでした。今回の問題は、大規模なトランザクション操作が最初に失敗したことでした。
binlog_cache_size のサイズを変更した後、問題は解決されました。
デフォルトの innodb エンジンが使用されるため、バイナリ ログがオンになります。
トランザクション操作の場合、トランザクションが送信される前に、バイナリ ログが書き込まれる必要があります。実行された書き込み操作はキャッシュされます。 、全体が完了するまで、mysqld プロセスは全体をバイナリ ログに書き込みます。
何かが開始されると、binlog_cache_size システム変数で指定された値に従ってコンテンツ スペースが割り当てられます。指定された binlog_cache_size キャッシュ スペースが十分でない場合、実行されたトランザクション操作はロールバックされ、失敗メッセージが表示されます。
ところで、バイナリログとそれに関連するパラメータ情報をまとめてみましょう
バイナリログとは何ですか?
MySQL データベースへの書き込み操作 (追加、削除、変更、ただしクエリは除く) を記録するために使用されます。これは、sqlserver の完全復旧モードのトランザクション ログ ファイルに相当します。
バイナリログの役割は何ですか?
1. レプリケーションに使用されます。マスターとスレーブのレプリケーションが設定されている場合、マスター サーバーは生成したバイナリ ログをスレーブに送信し、スレーブはこのバイナリ ログの情報を使用してローカルで再実行し、マスターとスレーブの同期を実現します。
2. ユーザーリカバリの場合、MySQL はバイナリログを使用して、完全バックアップと差分バックアップに基づいた時点またはトランザクション ID に基づいてリカバリ操作を実行できます。原理は、マスター/スレーブ レプリケーションのログ REDO と似ています。
バイナリ ログの関連パラメータ情報
1、バイナリ ログを有効にする
バイナリ ログを有効にするには、log-bin パラメータのパスを指定する必要があります。例: log_bin=/var/lib/mysql/mysql- bin
バイナリログを起動すると、バイナリログを管理するlog_bin_indexファイルが自動生成されます。 log_bin オプションも on として表示されます。これは、バイナリ ログがオンであることを意味します。
2、バイナリログファイルの形式
バイナリログの形式は、パラメータ binlog_format によって制御されます。バイナリログには、ステートメントベース、行ベース、およびその組み合わせの 3 つのモードがあります。最初の 2 つは、混合モード (混合)
ステートメントベースのバイナリ関数には、(私の意見では) いくつかの欠陥があります。たとえば、同じ update ステートメント内で現在時刻を使用する now update 操作も、マスター上の現在時刻を取得します。サーバーとスレーブサーバーでは、マスター/スレーブレプリケーションによって得られる結果が異なります。
行ベースのバイナリ ログ モードは、ステートメント ベース モードの欠点の一部を解決しますが、場合によっては、大量のログが生成されます。たとえば、行の場合、更新操作で 100 万行のデータが更新されます。 -ベースのバイナリ ログの結果、100 万行のデータが生成されます。 ログ
ハイブリッド モードに基づいて、上記 2 つの方法の利点を組み合わせます。
設定ファイルで設定可能: binlog_format = MIXED
3. バイナリログ記録のタイミング
バイナリログ記録は同期可能、つまりトランザクションが送信された後にバイナリログに書き込むことができます。 、または非同期にすることもできます。ディスクに書き込むタイミングはオペレーティング システムのディスク キャッシュによって決まります。
パラメータ sync_binlog= n によって制御されます。 sync_binlog = 1 が設定されている場合、これは最高のセキュリティ レベルの書き込みを示します (ただし、トランザクション ログが失われないという保証はありません)。パフォーマンスに一定の影響を与えます。
個人的には、トランザクションエンジンであれば、安全性を確保するためだと思います。 sync_binlog を 1 に設定しない理由はありません。
sync_binlog を 1 に設定するとトランザクション ログが失われる可能性があると言われていますが、トランザクション エンジンであるため、元に戻すまたはやり直しログの層もバックアップとして存在するため、なぜ失われるのかわかりません。 ?
後で考えてみましょう、REDO ログと UNDO ログの存在により、マスター サーバー上で物事の一貫性が保証されます。マスター/スレーブ レプリケーション中に、失われた可能性のあるものが配信されない可能性があるはずです。スレーブサーバー。
4. バイナリログの 1 ファイルのサイズ
バイナリログのサイズは、通常、設定された 1 つのログファイルの最大サイズを超えることはありません。設定された最大制限を超えた場合、その後、ログ ローリングが発生します。つまり、バイナリ ログ ファイルが再生成されます。
Max_binlog_size = 100M
ここで示されている104857600の単位はバイト、つまり104857600/1024/1024 = 100M
5、ローリング後にバイナリログクリーニング
が生成されます ログを保存する新しいファイルs 、ログ ファイルは有効期限が切れると自動的に削除されます。それ以外の場合は、ログ ファイルの継続的なストリームが生成されます。たとえば、有効期限を 2 に設定できます。設定可能な値は、expire_logs_days = 2 です。3 つ以上のバイナリ ログ。日数が経過したものは自動的に削除されます。
show master logsコマンドを使用して、現在のバイナリログファイルの数を表示できます
2) mysqlサービスを再起動すると、指定された最大容量に従ってログファイルがいっぱいかどうかに関係なく、自動的にスクロールします
3) 手動スクロールでは、flush logsコマンドを実行した後、実行します次のようにログをフラッシュすると、バイナリ ログ ファイルが再生成されます
purge binary logs to fileName を使用して、指定された fileName より前のファイルを削除できます
Xiaoxiang マスターは、date_sub( now( )、間隔 7 日) より前のマスター ログをパージしていますが、これは影響を与えるはずです (バイナリ キーワードとマスター キーワード)。
# binlog_do_db: マスター/スレーブを設定するときに使用されます
# binlog - ignore-db: ログを記録しないデータベースを設定します。
MySQL 5.7.18 で設定されています (my.cnf で設定されています) が、
こちら 表示されるレコードの単位もバイトです 1024を2で割った後の容量です ここの20971520/1024/1024は20MBに相当します。
テスト中など、大規模なトランザクション操作がある場合は、キャッシュを比較的大きく設定する必要があります。そうでないと、ステートメントが正常に実行されません
デフォルトの max_binlog_cache_size は 4GB で、最大値も 4GB です。ここでのテスト用の設定は 100MB (104857600/1024.0/1024.0) です
。
max_binlog_cache_size で設定される最大メモリ サイズは 4GB です。サーバーのコンテンツが 128GB 以上など大きい場合は、同時書き込みを確実に成功させる必要があるため、max_binlog_cache_size をデフォルトで最大値に設定しても問題ありません。
セッションレベルの binlog_cache_size については、通常の OLTP 操作に加えて、スケジュールされたジョブもいくつかあるため、ビジネスの状況に応じて調整できます。およびその他のデータ抽出またはデータのマージ操作により、大量のログが生成される可能性があります。
binlog_cache_disk_useとbinlog_cache_useを見ることでbinlog_cache_sizeの調整が必要かどうか判断できると言われています。
しかし、このパラメータはMySQL5.7.18では見つかりませんでした
9、バイナリログの他のパラメータ
max_binlog_stmt_cache_sizeは非トランザクションステートメント用であり、非トランザクションパラメータは当面は関係ありません
あるマスターは、innodb エンジンの利点はトランザクションのサポートだけではなく、非トランザクションの myisam エンジンと比較して、読み取りパフォーマンスの差がますます小さくなっていると述べていたため、MySQL は innodb を次のように設定します。デフォルトのエンジン。
myisam を放棄して innodb に行くのが正しい方法です。
binlog_checksum はレプリケーションのマスター/スレーブチェックサムとして使用されます。このパラメータについてはまだ勉強していないので今回は気にしません
詳細はXiang Xiangshenの記事を参照してください。
概要:
MySQL バイナリ ログは、機能 (マスター/スレーブ レプリケーション) だけでなく、セキュリティ (バイナリ ログ) や、バイナリ ログがオンになっている場合のトランザクション操作にも使用されます。環境は必須の構成と考えることができます。
同時に、そのさまざまなパラメータは特定の操作に影響を与えるため、使用時にデータベースの機能と可用性が保証されるように、バイナリログのパラメータには特別な注意を払う必要があります。
参考:
《Smear MySQL》
そして様々なパラパラ漫画、オンライン教材
行動を起こすことで思考パターンや恐怖心を変えることができます。
以上がMySQL バイナリ ログに関する問題の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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