チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念 MySQLシリーズのMariaDBサーバーのインストール MySQL シリーズ II マルチインスタンス構成 MySQL シリーズ 3 基礎 MySQL シリーズ 4 SQL 構文 MySQLシリーズ5つのビュー、ストアド関数、ストアドプロシージャ、トリガー MySQL シリーズ 6 のユーザーと認証 MySQL シリーズ 7 MySQL ストレージ エンジン MySQL シリーズ 8 MySQL サーバー変数 MySQL シリーズ 9 MySQL クエリ キャッシュとインデックス MySQL シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離 MySQL シリーズ 11 ログ MySQL シリーズ 12 バックアップとリカバリ MySQL シリーズ 13 MySQL レプリケーション MySQL シリーズ 14 MySQL 高可用性実装 MySQLシリーズ15 MySQL共通設定とパフォーマンスストレステスト 1. SQLコマンド履歴~/.mysql_history mysqlで実行されたコマンド履歴を記録します。
トランザクションログトランザクションログ: トランザクションストレージエンジンは、自身を管理し、使用します。 トランザクションがコミットされたがまだディスクに保存されていない場合は、トランザクション ログに記録されます。この時点でシステムの電源が切れると、コミットされたトランザクションは自動的にやり直され (REDO ログ)、再起動後にディスクに書き込まれます。トランザクションがコミットされていない場合は、電源障害と再起動後に元に戻す操作 (UNDO ログ) が実行されます。
関連変数
MariaDB [school]> SHOW VARIABLES LIKE 'innodb_log%';
+---------------------------+-------------+
| 変数名 | 値 |
+---------------------------+-------------+
| innodb_log_block_size | 512 | -- ブロック サイズ | innodb_log_buffer_size | 8388608 | -- キャッシュ サイズ | innodb_log_file_size | 1073741824 | -- 各ログ ファイルのサイズ | innodb_log_files_in_group | 3 | -- ログ グループ メンバーの数、つまりファイルの数 | innodb_log_group_home_dir | ./ | -- データ ディレクトリを基準としたトランザクション ファイル パス +---------------------------+----------------------------+ innodb_log_file_size のデフォルト値は 5M で、innodb_log_files_in_group のデフォルト値は 2 です。これら 2 つの値を増やすことを強くお勧めします。 トランザクション操作のデータがトランザクション ログ ファイルの合計サイズより大きい場合、ROLLBACK を実行すると元に戻すことができますが、データ ファイルが占有されるため、OPTIMIZE TABLE コマンドを使用してデータ領域を解放する必要があります。 TRUNCATE を使用してテーブル レコードを削除すると、占有領域を削減できます。DELETE コマンドではディスク領域は解放されません。領域を解放する必要がある場合は、OPTIMIZE コマンドを使用してデフラグし、領域を解放する必要があります。
注意: innodb_log_file_size を変更する場合は、まず元のログ ファイルを削除する必要があります。 3. エラーログエラー ログには次の内容が記録されます。 - mysqld の起動とシャットダウン中に出力されるイベント情報
- mysqld 操作中に生成されたエラー メッセージ
- イベントスケジューラがイベントを実行したときに生成されるログ情報
- マスタースレーブレプリケーションアーキテクチャでスレーブ上でスレーブスレッドを開始するときに生成されるメッセージ
関連変数
MariaDB [school]> SHOW GLOBAL VARIABLES LIKE 'log_error'; #エラーログファイルのパス+--------------+------------------------------+
| 変数名 | 値 |
+---------------+------------------------------+
| log_error | /var/log/mariadb/mariadb.log |
+---------------+------------------------------+ log_warnings=1|0 0デフォルト値 1 (はい): 警告情報をエラーログファイルに記録するかどうか 4. クエリログユーザーの操作ログを記録します。通常は有効にしないことを推奨します。
MariaDB [school]> 'general_log%' のような変数を表示します。
+------------------+--------------+
| 変数名 | 値 |
+------------------+--------------+
| general_log | OFF | -- 一般ログのオン/オフを切り替えます。デフォルトではオフです | general_log_file | centos7.log | -- 一般ログ ファイルのファイル名、/var/lib/mysql/HOSTNAME.log
+------------------+--------------+
MariaDB [school]> 'log_output' のような変数を表示します。
+---------------+-------+
| 変数名 | 値 |
+---------------+-------+
| log_output | FILE | -- ログの保存方法 (TABLE|FILE|NONE)
+---------------+-------+ mysql.general_log: テーブルにはクエリログが格納されます。
5. スロークエリログ指定された時間よりも長くクエリを実行する操作を記録します。 1. 遅いクエリ関連の変数
MariaDB [school]> SHOW VARIABLES LIKE 'slow_query%';
+---------------------+------------------+
| 変数名 | 値 |
+---------------------+------------------+
| slow_query_log | OFF | -- スロークエリログを有効または無効にする | slow_query_log_file | centos7-slow.log | -- スロークエリログファイル+---------------------+------------------+
MariaDB [school]> 'long_query_time' のような変数を表示します。
+-----------------+-----------+
| 変数名 | 値 |
+-----------------+-----------+
| long_query_time | 10.000000 | -- スロークエリしきい値(秒単位)。クエリ時間が 10 を超えると、スロークエリ ログに記録されます。 +-----------------+-----------+
MariaDB [school]> 'log_slow%' のような変数を表示します。
+---------------------+-------+
| 変数名 | 値 |
+---------------------+-------+
| log_slow_rate_limit | 1 | -- いくつのクエリがログに記録されますか? MariaDB 固有 | log_slow_verbosity | | -- ログに記録されるコンテンツの詳細レベル (Query_plan、explain)
+---------------------+-------+
MariaDB [school]> 'log_queries_not_using_indexes' のような変数を表示します。
+---------------------------------+-------+
| 変数名 | 値 |
+---------------------------------+-------+
| log_queries_not_using_indexes | OFF | -- インデックスクエリを使用せず、フルテキストスキャンを使用するステートメントをログに記録します。デフォルトでは無効になっていますが、有効にすることをお勧めします +------------------------------+-------+ log_slow_filter : クエリ結果に基づいてフィルタリングする - 管理者
- ファイルソート
- ディスク上のファイルソート
- フルジョイン
- フルスキャン
- クエリキャッシュ
- クエリキャッシュミス
- tmp_テーブル
- ディスク上のtmpテーブル
2. 補足: profiling を使用してクエリステートメントで使用された詳細な時間を追跡する
MariaDB [school]> SHOW VARIABLES LIKE 'profiling';
+---------------+-------+
| 変数名 | 値 |
+---------------+-------+
| プロファイリング | OFF | -- 有効または無効、デフォルトでは無効+---------------+-------+
MariaDB [school]> SET profiling=ON; #クエリステートメント追跡機能をオンにしますMariaDB [school]> SHOW profiles; #クエリステートメント実行の時間リスト+----------+------------+------------------------------------------------------------+
| Query_ID | 期間 | クエリ |
+----------+-------------+----------------------------------------------------------+
| 1 | 0.00024497 | 学生から*を選択 |
| 2 | 0.00038528 | stuid = 2 の場合、stuid、name、age を students から選択します |
+----------+-------------+----------------------------------------------------------+
MariaDB [school]> SHOW profile FOR query 2; #指定した番号のSQL文の詳細な実行プロセスを照会する+----------------------+----------+
| ステータス | 期間 |
+----------------------+----------+
| 開始 | 0.000035 |
| オープニングテーブル | 0.000003 |
| テーブルを開いた後 | 0.000006 |
| クエリ終了 | 0.000003 |
| テーブルのクローズ | 0.000002 |
| アイテムを解放 | 0.000011 |
| ステータスを更新中 | 0.000006 |
| クリーンアップ | 0.000001 |
+----------------------+----------+ 6. バイナリログコミットされたトランザクションでデータの変更を引き起こした、または潜在的にデータの変更を引き起こした SQL ステートメントを記録し、ストレージ エンジンの種類に関係なく、ログ ファイルでイベントを「再生」してデータのコピーを生成します。 バイナリ ログを有効にします。デフォルトでは無効になっています。バイナリ ログとデータは別々に保存されます。
バイナリファイルのログ機能を有効にするには、my.cnfの[mysqld]の下にog_bin[=/path/somefile] を追加します。 デフォルトのバイナリ ログはデータベース ディレクトリにあります。mariadb mariadb-bin.000001 はバイナリ ログ データ ファイルであり、 mariadb-bin.index バイナリ ログ インデックス ファイルです。 1. バイナリログを記録する 3 つの方法:- ステートメント記録方式に基づいて、データを変更する各ステートメントがスペースを節約するためにステートメントとして記録されます。システムはデフォルトでこのモードに設定されていますが、隠れたリスクがあるため、使用することはお勧めしません。
- 行記録方式に基づいて、行内の各変更は、それを変更したステートメントとして記録されます。ログの量は大きくなりますが、データのセキュリティ保護は非常に高くなります。
- 混合モード: 混合、システムがどの方法を使用するかを決定します
MariaDB [(なし)]> SHOW VARIABLES LIKE 'binlog_format';
+---------------+-----------+
| 変数名 | 値 |
+---------------+-----------+
| binlog_format | STATEMENT | -- ログモード。システムのデフォルトはステートメントベースモードです+---------------+-----------+
SET binlog_format='ROW|STATEMENT|MIXED'; -- バイナリログ記録モードを変更する 2. バイナリログ関連の変数
MariaDB [(なし)]> SHOW MASTER|BINARY LOGS; -- MariaDB によって管理されるバイナリ ログ ファイルのリストを表示します。 +--------------------+-----------+
| ログ名 | ファイルサイズ |
+--------------------+------------+
| mariadb-bin.000002 | 290 |
| mariadb-bin.000003 | 264 |
| mariadb-bin.000004 | 529038 |
| mariadb-bin.000005 | 245 |
+--------------------+------------+
MariaDB [(なし)]> SHOW MASTER STATUS; -- 使用中のバイナリログファイルを表示します +--------------------+----------+--------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000005 | 245 | | |
+--------------------+----------+--------------+------------------+
MariaDB [(なし)]> SHOW BINLOG EVENTS IN 'mariadb-bin.000004' FROM 1 LIMIT 2,3\G -- バイナリファイル内の指定されたコンテンツを表示します
MariaDB [(なし)]> SHOW VARIABLES LIKE 'sql_log_bin'; -- バイナリログを記録するかどうか。デフォルトはON
MariaDB [(なし)]> SHOW VARIABLES LIKE 'log_bin'; --ファイルの場所を指定します。デフォルト値は OFF で、バイナリ ログ機能が有効になっていないことを意味します。上記の 2 つの項目は両方とも有効にする必要があります。MariaDB [(なし)]> SHOW VARIABLES LIKE 'max_binlog_size';
+-----------------+------------+
| 変数名 | 値 |
+-----------------+------------+
| max_binlog_size | 1073741824 | -- バイナリログファイルの最大サイズ。最大値に達すると自動的にロールオーバーされます。デフォルト値は 1G です。
+-----------------+------------+
MariaDB [(なし)]> SHOW VARIABLES LIKE 'sync_binlog';
+---------------+-------+
| 変数名 | 値 |
+---------------+-------+
| sync_binlog | 0 | -- バイナリログのインスタント同期ディスク機能を有効にするかどうかを設定します。デフォルトは 0 で、オペレーティングシステムがログをディスクに同期する責任を負います+---------------+-------+
MariaDB [(なし)]> 'expire_logs_days' のような変数を表示します。
+------------------+-------+
| 変数名 | 値 |
+------------------+-------+
| expire_logs_days | 0 | -- バイナリ ログが自動的に削除されるまでの日数。 デフォルト値は 0 で、自動削除は行われません。 +------------------+-------+ 3.mysqlbinlogコマンド- バイナリログ用クライアントコマンドツール
- --start-position=# 開始位置を指定します
- --stop-position=# 終了位置を指定します
- --start-datetime=(YYYY-MM-DD hh:mm:ss) は開始時刻を指定します
- --stop-datetime=(YYYY-MM-DD hh:mm:ss) は終了時刻を指定します
- --base64-output=デコード行
- -v |-vv |-vvv |-vvvv 詳細情報を表示
[root@centos7 mysql]# mysqlbinlog --start-position=528864 --stop-position=529019 mariadb-bin.000004 --base64-output=デコード行 -v
# 528864 で
#180611 20:59:46 サーバー ID 1 end_log_pos 528992 クエリ thread_id=29 exec_time=0 error_code=0
`school`/*!*/ を使用します。
タイムスタンプを 1528721986/*!*/ に設定します。
INSERT students(StuID,Name,Age,Gender) VALUES (26,'Tom',22,'M') #データを変更するSQLステートメント /*!*/;
事件発生日時: 180611 20:59:46
イベントが発生したサーバー ID: サーバー ID 1
イベントの終了位置: end_log_pos 528992
イベントタイプ: クエリ
イベントが発生したときにサーバー上でこのイベントを実行したスレッドの ID: thread_id=29
ステートメントのタイムスタンプとバイナリ ファイルに書き込まれた時間の差: exec_time=0
エラーコード: error_code=0
イベント内容:
GTID: グローバルトランザクションID、MySQL 5.6およびMariaDB 10以降の固有の属性: GTID mysqlbinlog mariadb-bin.000001 > file.sql コマンドを使用してSQLファイルにリダイレクトし、 mysql -uroot -p < file.sql コマンドを使用してデータを直接インポートし、バックアップと復元機能を実現します。 4. バイナリログ管理
MariaDB [(なし)]> PURGE BINARY LOGS TO 'mariadb.000002'; -- 02 を削除します。注意: 02 は削除されませんMariaDB [(なし)]> PURGE BINARY LOGS BEFORE '2018-01-23'; -- 2018-01-23 より前のログを削除しますMariaDB [(なし)]> PURGE BINARY LOGS BEFORE '2017-03-22 09:25:30';
MariaDB [(なし)]> RESET MASTER; -- すべてのバイナリログを削除し、インデックスファイルをリセットします。MariaDB [(なし)]> FLUSH LOGS; -- ログローリングを手動でトリガーします。 7. リレーログrelay log : マスター スレーブ レプリケーション アーキテクチャでは、スレーブ サーバーはマスター サーバーのバイナリ ログから読み取られたイベントを保存するために使用されます。
要約するこの記事はこれで終わりです。少しでもお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:- MySQL でスロークエリのログ記録を有効にする方法
- mysql のスロークエリを有効にする方法 mysql のスロークエリのログを有効にする方法
- MySQL ログの設定と表示方法
- MySQL ログファイルの詳細
|