日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql alert table 日志_MySQL日志

發布時間:2023/12/19 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql alert table 日志_MySQL日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

錯誤日志

默認在DATADIR目錄下 host_name.err

可以通過log-error=[file_name]指定

log-error=/mysql-5.6.22/log/alert.log

二進制日志

通過log-bin=[file_name]指定目錄和文件

mysql> show variables like '%log_bin%';

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

| Variable_name?????????????????? | Value???????????????????????????? |

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

| log_bin???????????????????????? | ON??????????????????????????????? |

| log_bin_basename??????????????? | /mysql-5.6.22/log/node1-bin?????? |

| log_bin_index?????????????????? | /mysql-5.6.22/log/node1-bin.index |

| log_bin_trust_function_creators | OFF?????????????????????????????? |

| log_bin_use_v1_row_events?????? | OFF?????????????????????????????? |

| sql_log_bin???????????????????? | ON??????????????????????????????? |

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

6 rows in set (0.00 sec)

log-bin=/mysql-5.6.22/log/node1-bin.log

MySQL日志格式分為3種,statement,row,mixed 可以通過--binlog--format指定

1.Statement:每一條會修改數據的sql都會記錄在binlog中。

優點:不需要記錄每一行的變化,減少了binlog日志量,節約了IO,提高性能。(相比row能節約多少性能與日志量,這個取決于應用的SQL情況,正常同一條記錄修改或者插入row格式所產生的日志量還小于Statement產生的日志量,但是考慮到如果帶條件的update操作,以及整表刪除,alter表等操作,ROW格式會產生大量日志,因此在考慮是否使用ROW格式日志時應該跟據應用的實際情況,其所產生的日志量會增加多少,以及帶來的IO性能問題。)

缺點:由于記錄的只是執行語句,為了這些語句能在slave上正確運行,因此還必須記錄每條語句在執行的時候的一些相關信息,以保證所有語句能在slave得到和在master端執行時候相同 的結果。另外mysql 的復制,像一些特定函數功能,slave可與master上要保持一致會有很多相關問題(如sleep()函數, last_insert_id(),以及user-defined functions(udf)會出現問題).

使用以下函數的語句也無法被復制:

* LOAD_FILE()

* UUID()

* USER()

* FOUND_ROWS()

* SYSDATE() (除非啟動時啟用了 --sysdate-is-now 選項)

同時在INSERT ...SELECT 會產生比 RBR 更多的行級鎖

2.Row:不記錄sql語句上下文相關信息,僅保存哪條記錄被修改。

優點:?binlog中可以不記錄執行的sql語句的上下文相關的信息,僅需要記錄那一條記錄被修改成什么了。所以rowlevel的日志內容會非常清楚的記錄下每一行數據修改的細節。而且不會出現某些特定情況下的存儲過程,或function,以及trigger的調用和觸發無法被正確復制的問題

缺點:所有的執行的語句當記錄到日志中的時候,都將以每行記錄的修改來記錄,這樣可能會產生大量的日志內容,比如一條update語句,修改多條記錄,則binlog中每一條修改都會有記錄,這樣造成binlog日志量會很大,特別是當執行alter table之類的語句的時候,由于表結構修改,每條記錄都發生改變,那么該表每一條記錄都會記錄到日志中。

3.Mixedlevel:?是以上兩種level的混合使用,一般的語句修改使用statment格式保存binlog,如一些函數,statement無法完成主從復制的操作,則采用row格式保存binlog,MySQL會根據執行的每一條具體的sql語句來區分對待記錄的日志形式,也就是在Statement和Row之間選擇一種.新版本的MySQL中隊row level模式也被做了優化,并不是所有的修改都會以row level來記錄,像遇到表結構變更的時候就會以statement模式來記錄。至于update或者delete等修改數據的語句,還是會記錄所有行的變更。

日志的刪除

方法1:

reset master 命令,該命令將刪除所以的BINLOG日志,新日志編號從000001開始

[root@BJ-TNVM-40 log]# ls -ltr

total 56

-rw-rw---- 1 mysql mysql?? 143 Jan? 4 15:27 node1-bin.000001

-rw-rw---- 1 mysql mysql?? 143 Jan? 4 15:32 node1-bin.000002

-rw-rw---- 1 mysql mysql?? 143 Jan? 4 16:06 node1-bin.000003

-rw-rw---- 1 mysql mysql?? 143 Jan? 4 16:08 node1-bin.000004

-rw-rw---- 1 mysql mysql?? 175 Jan? 4 16:12 node1-bin.index

-rw-r----- 1 mysql root? 25432 Jan? 4 16:12 alert.log

-rw-rw---- 1 mysql mysql?? 753 Jan? 4 16:13 node1-bin.000005

mysql> reset master;

Query OK, 0 rows affected (0.06 sec)

mysql> exit

Bye

[root@BJ-TNVM-40 log]# ls -ltr

total 40

-rw-r----- 1 mysql root? 25432 Jan? 4 16:12 alert.log

-rw-rw---- 1 mysql mysql?? 120 Jan? 4 16:39 node1-bin.000001

-rw-rw---- 1 mysql mysql??? 35 Jan? 4 16:39 node1-bin.index

方法2:

使用purge

Examples:

PURGE BINARY LOGS TO 'mysql-bin.010';

PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';

方法3:

設置參數--expire_logs_days=# 設置日志過期的參數,過了指定天數之后日志被自動刪除

日志其它選項

--binlog-do-db=db_name 如果當前數據庫是use選定的數據庫是db_name則將更新記錄到二進制日志中。

--binlog-ignore-db=db_name 如果當前數據庫是use選定的數據庫是db_name則不將更新保存到二進制日志中。

慢查詢日志

慢查詢日志記錄了所有執行時間超過參數long_query_time(單位:秒)設置并且掃描記錄小于min_examined_row_limit下所有的SQL語句日志。

默認情況下有兩類語句不會記錄到慢查詢日志中:管理語句和不實用索引進行查詢的語句

可以通過參數--log-slow-admin-statements和log_queries_not_using_indexes進行控制

--slow_query_log=[={0|1}] 指定慢查詢狀態,如果不指定或者指定值為1都會打開慢查詢

slow_query_log_file=[file_name]指定慢查詢日志

日志的讀取

mysql> show variables like 'long%';

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

| Variable_name?? | Value???? |

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

| long_query_time | 10.000000 |

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

1 row in set (0.00 sec)

mysql> set long_query_time = 2;

Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from emp;

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

| count(*) |

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

|? 5242892 |

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

1 row in set (2.47 sec)

使用mysqldumpslow查看日志

[root@BJ-TNVM-40 mysql-5.6.22]# mysqldumpslow slow_query.log

Reading mysql slow query log from slow_query.log

Count: 2? Time=19.98s (39s)? Lock=0.00s (0s)? Rows=0.0 (0), root[root]@localhost

insert into emp select * from emp

Count: 1? Time=2.47s (2s)? Lock=0.00s (0s)? Rows=1.0 (1), root[root]@localhost

select count(*) from emp

總結

以上是生活随笔為你收集整理的mysql alert table 日志_MySQL日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。