重要なmysqlログファイルの概要

重要なmysqlログファイルの概要

著者: 丁易

出典: https://chengxuzhixin.com/blog/post/mysql_zhong_yao_ri_zhi_wen_jian_zong_jie.html

ログはすべてのアプリケーションにとって重要なデータです。MySQL には、エラー ログ、クエリ ログ、スロー クエリ ログ、トランザクション ログなどもあります。この記事では参考までに様々なログを簡単にまとめています。

バイナリログ

バイナリ ログ binlog は、データベースによって実行された書き込み操作 (クエリを除く) 情報を記録するために使用され、バイナリ形式でディスクに保存されます。任意のストレージ エンジンを使用する MySQL データベースは、binlog ログを記録します。 binlog に記録されるのは論理ログ、つまり SQL ステートメントです。 SQL ステートメントが実行されると、binlog がログ ファイルに追加されます。 binlog ファイルのサイズを設定できます。サイズを超えると、新しいファイルが自動的に作成されます。

バイナリログ形式には、STATMENT、ROW、MIXED の 3 つがあります。

  • STATMENT: データを変更する SQL ステートメントを binlog に記録します。これは、MySQL 5.7.7 より前のデフォルトの形式です。
  • ROW: 各 SQL ステートメントのコンテキスト情報は記録せず、変更されたデータのみを記録します。これは、MySQL 5.7.7 以降のデフォルトの形式です。
  • MIXED: STATMENT モードと ROW モードに基づく混合レプリケーション。通常は、STATEMENT モードが使用され、レプリケートできない操作には ROW モードが使用されます。

実際のアプリケーションでは、binlog は主にマスター スレーブ レプリケーションとデータ回復に使用されます。マスタースレーブレプリケーションとは、マスターマシンでバイナリログを開き、何らかの方法でスレーブマシンにバイナリログを送信することを意味します。スレーブマシンは、バイナリログの内容に基づいてデータ操作を実行し、マスタースレーブデータの一貫性を確保します。さらに、mysqlbinlog ツールを使用して、binlog からデータを復元することもできます。

MySQL 5.7 以降、組み込みのデフォルト エンジンは InnoDB エンジンに変更されました。 InnoDB エンジンがトランザクションを処理するときに、ログをディスクに書き込むタイミングを設定できます。デフォルトでは、ログはコミットごとにディスクに書き込まれます。 sync_binlog パラメータを設定して、システムを自動的に決定したり、N トランザクションごとに 1 回書き込んだりすることもできます。

クエリログ

クエリ ログには、すべてのデータベース要求に関する情報が記録されます。これらのリクエストが適切に実行されたかどうか。有効にするとパフォーマンスに大きな影響を与えるため、あまり使用されません。

スロークエリログ

スロー クエリ ログは、実行時間が特定のしきい値を超えるステートメントを記録するために使用されます。実行時間のしきい値は long_query_time で設定できます。デフォルトは 10 秒です。スロー クエリ ログは手動で有効にする必要がありますが、これはパフォーマンスに多少影響するため、通常は推奨されません。スロー クエリ ログは、ファイルまたはデータベース テーブルへのレコードの書き込みをサポートします。

トランザクションログREDOログ

トランザクションの 4 つの主要な特性の 1 つは耐久性です。したがって、トランザクションが成功すると、データベースの変更は永続的に保存され、いかなる理由でも元の状態に復元することはできません。 REDO ログは、InnoDB エンジン層で実装されるログです。すべてのエンジンに備わっているわけではありません。トランザクションによってデータ ページに加えられた変更を記録するために使用され、クラッシュが発生した場合にデータを回復するために使用できます。 REDO ログには、メモリ内のログ バッファとディスク上のログ ファイルが含まれます。 SQL ステートメントが実行されると、まずログ バッファーに書き込まれ、次に複数のバッファーが一度にファイルに書き込まれます。

InnoDB では、データ ページもディスクにフラッシュされます。REDO ログの主な目的は、データ ページをディスクにフラッシュする必要性を減らすことです。データ ページへの変更のすべての REDO ログを保存する必要はありません。データ ページが REDO ログよりも速くフラッシュされる場合、REDO ログ レコードはデータ回復にとってあまり重要ではありません。データ ページが REDO ログよりも遅くフラッシュされる場合、データ ページよりも速い REDO ログの部分を使用してデータを迅速に回復できます。そのため、REDO ログ ファイルのサイズは固定されており、REDO ログが最後まで達すると先頭に戻ってループでログを書き込みます。

トランザクションログの元に戻すログ

トランザクションの 4 つの主要な特性の 1 つは、アトミック性です。データベースに対する一連の操作は、すべて成功するか、すべて失敗するかのいずれかである必要があります。部分的な成功や部分的な失敗は許可されません。そのため、データの論理的な変化を記録する必要があります。アトミック性は、UNDO ログによって実現されます。たとえば、トランザクションで挿入ステートメントが実行されると、UNDO ログには削除ステートメントが記録されます。トランザクションで更新ステートメントが実行されると、UNDO ログには反対の更新ステートメントが記録されます。このように、トランザクションが失敗した場合、UNDO ログを通じてトランザクション前の状態にロールバックすることができます。

上記は重要なMySQLログファイルの概要の詳細内容です。MySQLログファイルの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL ログファイルの詳細
  • MySQL ログファイルとログタイプの紹介
  • mysql バイナリ ログ ファイル データベースの復元
  • MySQL データベースのログファイルを自動的に復元するためのアイデアとソリューションを共有する
  • MySQL ログファイルはどこにありますか? MySQL ログファイルの場所を変更する方法
  • MySQLの7種類のログの概要

<<:  SpringBoot プロジェクトの Docker 環境を実行するときに発生する無限再起動問題の詳細な説明

>>:  HTMLでマスクレイヤーを実装する方法 HTMLでマスクレイヤーを使用する方法

推薦する

Linux のリンク解除機能とファイルの削除方法

1. リンク解除機能ハード リンクの場合、unlink はディレクトリ エントリを削除し、inode...

CentOS で MySQL 5.1 を 5.5.36 にアップグレードする

CentOS 6.4 環境で MySQL 5.1 を 5.5.36 にアップグレードする手順を記録し...

HTML マークアップ言語 - テーブルタグ

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

2 つの MySQL ユーザー削除ステートメント (delete user と drop user) の違い

ヒント: MySQL では、ユーザーの作成と削除が頻繁に必要になります。ユーザーを作成するときは、通...

Windows 10 に付属する仮想マシンのネットワークを設定するための詳細な手順 (グラフィック チュートリアル)

1. サーバー ホストをクリックし、右側の操作リストで [仮想スイッチ管理] をクリックして、仮想...

FlashFXP FTP クライアント ソフトウェア登録クラッキング方法

FlashFXPのダウンロードアドレスは、https://www.jb51.net/softs/95...

vue keep-alive の簡単な概要

1. 機能主にコンポーネントの状態を保持したり、再レンダリングを回避したりするために使用されます。 ...

Web インタビュー Vue カスタム コンポーネントと呼び出しメソッド

輸入:プロジェクトの要件により、同じコードの一部をコンポーネントにカプセル化し、必要な場所にインポー...

MySQL 5.7.21 履歴データディレクトリからデータを復元するチュートリアルの解凍バージョン

状況の説明: データベースが異常に起動およびシャットダウンしたため、サービスを再度起動したときに「起...

MySQLはIDに適切なデータ型を選択します

目次分散IDソリューションの概要データベース自動増分IDデータベースマルチマスターモード数値セグメン...

クロスドメイン js フロントエンドの 8 つの実装ソリューション

目次1. jsonp クロスドメイン2. document.domain + iframe クロスド...

ウェブサイトのコードブロックのpreタグにコピーコードボタンコードを追加します

他のよりプロフェッショナルなブログ システムを参照すると、コード ブロックにコードのコピー ボタンが...

Dockerイメージをインポートおよびエクスポートする方法

この記事では、移行、バックアップ、アップグレードなどのシナリオで使用される Docker イメージの...

CSS3 パッケージ化後にプレフィックスプラグインを自動的に追加する方法の詳細な説明: autoprefixer

vue-cli で構築されたプロジェクト スキャフォールディングでは、すでに autoprefix...

MySQL エラー コード 1064 の解決策

SQL ステートメント内の単語が mysql のキーワードと競合する場合は、`` (タブ キーの上)...