重要な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でマスクレイヤーを使用する方法

推薦する

MySQLのインデックス設計の原則と一般的なインデックスの違いについて簡単に説明します。

インデックス定義: ディスク上に保存される個別のデータベース構造であり、データ テーブル内のすべての...

Linuxはバイナリモードを使用してmysqlをインストールします

この記事では、LinuxにバイナリモードでMySQLをインストールする具体的な手順を参考までに紹介し...

JavaScript のガベージコレクションの仕組みの詳細な説明

目次ガベージコレクション (GC) はなぜ必要なのでしょうか?ガベージコレクションとは廃棄物の発生ガ...

CSS と HTML とフロントエンド テクノロジーのレイヤー図

JavascriptとDOMの関係は非常に曖昧で、CSSやHTMLのフロントエンド技術層も理解してい...

Mysqlサーバーのインストール、構成、起動、シャットダウン方法の詳細な説明

1. 公式サイトからダウンロード: https://dev.mysql.com/downloads/...

MySQL の簡単な分析 - MVCC

バージョンチェーンInnoDB エンジン テーブルでは、クラスター化インデックス レコードに 2 つ...

DHTML オブジェクト (さまざまな HTML オブジェクトの共通プロパティ)

!DOCTYPE HTML ドキュメントが準拠するドキュメント型定義 (DTD) を指定します。 ...

Springboot+Vue-Cropperでアバターの切り取りとアップロードの効果を実現

アバターをアップロードするにはVue-Cropperコンポーネントを使用します。参考までに具体的な内...

MySQL ビュー管理ビューの例の詳細説明 [追加、削除、変更、クエリ操作]

この記事では、例を使用して MySQL ビューの管理ビュー操作について説明します。ご参考までに、詳細...

CentOS 7 で PHP 5.4 を 5.6 にアップグレードする方法の簡単な分析

1.ターミナルに入ったらPHPのバージョンを確認するphp -v出力は次のようになります。 PHP ...

CSS 表示テーブルの適応的な高さと幅の問題の解決策

定義と使用法display プロパティは、要素が生成するボックスのタイプを指定します。例示するこの属...

ページ切り替え効果を実現するJSコード

この記事の例では、ページ切り替え効果を実現するためのJSコードの具体的なコードを参考までに共有してい...

IE6/7 で絶対配置された要素が不可解に消えたりブロックされたりする問題を解決する方法

1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...

Alibaba Cloud CentOS7 サーバーの nginx 構成と FAQ の分析

序文:この記事は、jackyzm のブログ https://www.cnblogs.com/jack...

MySQL 起動エラーを解決する: エラー 2003 (HY000): 'localhost' の MySQL サーバーに接続できません (10061)

このエラーは初心者によく発生します。この記事では主に、エラー 2003 (HY000): '...