A. mysql資料庫事件調用有錯誤日誌記錄嗎
一.錯誤日誌
錯誤日誌在Mysql資料庫中很重要,它記錄著mysqld啟動和停止,以及伺服器在運行過程版中發生權的任何錯誤的相關信息。
1.配置信息
--log-error=[file-name]用來指定錯誤日誌存放的位置。
如果沒有指定[file-name],默認hostname.err做為文件名,默認存放在DATADIR目錄中。
也可以將log-error配置到my.cnf文件中,這樣就省去了每次在啟動mysqld時都手工指定--log-error.例如:
[mysql@test2]$ vi /etc/my.cnf
# The MySQL server
[mysqld]
....
B. mysql二進制日誌過濾器怎麼用
使用 binlog-do-db=db_name。使用這個選項後,主伺服器會判斷當前的資料庫(即USE選定的資料庫)是否是_name,如果是,則會將更新記錄到二進制日誌中。在使用之後,其它所有沒有明顯指定的資料庫 都會被忽略。如果使用該選項,你應確保只對當前的資料庫進行更新。
在我伺服器上有兩個資料庫,一個db_factory,另一個是db_user。在沒有使用這個選項之前,對兩個資料庫的更新操作都是立即會復制到從庫上的,但設置
www.2cto.com
[sql]
binlog-do-db=db_factory
之後,對db_user的改動,都不會被從庫所復制。所以如果不是特別有需求,最好不要設置這個選項。當然如果是一個資料庫經常更新,其它的都是一樣的本地資料庫,可以不用於二進制日誌的後續操作的情況下,作為一種優化手段,也是可以的。
一個需要特別注意的地方是,如果設置binlog-do-db=db_factory。但後續使用如下語句:
[sql]
use db_user
insert into db_factory.employ ...........
此時,更新是不會被二進制日誌所接收的。
二,binlog-ignore-db
表示忽略某個特定的資料庫,而對其它資料庫進行復制的選項。其實上面的選項是表示「忽略其他資料庫,只記錄我進入日誌」,而這個選項可以表「忽略我,將其它資料庫記錄日誌」,對這外選項的使用,可以如下所示:
www.2cto.com
[sql]
[mysqld]
binlog-ignore-db=db_factory
binlog-ignore-db=db_user
當然上面的binlog-do-db也可以使用多次記錄多個表需要被寫入二進制日誌。
C. MySQL怎麼清除日誌
第一種方法:
mysql> show binary logs; 查看mysql bin-log日誌,除了這個以外的,其它都可以使用刪除。
mysql> purge binary logs to 'binlog.000058'; (刪內除mysql bin-log日誌,刪除binlog.000005之前的,不容包括binlog.000058)
第二種方法:
進入資料庫,查看一下當前使用的binlog日誌是哪個,除了這個以外的,其它都可以使用rm -rf 刪除!
D. 如何清除mysql的mysql-bin日誌
用命源令查看: show binary logs;
然後去從伺服器上查看哪個二進制正在使用,
我們看到mysql-tb-bin.000005這個日誌文件正在使用。
回到主伺服器開始清理日誌,但是不能清理mysql-tb-bin.000005這個日誌文件,用命令清理:
purge binary logs to 'mysql-tb-bin.000005';
這個命令就是清理除mysql-tb-bin.000005以外的其他二進制日誌;執行成功後,再查看二進制日誌列表:show binary logs;
清理成功,但是這樣手動清理危險很大,而且還比較復雜,有沒有自動清理的方法呢?答案是有的,在my.ini裡面加上這個配置:expire_logs_days=5 這個配置的意思就是,日誌的過期天數,超過5天的日誌,mysql會自動清理5天以前的日誌
E. 如何查看mysql資料庫操作記錄日誌
這是一個慢查詢日誌的展示工具,能夠幫助 DBA 或者開發人員分析資料庫的性能問題,版給出全面的數據擺脫直接查看權 slow-log。QAN(Query Analytics)
PMM 目前有 2 個版本,但是對於 QAN 來說其大致由三部分組成:
QAN-Agent(client):負責採集 slow-log 的數據並上報到服務端
QAN-API(server):負責存儲採集的數據,並對外提供查詢介面
QAN-APP:專門用來展示慢查詢數據的 grafana 第三方插件
1. 數據流轉
slow-log --> QAN-Agent --> QAN-API <--> QAN-APP(grafana)
2. pmm1 架構圖
F. 如何刪除MYSQL日誌文件及關閉日誌功能
找到MySql的配置文件,然後注釋以下兩行即可(即在行首添加#符號就好了)。然後重啟MySql服務
log-bin=mysql-bin
binlog_format=mixed
1)手動刪除日誌
手動刪除日誌的基本語法如下:
PURGE {MASTER | BINARY} LOGS TO'log_name'
PURGE {MASTER | BINARY} LOGSBEFORE 'date'
①、查看當前日誌:
show binary logs;
②、查看第一個二進制日誌
show binlog events;
③、刪除指定日誌之前的日誌
PURGE MASTER LOGS TO'mysql-bin.010';
④、刪除指定日期之前的日誌
PURGE MASTER LOGS BEFORE'2018-7-12 13:00:00';
⑤、刪除N天前的日誌
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL N DAY);如下面的語句可以清除 7 天前的binlog,
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY);
注意:BEFORE變數的date自變數可以為'YYYY-MM-DDhh:mm:ss'格式。MASTER和BINARY是同義詞。
2)自動刪除日誌
①、第一種方式:設置日誌保存時間
修改MySql的配置文件,設置以下屬性:expire_logs_days=10。這個值根據實際情況來定。當然對於生產環境修改配置文件需要重啟,這個代價可能會很大,還可以通過這個命令來修改生效set global expire_logs_days = 10;
②、第二種方式:設置定時任務
0 3 * * * `mysql -uroot -e 'PURGE BINARY LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY);'`
上面的命令是每天凌晨3點刪除7天前的binlog:
G. MySQL 5.1版本下如何動態抓取查詢日誌
其實打開mysql的慢查詢日誌很簡單,只需要在mysql的配置文件里(windows系統是my.ini,linux系統是my.cnf)的[mysqld]下面加上版如下代碼:
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
第一條是記錄文件權名,第二條是耽誤時間多久是算慢
H. mysql刪除表中某些數據,但這個刪除動作不記錄到日誌中的方法
把數據備份到另一張表
然後TRUNCATE TABLE
再把備份的數據插入回來 where條件過濾掉想刪的數據
然後drop 備份表
I. 如何查看mysql運行,訪問記錄等日誌
錯誤日誌: -log-err
查詢日誌: -log
慢查詢日誌: -log-slow-queries
更新日誌: -log-update
二進制日誌: -log-bin
是否啟用了日誌
mysql>showvariableslike'log_%';
怎樣知道當前的日誌
mysql>showmasterstatus;
顯示二進制日誌數目
mysql>showmasterlogs;
看二進制日誌文件用mysqlbinlog
shell>mysqlbinlogmail-bin.000001
或者
shell>mysqlbinlogmail-bin.000001|tail
在配置文件中指定log的輸出位置.
Windows:Windows 的配置文件為 my.ini,一般在MySQL的安裝目錄下或者 c:Windows 下。
Linux:Linux 的配置文件為 my.cnf ,一般在 /etc 下。
windows下
#在[mysqld]中輸入
#log
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"
Linux下
#在[mysqld]中輸入
#log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries=/usr/local/mysql/log/slowquery.log
J. 如何安全的清除mysql的日誌
第一種方法:
mysql> show binary logs; 查看mysql bin-log日誌,除了這個以外的,其它都可以使用刪回除。
mysql> purge binary logs to 'binlog.000058'; (刪除mysql bin-log日誌,刪除binlog.000005之前的,不答包括binlog.000058)
第二種方法:
進入資料庫,查看一下當前使用的binlog日誌是哪個,除了這個以外的,其它都可以使用rm -rf 刪除!