日誌
errlog錯誤日誌
作用記錄mysql從啟動以來,所有的狀態,警告,錯誤。
dba靠此定位資料庫問題。
配置預設是開啟,
vim /etc/my.cnf
log-error=/var/log/mysqld.log
binlog二進位制日誌
作用主要記錄資料庫變化的日誌。
資料恢復,主從複製中應用
#檢視再用的binlogfile
show master status;
#檢視binlog檔案中的事件
show binlog events in 'bin.0004'
#篩選日誌
mysql -e "show binlog events in 'bin.0004'" |grep xx
配置vim /etc/my.cnf
server_id=4 #主機編號:5.7後要加此引數
log_bin=/data/mysql/mysql-bin #mysql-bin為字首例如:mysql-bin001
sync_binlog=1 # binlog日誌刷盤策略
binlog_format=row #binlog記錄格式為row模式
binlog只記錄變更的sql,不記錄查詢語句。
1.ddl 原封不動的記錄sql
2.dcl 原封不動的記錄sql
3.dml 只記錄已提交的dml
dml三種記錄方式
1.statement(5.6預設) sbr(statement based replication)原封不動的記錄sql
2.row(5.7預設值) rbr(row based replication),記錄資料行變化,使用者看不懂,需要工具分析。
3.mixed(混合) mbr(mixed based replication):以上2種混合
查詢日誌
讀取日誌到a.sql,這種能夠看到ddl,dcl但是dml事務的是亂碼 。
mysqlbinlog binlog.000004 > /root/a.sql
需要這種方式才能看到dml的具體**
mysqlbinlog --base64-output=decode-row -vvv binlog.000004 > /root/b.sql
乙個事務,begin開始,commit結束,中間的語句是,insert into jinwei.t1 value(33)
### insert into `jinwei`.`t1`
### set
### @1=33 /* int meta=0 nullable=1 is_null=0 */
# at 811
#210204 13:12:25 server id 1 end_log_pos 888 crc32 0xf6dba010 query thread_id=13 exec_time=0 error_code=0
set timestamp=1612415545/*!*/;
begin
# at 888
# at 938
#210204 13:12:25 server id 1 end_log_pos 978 crc32 0xf54e2e4b write_rows: table id 96 flags: stmt_end_f
### insert into `jinwei`.`t1`
### set
### @1=33 /* int meta=0 nullable=1 is_null=0 */
# at 978
#210204 13:12:25 server id 1 end_log_pos 1009 crc32 0x1ac1d8f2 xid = 82
commit/*!*/;
set @@session.gtid_next= 'automatic' /* added by mysqlbinlog */ /*!*/;
delimiter ;
日誌擷取
確定要擷取的日誌,開始到結束位置。
mysqlbinlog --start-position=233 --stop-position=702 /data/mysql/binlog.000005 > /root/e.sql
執行恢復
source /root/e.sql
日誌刪除
1.不能用rm
2.flush logs,服務重啟也會新建乙個新日誌檔案。
3.日誌檔案預設1g
4.自動清除
生產保留2個全備週期+1
select @@expire_log_days;
5.手工刪除,
##刪除1到5,保留6以後
purge binary logs to 'binlog.00006'
##保留到這個點
purge binary logs before '202102-03 10:10:10'
##檔案全部清空,讓他從檔案編號從1開始,危險,主從必宕
reset master;
binloggtid模式管理
gtid(global transaction id)
乙個已提交事務的編號,並且是全域性唯一 編號。
gtid=servier_uuid:transaction_id
***xx:30
開啟gtid
my.cnf
gtid_mode=on
enforce_gtid_consistency=on
gtid擷取日誌
--include-gtids
--exclude-gtids
--skip-gtids
mysqlbinlog --include-gtids='***:1-6' --exclude-gtids='xx:4' --skip-gtids /data/mysql/binlog.0006
擷取恢復
mysqlbinlog -d tt1 --include-gtids='933ceeac-6519-11eb-80db-00155da88b26:10-17' --exclude-gtids='933ceeac-6519-11eb-80db-00155da88b26:14' --skip-gtids /data/mysql/binlog.000004 /data/mysql/binlog.000003 > /root/k.sql
//關閉此回話日誌,不在記錄恢復執行的操作,恢復完再開啟。
set @@sql_log_bin=0;
source /root/k.sql;
set @@sql_log_bin=1;
slowlog慢日誌
記錄mysql執行過程中較慢的語句,文字檔案記錄。
配置預設慢日誌沒有開啟。
查詢是否開啟
select @@slow_query_log;
查詢日誌位置。
select @@slow_query_log_file;
查詢慢的閾值。
select @@long_query_time;
不走索引的
select @@log_queries_not_using_indexes;
my.cnf
slow_query_log=1
slow_query_log_file=/data/mysql/slow.log
long_query_time=0.1
log_queries_not_using_indexes=1
讀取最耗時的語句
mysqldumpslow -s c -t 10 slow.log
mysql部落格日誌 MySQL日誌
日誌檔案對於任何應用程式都是非常重要的,許多操作都需要記錄到日誌,然後可以利用日誌檔案查錯糾錯等。mysql中當然也有日誌,mysql的日誌大概分為五種,即錯誤日誌 查詢日誌 慢查詢日誌 二進位制日誌和事務日誌。檢視日誌相關的全域性變數。查詢日誌相關全域性變數 show global variabl...
mysql教程日誌 如何檢視mysql的日誌
檢視mysql日誌的方法 檢視是否啟用了日誌mysql show variables like log bin 檢視當前的日誌mysql show master status 檢視看二進位制日誌檔案用mysqlbinlogshell mysqlbinlog mail bin.000001 要寫絕對問...
mysql 5 7日誌檢視
1.cmd連線mysql。2.show variables like log 結果如圖所示 其中,general log預設關閉,此處已開啟。3.找到mysql的my.ini檔案 目錄為 c programdata mysql mysql server 5.7 該資料夾常為隱藏 通過開啟服務,找到m...