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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Linux命令:MySQL系列之十一--MySQL日志管理

發(fā)布時(shí)間:2024/4/13 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux命令:MySQL系列之十一--MySQL日志管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


MySQL日志管理


SHOW GLOBAL VARIABLES LIKE '%log%';查看關(guān)于log的全局變量

一、日志分類

? ?1.錯(cuò)誤日志 ? 2.一般查詢?nèi)罩?? 3.慢查詢?nèi)罩?/p>

? ?4.二進(jìn)制日志 ?5.中繼日志 ? 6.事務(wù)日志 ? 7.滾動(dòng)日志

二、日志詳解

1.錯(cuò)誤日志

說(shuō)明:在對(duì)應(yīng)的數(shù)據(jù)目錄中,以主機(jī)名+.err命名的文件,錯(cuò)誤日志記錄的信息類型:

  • 記錄了服務(wù)器運(yùn)行中產(chǎn)生的錯(cuò)誤信息

  • 記錄了服務(wù)在啟動(dòng)和停止是所產(chǎn)生的信息

  • 在從服務(wù)器上如果啟動(dòng)了復(fù)制進(jìn)程的時(shí)候,復(fù)制進(jìn)程的信息也會(huì)被記錄

  • 記錄event事件錯(cuò)誤日志

配置mysql的主配置文件:

12log_error =?/mydata/data/mysql.test.com.err?#指定錯(cuò)誤日志的位置,默認(rèn)是在數(shù)據(jù)目錄下,這個(gè)位置mysql用戶必須有寫(xiě)權(quán)限log_warning = {0|1}?#默認(rèn)開(kāi)啟,服務(wù)器運(yùn)行中的警告日志也會(huì)記錄在錯(cuò)誤日志中

2.一般查詢?nèi)罩?/span>

說(shuō)明:對(duì)除了慢查日志中記錄的查詢信息都將記錄下來(lái),這將對(duì)服務(wù)器主機(jī)產(chǎn)生大量的壓力,所以對(duì)于繁忙的服務(wù)器應(yīng)該關(guān)閉這個(gè)日志

與查詢?nèi)罩鞠嚓P(guān)的變量,

1234log = {ON|OFF}?#是否啟用查詢?nèi)罩?#xff0c;該指令在mysq5.6中已廢棄general_log = {ON|OFF}?#啟動(dòng)或關(guān)閉查詢?nèi)罩?#xff0c;默認(rèn)是關(guān)閉的general_log_file =?/mydata/data/mysql.log?#指定查詢?nèi)罩镜奈恢?#xff0c;默認(rèn)在數(shù)據(jù)目錄下log_output = {TABLE|FILE|NONE}?#指定存放查詢?nèi)罩镜奈恢?#xff0c;可以放在文件中,也可以放在數(shù)據(jù)庫(kù)的表中,放在表中比放在文件中更容易查看。如果組合中出現(xiàn)了NONE,那么其它設(shè)定都將失效,同時(shí),無(wú)論是否啟用日志功能,也不會(huì)記錄任何相關(guān)的日志信息

3.慢查詢?nèi)罩?/span>

說(shuō)明:默認(rèn)為關(guān)閉狀態(tài),記錄下來(lái)查詢時(shí)間超過(guò)設(shè)定時(shí)長(zhǎng)的查詢,這些查詢?nèi)罩緦⒈宦槿罩居涗浵聛?lái)

配置mysql的主配置文件:

12345slow_query_log? = {ON | OFF}?#是否開(kāi)啟慢慢查詢?nèi)罩?#xff0c;默認(rèn)是關(guān)閉的?slow_query_log_file =?/mydata/data/mysql-slow.log?#慢查詢?nèi)罩镜拇娣盼恢?#xff0c;默認(rèn)在數(shù)據(jù)目錄下log_query_time = 10?#定義默認(rèn)的時(shí)長(zhǎng),默認(rèn)時(shí)長(zhǎng)為10秒log_query_not_using_indexes = {ON|OFF}?#設(shè)定是否將沒(méi)有使用索引的查詢操作記錄到慢查詢?nèi)罩?log_output = {TABLE|FILE|NONE}?#定義一般查詢?nèi)罩竞吐樵內(nèi)罩镜谋4娣绞?#xff0c;可以是TABLE、FILE、NONE,也可以是TABLE及FILE的組合(用逗號(hào)隔開(kāi)),默認(rèn)為FILE。如果組合中出現(xiàn)了NONE,那么其它設(shè)定都將失效,同時(shí),無(wú)論是否啟用日志功能,也不會(huì)記錄任何相關(guān)的日志信息

4.二進(jìn)制日志

說(shuō)明:默認(rèn)開(kāi)啟,精確的記錄了用戶對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作的命令和操作的數(shù)據(jù)對(duì)象,

任何引起或可能引起數(shù)據(jù)庫(kù)變化的操作,二進(jìn)制日志都會(huì)記錄下來(lái)。 ??
? ? 二進(jìn)制日志文件的作用:

  • 提供了增量備份的功能

  • 提供了數(shù)據(jù)基于時(shí)間點(diǎn)的恢復(fù),這個(gè)恢復(fù)的時(shí)間點(diǎn)可以由用戶控制

  • 為mysql的復(fù)制架構(gòu)提供基礎(chǔ),將這主服務(wù)器的二進(jìn)制日志復(fù)制到從服務(wù)器上并執(zhí)行同樣的操作,就可將數(shù)據(jù)進(jìn)行同步

? ? 二進(jìn)制日志格式:

  • 基于語(yǔ)句 statement

  • 基于行 row

  • 混合方式 mixed

? ? 二進(jìn)制日志事件:

  • position 基于位置

  • datetime 基于時(shí)間

? ? 二進(jìn)制日志的查看與刪除方式:

12345mysql>show master status; 查看當(dāng)前正在使用的二進(jìn)制日志?

mysql>show binlog events?in?'mysql-bin.000001'; 查看二進(jìn)制日志記錄的事件也可以跟[from position]從什么位置開(kāi)始mysql-bin.000001為二進(jìn)制文件名

Usage:SHOW BINLOG EVENTS IN 'mysql-bin.00001' FROM 107 #查看mysql-bin.00001日志文件的事件信息,且從事件107位置開(kāi)始顯示

mysql>flush logs; 二進(jìn)制日志滾動(dòng)??mysql>show binary logs; 查看所有二進(jìn)制日志??

mysql>purge binary logs to?'mysql-bin.000003'; 刪除二進(jìn)制日志文件之前的所有日志文件。

mysql>SHOW BINARY LOGS ; #查看所有的二進(jìn)制日志文件

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

| Log_name ? ? ? ? | File_size |

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

| mysql-bin.000001 | ? ? ?1165 |

| mysql-bin.000002 | ? ? ? 126 |

| mysql-bin.000003 | ? ? ? 126 |

| mysql-bin.000004 | ? ? ? 884 |

| mysql-bin.000005 | ? ? ? 126 |

| mysql-bin.000006 | ? ? ? 126 |

| mysql-bin.000007 | ? ? ? 126 |

| mysql-bin.000008 | ? ? ? 126 |

| mysql-bin.000009 | ? ? ? 206 |

| mysql-bin.000010 | ? ? ? 126 |

| mysql-bin.000011 | ? ? ? 126 |

| mysql-bin.000012 | ? ? ? 391 |

| mysql-bin.000013 | ? ? ?7984 |

| mysql-bin.000014 | ? ? ? 286 |

| mysql-bin.000015 | ? ? ?1325 |

| mysql-bin.000016 | ? ? ? 390 |

| mysql-bin.000017 | ? ? ? 371 |

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

17 rows in set (0.00 sec)

mysql> PURGE BINARY LOGS TO 'mysql-bin.000003'; #刪除二進(jìn)制日志文件之前的所有日志文件。再次查看,二進(jìn)制日志文件,000001和000002日志文件已經(jīng)被刪除。

Query OK, 0 rows affected (0.01 sec)


mysql> SHOW BINARY LOGS ;

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

| Log_name ? ? ? ? | File_size |

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

| mysql-bin.000003 | ? ? ? 126 |

| mysql-bin.000004 | ? ? ? 884 |

| mysql-bin.000005 | ? ? ? 126 |

| mysql-bin.000006 | ? ? ? 126 |

| mysql-bin.000007 | ? ? ? 126 |

| mysql-bin.000008 | ? ? ? 126 |

| mysql-bin.000009 | ? ? ? 206 |

| mysql-bin.000010 | ? ? ? 126 |

| mysql-bin.000011 | ? ? ? 126 |

| mysql-bin.000012 | ? ? ? 391 |

| mysql-bin.000013 | ? ? ?7984 |

| mysql-bin.000014 | ? ? ? 286 |

| mysql-bin.000015 | ? ? ?1325 |

| mysql-bin.000016 | ? ? ? 390 |

| mysql-bin.000017 | ? ? ? 371 |

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

15 rows in set (0.00 sec)

? ? ?文件系統(tǒng)中查看二進(jìn)制日志的命令:mysqlbinlog

123456mysqlbinlog相關(guān)選項(xiàng),?--start-position?#開(kāi)始位置??--stop-position?#結(jié)束位置??--start-datetime?'yyyy-mm-dd hh:mm:ss';?#開(kāi)始時(shí)間??

--stop-datetime?'';?#結(jié)束時(shí)間

Usage:

[root@lamp ~]#mysqlbinlog mysql-bin.000001 #查看mysql-bin.000001日志事件的全部信息

[root@lamp ~]# mysqlbinlog --start-datetime '2017-04-18 09:01:13' mysql-bin.000001 #查看mysql-bin.000001日志事件從2017年04月18號(hào)9點(diǎn)01分之后的信息。

[root@lamp ~]# mysqlbinlog --start-position 193 mysql-bin.000001 #查看mysql-bin.000001日志時(shí)間從193位置開(kāi)始之后的信息。


? ? ? ?配置mysql的主配置文件: ?

123456789sql_log_bin = {ON|OFF}?#用于控制二進(jìn)制日志信息是否記錄進(jìn)日志文件。默認(rèn)為ON,表示啟用記錄功能。用戶可以在會(huì)話級(jí)別修改此變量的值,但其必須具有SUPER權(quán)限binlog_cache_size = 32768?#默認(rèn)值32768 Binlog Cache 用于在打開(kāi)了二進(jìn)制日志(binlog)記錄功能的環(huán)境,是 MySQL 用來(lái)提高binlog的記錄效率而設(shè)計(jì)的一個(gè)用于短時(shí)間內(nèi)臨時(shí)緩存binlog數(shù)據(jù)的內(nèi)存區(qū)域。一般來(lái)說(shuō),如果我們的數(shù)據(jù)庫(kù)中沒(méi)有什么大事務(wù),寫(xiě)入也不是特別頻繁,2MB~4MB是一個(gè)合適的選擇。但是如果我們的數(shù)據(jù)庫(kù)大事務(wù)較多,寫(xiě)入量比較大,可與適當(dāng)調(diào)高binlog_cache_size。同時(shí),我們可以通過(guò)binlog_cache_use 以及 binlog_cache_disk_use來(lái)分析設(shè)置的binlog_cache_size是否足夠,是否有大量的binlog_cache由于內(nèi)存大小不夠而使用臨時(shí)文件(binlog_cache_disk_use)來(lái)緩存了?binlog_stmt_cache_size = 32768?#當(dāng)非事務(wù)語(yǔ)句使用二進(jìn)制日志緩存,但是超出binlog_stmt_cache_size時(shí),使用一個(gè)臨時(shí)文件來(lái)存放這些語(yǔ)句??log_bin = mysql-bin?#指定binlog的位置,默認(rèn)在數(shù)據(jù)目錄下binlog-format?= {ROW|STATEMENT|MIXED}?#指定二進(jìn)制日志的類型,默認(rèn)為MIXED。如果設(shè)定了二進(jìn)制日志的格式,卻沒(méi)有啟用二進(jìn)制日志,則MySQL啟動(dòng)時(shí)會(huì)產(chǎn)生警告日志信息并記錄于錯(cuò)誤日志中。?sync_binlog = 10?#設(shè)定多久同步一次二進(jìn)制日志至磁盤(pán)文件中,0表示不同步,任何正數(shù)值都表示對(duì)二進(jìn)制每多少次寫(xiě)操作之后同步一次。當(dāng)autocommit的值為1時(shí),每條語(yǔ)句的執(zhí)行都會(huì)引起二進(jìn)制日志同步,否則,每個(gè)事務(wù)的提交會(huì)引起二進(jìn)制日志同步??max_binlog_cache_size = {4096 .. 18446744073709547520}?#二進(jìn)定日志緩存空間大小,5.5.9及以后的版本僅應(yīng)用于事務(wù)緩存,其上限由max_binlog_stmt_cache_size決定。??max_binlog_stmt_cache_size = {4096 .. 18446744073709547520}?#二進(jìn)定日志緩存空間大小,5.5.9及以后的版本僅應(yīng)用于事務(wù)緩存??expire_log_days = {0..99}?#設(shè)定二進(jìn)制日志的過(guò)期天數(shù),超出此天數(shù)的二進(jìn)制日志文件將被自動(dòng)刪除。默認(rèn)為0,表示不啟用過(guò)期自動(dòng)刪除功能。如果啟用此功能,自動(dòng)刪除工作通常發(fā)生在MySQL啟動(dòng)時(shí)或FLUSH日志時(shí)

注:一般建議將binlog日志與數(shù)據(jù)文件分開(kāi)存放,不但可以提高mysql性能,還可以增加安全性!

5.中繼日志

說(shuō)明:主要是在mysql服務(wù)器的中從架構(gòu)中的從服務(wù)器上用到的,當(dāng)從服務(wù)器想要和主服務(wù)器進(jìn)行數(shù)據(jù)的同步時(shí),從服務(wù)器將主服務(wù)器的二進(jìn)制日志文件拷貝到己的主機(jī)上放在中繼日志中,然后調(diào)用SQL線程按照拷中繼日志文件中的二進(jìn)制日志文件執(zhí)行以便就可達(dá)到數(shù)據(jù)的同步

開(kāi)啟的方法:(只在從服務(wù)器上開(kāi)啟) ??
配置mysql的主配置文件: ? ?

123456relay-log = file_name #指定中繼日志的位置和名字,默認(rèn)為host_name-relay-bin。也可以使用絕對(duì)路徑,以指定非數(shù)據(jù)目錄來(lái)存儲(chǔ)中繼日志??relay-log-index = file_name #指定中繼日志的名字的索引文件的位置和名字,默認(rèn)為數(shù)據(jù)目錄中的host_name-relay-bin.indexrelay-log-info-file = file_name #設(shè)定中繼服務(wù)用于記錄中繼信息的文件,默認(rèn)為數(shù)據(jù)目錄中的relay-log.inforelay_log_purge = {ON|OFF} #設(shè)定對(duì)不再需要的中繼日志是否自動(dòng)進(jìn)行清理。默認(rèn)值為ONrelay_log_space_limit =?0?#設(shè)定用于存儲(chǔ)所有中繼日志文件的可用空間大小。默認(rèn)為0,表示不限定。最大值取決于系統(tǒng)平臺(tái)位數(shù)max_relay_log_size = {4096..1073741824} #設(shè)定從服務(wù)器上中繼日志的體積上限,到達(dá)此限度時(shí)其會(huì)自動(dòng)進(jìn)行中繼日志滾動(dòng)。此參數(shù)值為0時(shí),mysqld將使用max_binlog_size參數(shù)同時(shí)為二進(jìn)制日志和中繼日志設(shè)定日志文件體積上限

6.事務(wù)日志

說(shuō)明:詳細(xì)的記錄了在什么時(shí)間發(fā)生了什么時(shí)候,在哪個(gè)時(shí)間對(duì)哪些數(shù)據(jù)進(jìn)行了改變,能后實(shí)現(xiàn)事件的重放,一般只記錄對(duì)數(shù)據(jù)進(jìn)行改變的操作,對(duì)于讀操作一般不進(jìn)行記錄。事務(wù)性存儲(chǔ)引擎用于保證原子性、一致性、隔離性和持久性

事物日志為數(shù)據(jù)庫(kù)服務(wù)器實(shí)現(xiàn)以下功能: ??
(1).將隨機(jī)IO轉(zhuǎn)換為順序IO,大大的提高了數(shù)據(jù)庫(kù)的性能,存儲(chǔ)的數(shù)據(jù)可能存在在磁盤(pán)的不同位置,降低了數(shù)據(jù)的讀取和操作性能。轉(zhuǎn)換為順序IO的原理為,先將數(shù)據(jù)存放在日志文件中,然后由RDBSM的后臺(tái)將日志中的數(shù)據(jù)存放到磁盤(pán)上,這樣就保證了存儲(chǔ)的數(shù)據(jù)是連續(xù)的。 ? ?
(2).為事件重放提供基礎(chǔ),事務(wù)日志詳細(xì)的記錄了時(shí)間發(fā)生的時(shí)間以及操作的數(shù)據(jù)對(duì)象,事務(wù)進(jìn)程可以根據(jù)這些信息進(jìn)行時(shí)間重放。 ? ?
默認(rèn)的事務(wù)日志文件有兩個(gè),位于數(shù)據(jù)目錄下以ibdata+number結(jié)尾的數(shù)字,我們可以對(duì)事務(wù)日志的位置、文件大小、增長(zhǎng)方式進(jìn)行定義,定義的方法如下: ? ?
這里以使用支持事務(wù)的Innodb存儲(chǔ)引擎為例,

配置mysql的主配置文件:

1234567

innodb_flush_log_at_commit ? ? #默認(rèn)值為1,共有三個(gè)級(jí)別;0:每秒同步,并執(zhí)行磁盤(pán)flush操作;1:每事務(wù)同步,并執(zhí)行磁盤(pán)flush操作;2:每事務(wù)同步,但不執(zhí)行磁盤(pán)flush操作。

innodb_data_home_dir =?/mydata/data??#InnoDB所有共享表空間數(shù)據(jù)文件的目錄路徑,默認(rèn)在數(shù)據(jù)目錄下

innodb_data_file_path = ibdata1:1024M??#指定InnoDB的各個(gè)數(shù)據(jù)文件及其大小,文件多于一個(gè)時(shí)彼此間用分號(hào)隔開(kāi)。

innodb_mirrored_log_groups ?#事務(wù)日志是否啟用鏡像設(shè)定?

innodb_data_file_path = ibdata2:50M:autoextend??#定義數(shù)據(jù)大小的增長(zhǎng)方式innodb_log_group_home_dir =?/mydata/data?#設(shè)定InnoDB重要日志文件的存儲(chǔ)目錄。在缺省使用InnoDB日志相關(guān)的所有變量時(shí),其默認(rèn)會(huì)在數(shù)據(jù)目錄中創(chuàng)建兩個(gè)大小為5MB的名為ib_logfile0和ib_logfile1的日志文件innodb_log_files_in_group = {2 .. 100}?#設(shè)定日志組中日志文件的個(gè)數(shù)。InnoDB以循環(huán)的方式使用這些日志文件。默認(rèn)值為2innodb_log_file_size = {108576 .. 4294967295}?#設(shè)定日志組中每個(gè)日志文件的大小,單位是字節(jié),默認(rèn)值是5MB。較為明智的取值范圍是從1MB到緩存池體積的1/n,其中n表示日志組中日志文件的個(gè)數(shù)。日志文件越大,在緩存池中需要執(zhí)行的檢查點(diǎn)刷寫(xiě)操作就越少,這意味著所需的I/O操作也就越少,然而這也會(huì)導(dǎo)致較慢的故障恢復(fù)速度innodb_log_buffer_size = {262144 .. 4294967295}?#設(shè)定InnoDB用于輔助完成日志文件寫(xiě)操作的日志緩沖區(qū)大小,單位是字節(jié),默認(rèn)為8MB。較大的事務(wù)可以借助于更大的日志緩沖區(qū)來(lái)避免在事務(wù)完成之前將日志緩沖區(qū)的數(shù)據(jù)寫(xiě)入日志文件,以減少I/O操作進(jìn)而提升系統(tǒng)性能。因此,在有著較大事務(wù)的應(yīng)用場(chǎng)景中,建議為此變量設(shè)定一個(gè)更大的值

7.滾動(dòng)日志

說(shuō)明:只要是針對(duì)二進(jìn)制日志進(jìn)行滾動(dòng)的,對(duì)某個(gè)類型的日志文件滾動(dòng)一次就生成一個(gè)新的相對(duì)應(yīng)的日志文件,通過(guò)這種方法保證日志文件的特定大小,從而保證服務(wù)器在對(duì)日志文件查詢時(shí)有較高的響應(yīng)能力。

滾動(dòng)二進(jìn)制日志的命令:

1mysql> FLUSH LOGS; #實(shí)現(xiàn)二進(jìn)制日志滾動(dòng)


轉(zhuǎn)載于:https://blog.51cto.com/woyaoxuelinux/1925281

總結(jié)

以上是生活随笔為你收集整理的Linux命令:MySQL系列之十一--MySQL日志管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。