【MySQL日誌】MySQL日誌檔案初級管理

恩強Boy發表於2021-01-05

MySQL 日誌檔案初級管理

1.  MySQL 有以下日誌檔案

error log (錯誤日誌)

bin log (二進位制日誌)

relary log (中繼日誌)

slow log (慢查詢日誌)

 

2.  error log (錯誤日誌)

error log 用於記錄資料庫的錯誤資訊,預設情況下是開啟的。可以在客戶端中檢視 log_error 位置

mysql> show variables like 'log_error';

+---------------+---------------------+

| Variable_name | Value                 |

+---------------+---------------------+

| log_error      | /var/log/mysqld.log |

+---------------+---------------------+

1 row in set (0.00 sec)

可以編輯my.cnf 檔案來修改錯誤日誌位置

my.cnf 檔案中新增以下內容:

log-error=/var/log/mysqld.log

3.  Binary log bin log )(二進位制檔案)

1)  設定binary log

二進位制檔案用於記錄MySQL 資料庫所有的資料修改操作,相當於 Oracle redo log 。在備份和恢復過程中起作用,預設是不開啟的。

如要開啟,需要在my.cnf 檔案中新增以下內容:

log-bin=/usr/local/mysql/mysql-bin/slave

server-id=1   (這一行5.7 版本以後必須加)

注:mysql-bin 目錄必須存在且屬於 mysql 使用者

2)  建立以下資料夾並重啟MySQL

# mkdir /usr/local/mysql/mysql-bin

# chown -R mysql:mysql /usr/local/mysql/mysql-bin

# service mysqld restart

在客戶端檢視

mysql> show variables like 'log_bin%';

+---------------------------------+----------------------------------------+

| Variable_name                    | Value                                    |

+---------------------------------+----------------------------------------+

| log_bin                            | ON                                     |

| log_bin_basename                 | /usr/local/mysql/mysql-bin/slave        |

| log_bin_index                    | /usr/local/mysql/mysql-bin/slave.index   |

| log_bin_trust_function_creators    | OFF                                    |

| log_bin_use_v1_row_events          | OFF                                     |

+---------------------------------+----------------------------------------+

5 rows in set (0.00 sec)

上面顯示的檔案就是 bin log

3)  Binary log 的注意事項

- 重啟 mysqld 會截斷日誌 , 產生新日誌

- flush logs 會截斷日誌

- reset master 會刪除所有的 bin log (注意不要用)

4)  刪除部分bin log

-- 刪除指定檔案的 binlog ,會刪除這個日誌之前的所有 bin log

mysql>  purge binary logs to 'salve.000004';

-- 刪除指定時間之前的 binlog

mysql> purge binary logs before '2020-03-20 16:10:14';

5)  檢視bin log

-- 直接檢視指定 bin log

# mysqlbinlog salve.000004


-- 根據時間檢視指定 bin log

datetime:

# mysqlbinlog slave.000004 --start-datetime="2020-03-20 16:10:14 "

# mysqlbinlog slave.000004 --stop-datetime="2020-03-20 1 7 : 30 : 00"

# mysqlbinlog slave.000004 --start-datetime="2020-03-20 16:10:14 " --stop-datetime="2020-03-20 1 7 : 30 : 00"


-- 根據位置檢視 bin log

position( 建議,比時間更精確 )

# mysqlbinlog mysql.000004 --start-position=260

-- 這裡的 260 指的是 binlog 裡面的 # at 260

# mysqlbinlog mysql.000004 --stop-position=520

# mysqlbinlog mysql.000004 --start-position=260 --stop-position=520

4.  slow query log (慢查詢日誌)

慢查詢日誌用於記錄執行時間超過設定閾值的SQL ,預設是關閉的

1)  配置slow query log

需要在my.cnf 檔案,新增以下內容 :

slow_query_log=1

slow_query_log_file=/usr/local/mysql/mysql-slow/slow.log

long_query_time=3

-- 定義超過 3 秒的查詢為慢查詢

2)  建立上述資料夾,並重啟mysql

# mkdir /usr/local/mysql/mysql-slow

# chown -R mysql:mysql /usr/local/mysql/mysql-slow

# service mysqld restart

3)  檢視slow log

mysql> show variables like 'slow%';

+---------------------+--------------------------------------+

| Variable_name        | Value                                 |

+---------------------+--------------------------------------+

| slow_launch_time     | 2                                     |

| slow_query_log       | ON                                    |

| slow_query_log_file | /usr/local/mysql/mysql-slow/slow.log |

+---------------------+--------------------------------------+

3 rows in set (0.00 sec)

 

 

---- end ----

 

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2747693/,如需轉載,請註明出處,否則將追究法律責任。

相關文章