1、配置my.ini文件
在做網(wǎng)站、成都網(wǎng)站建設中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設置、關(guān)鍵詞群組等細微處著手,突出企業(yè)的產(chǎn)品/服務/品牌,幫助企業(yè)鎖定精準用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站建設十余年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。
查找到[mysqld]區(qū)段,增加日志的配置,如下示例:[mysqld]log=C:/temp/mysql.log
log_slow_queries=C:/temp/mysql_slow.log
long_query_time=1
log指示日志文件存放目錄;
log_slow_queries指示記錄執(zhí)行時間長的sql日志目錄;
long_query_time指示多長時間算是執(zhí)行時間長,單位s。
Linux下這些配置項應該已經(jīng)存在,只是被注釋掉了,可以去掉注釋,也可直接添加配置項
2?、重新啟動mysql服務。注意事項:A日志存放目錄必須提前存在,否則不能記錄日志。這里也局勢C:/temp目錄必須已經(jīng)存在
B?日志文件是linux格式的文本,建議用ultraEdit打開,轉(zhuǎn)換為dos格式查看(否則沒有換行,看不懂的)
C?服務在啟動狀態(tài)下不能刪除日志文件,否則就無法記錄sql語句了。
D?不能用ultraEdit直接清除文件內(nèi)容后保存,否則也記錄不下來了。需要重啟服務,如果ultraEdit保存了.bak,后記錄到此文件中。
E?可以用notepad清除文本后保存,可以繼續(xù)記錄日志。
方法/步驟
1、首先,登陸mysql后,執(zhí)行sql語句:
show
variables
like
'log_bin';
查看是否日志開啟,詳細結(jié)果如圖:
2、#錯誤日志
log-error
開啟方式:
在my.ini的[mysqld]選項下:
添加代碼:
log-error=E:\log-error.txt
記錄內(nèi)容:
主要是記錄啟動、運行或停止mysqld時出現(xiàn)的致命性問題,都是系統(tǒng)級的錯誤記錄如圖:
3、#查詢?nèi)罩?/p>
log
開啟方式:
在my.ini的[mysqld]選項下:
添加代碼:
log=E:/mysql_log.txt
記錄內(nèi)容:
主要是記錄數(shù)據(jù)庫建立的客戶端連接和執(zhí)行的語句如圖:
4、#二進制日志
log-bin
開啟方式:
在my.ini的[mysqld]選項下:
添加代碼:
log-bin=E:/mysql_log_bin
記錄內(nèi)容:
主要是記錄所有的更改數(shù)據(jù)的語句,可使用mysqlbinlog命令恢復數(shù)據(jù)。如圖:
#慢日志
log-slow-queries
開啟方式:
在my.ini的[mysqld]選項下:
添加代碼:
long_query_time
=1
(設定慢查詢的標準,單位是s/秒)
log-slow-queries=
E:/mysql_log_slow.txt
記錄內(nèi)容:
主要是記錄所有執(zhí)行時間超過long_query_time的查詢或沒有使用索引的查詢?nèi)鐖D:
以上就是專題欄小編帶來的mysql中文版教程,更多教程請看“”
MySQL日志在哪
MySQL日志一般保存在/var/log/目錄下,但還需要看具體的配置文件才能確定,具體方法如下:
1、首先登陸 mysql:mysql -u root -p
2、然后查看是否啟用了日志mysqlshow variables like 'log_%';
3、查看當前的日志mysql show master status;
4、你需要知道的mysql的日志類型:錯誤日志: -log-err
查詢?nèi)罩荆?-log
慢查詢?nèi)罩? -log-slow-queries
更新日志: -log-update
二進制日志: -log-bin
5、修改配置/etc/my.cnf(以下為日志文件保存位置)[mysqld]
log=/var/log/mysqld_common.log
log-error=/var/log/mysqld_err.log
log-bin=/var/log/mysqld_bin.bin
日志是MySQL的重要組成部分,其中對于開發(fā)而言不得不關(guān)注三種重要的日志,分別是二進制日志(bin log)、事務日志(redo log、undo log)。接下來詳細介紹這三種日志。
binlog叫做二進制日志,主要是用于記錄MySQL表的邏輯變化過程。在實際應用過程中,通常被用于主從復制和數(shù)據(jù)恢復。
事務執(zhí)行過程中,會先把日志寫到binlog cache,事務提交的時候,再把binlog cache寫到binlog文件中。
事務提交后的寫入只是寫入到文件系統(tǒng)的page cache,并沒有把數(shù)據(jù)持久化到磁盤。持久化磁盤由操作系統(tǒng)決定調(diào)用fsync。
MySQL提供了配置決定fsync的時機,當sync_binlog=0的時候,每次提交事務只寫入page cache,不執(zhí)行fsync。當sync_binlog=1的時候,表示每次提交事務都會執(zhí)行fsync。當sync_binlog = N的時候,每次提交事務都寫入page cache,累計多個事務才進行fsync。
顯然,當sync_binlog = 1的時候,binlog日志不會丟失。當sync_binlog = N的時候,如果發(fā)生異常重啟,會丟失N個事務的binlog日志。
STATEMENT
記錄數(shù)據(jù)操作的原始SQL,可能引發(fā)主庫備庫因索引選擇不一致,導致數(shù)據(jù)執(zhí)行結(jié)果不一致。
ROW
ROW基于行復制,只記錄哪條數(shù)據(jù)被修改.缺點:占空間。比如DELETE 語句,對于STATEMENT只占用1條SQL。而ROW格式則需要把所有記錄的數(shù)據(jù)記錄下來。
MIXED
對于可能引發(fā)主備不一致的命令使用ROW格式,否則使用STATEMTNT
對于每一次更新操作,MySQL都需要寫入磁盤,然后需要找到對應那條記錄并更新。IO成本較高和查找成本都很高。為了提高性能,MySQL會將更新操作寫入redo log,并更新內(nèi)存。INNODB引擎會在適當?shù)臅r候?qū)⒉僮饔涗浉碌酱疟P。
[圖片上傳失敗...(image-c6a1f2-1627716309698)]
undo log主要是記錄了數(shù)據(jù)的邏輯變化,比如對應一條insear語句,undo log會記錄一條delete語方便回退到更新前的值。
時刻A發(fā)生故障的話,由于binlog未寫入,redo log回滾數(shù)據(jù),兩個日志數(shù)據(jù)是一致的。
時刻B發(fā)生故障,則需要判斷binlog是否完整來決定如何恢復。
redo log和bin log的區(qū)別?
為什么redo log crash-safe,而bin log不可以?