本文目錄一覽:
如何查看mysql數據庫操作記錄日誌?
有時候我們會不小心對一個大表進行了 update,比如說寫錯了 where 條件……
此時,如果 kill 掉 update 線程,那回滾 undo log 需要不少時間。如果放置不管,也不知道 update 會持續多久。
那我們能知道 update 的進度么?
實驗
我們先創建一個測試數據庫:
快速創建一些數據:
連續執行同樣的 SQL 數次,就可以快速構造千萬級別的數據:
查看一下總的行數:
我們來釋放一個大的 update:
然後另起一個 session,觀察 performance_schema 中的信息:
可以看到,performance_schema 會列出當前 SQL 從引擎獲取的行數。
等 SQL 結束後,我們看一下 update 從引擎總共獲取了多少行:
可以看到該 update 從引擎總共獲取的行數是表大小的兩倍,那我們可以估算:update 的進度 = (rows_examined) / (2 * 錶行數)
?小貼士
information_schema.tables 中,提供了對錶行數的估算,比起使用 select count(1) 的成本低很多,幾乎可以忽略不計。
那麼是不是所有的 update,從引擎中獲取的行數都會是表大小的兩倍呢?這個還是要分情況討論的,上面的 SQL 更新了主鍵,如果只更新內容而不更新主鍵呢?我們來試驗一下:
等待 update 結束,查看 row_examined,發現其剛好是表大小:
那我們怎麼準確的這個倍數呢?
一種方法是靠經驗:update 語句的 where 中會掃描多少行,是否修改主鍵,是否修改唯一鍵,以這些條件來估算係數。
另一種方法就是在同樣結構的較小的表上試驗一下,獲取倍數。
這樣,我們就能準確估算一個大型 update 的進度了。
mysql 怎麼看log?
如何查看mysql的日誌文件時間:mysql有以下幾種日誌:
錯誤日誌: -log-err
查詢日誌: -log
慢查詢日誌: -log-slow-queries
更新日誌: -log-update
二進制日誌: -log-bin
在mysql的安裝目錄下,打開my.ini,在後面加上上面的參數,保存後重啟mysql服務就行了。
例如:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=
#Enter a name for the query log file. Otherwise a default name will be used.
#log=
#Enter a name for the error log file. Otherwise a default name will be used.
log-error=
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=
上面只開啟了錯誤日誌,要開其他的日誌就把前面的“#”去掉
查看命令:
①show variables like ‘log_%’;查看所有的log命令
②show variables like ‘log_bin’;查看具體的log命令
怎麼查看mysql日誌
mysql有好幾種日誌,通常日誌,查詢緩慢日誌,錯誤日誌,默認只有錯誤日誌是開啟的,通常日誌如果開啟會消耗大量系統資源,而且查看也是非常不容易。如果想看哪裡出錯的話,查詢錯誤日誌就可以。通常會在data文件夾下面,服務器名稱.err就是日誌
數據庫的安全涉及到各方面,數據的丟失或者篡改將會帶來無法估量的損失,所以數據庫的安全尤為重要,我們可以通過數據庫的日誌來分析數據庫的安全性,然會針對分析結果採取相應的措施。
如何查看mysql錯誤日誌文件
我們經常在運行MySQL時會出一些錯誤,也經常被這些錯誤搞得暈頭轉向。當然解決這些問題的首要任務是找到日誌信息。
MySQL的錯誤信息是在data目錄下的,且文件名為hostname.err(hostname指的是主機名),但由於每個人安裝的環境不一樣,或你忘記了data目錄的所在位置,你可以通過下面方法查找。
#hostname //獲得主機名
hostname
#find / -name hostname.err
…..
#cd …
#vi hostname.err
原創文章,作者:Q71HE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127647.html