mysql 日誌 部落格 Mysql 日誌

2021-10-19 15:59:40 字數 3738 閱讀 7593

日誌

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...