mysql事物日志工具_MySQL——常用工具和日志
一、MySql中常用工具
1.1、mysql
該mysql不是指mysql服務,而是指mysql的客戶端工具。
語法 :
mysql [options] [database]
連接選項
參數 :
-u, --user=name 指定用戶名
-p, --password[=name] 指定密碼
-h, --host=name 指定服務器IP或域名
-P, --port=# 指定連接端口
示例 :
mysql -h 127.0.0.1 -P 3306 -u root -p
mysql -h127.0.0.1 -P3306 -uroot -p2143
執行選項
-e, --execute=name 執行SQL語句并退出
此選項可以在Mysql客戶端執行SQL語句,而不用連接到MySQL數據庫再執行,對于一些批處理腳本,這種方式尤其方便。
示例:
mysql -uroot -p2143 db01 -e "select * from tb_book";
1.2、mysqladmin
mysqladmin 是一個執行管理操作的客戶端程序??梢杂盟鼇頇z查服務器的配置和當前狀態、創建并刪除數據庫等。
可以通過 : mysqladmin --help 指令查看幫助文檔
示例 :
mysqladmin -uroot -p2143 create 'test01';
mysqladmin -uroot -p2143 drop 'test01';
mysqladmin -uroot -p2143 version;
1.3、mysqlbinlog
由于服務器生成的二進制日志文件以二進制格式保存,所以如果想要檢查這些文本的文本格式,就會使用到mysqlbinlog 日志管理工具。
語法:
mysqlbinlog [options] log-files1 log-files2 ...
選項:
-d, --database=name : 指定數據庫名稱,只列出指定的數據庫相關操作。
-o, --offset=# : 忽略掉日志中的前n行命令。
-r,--result-file=name : 將輸出的文本格式日志輸出到指定文件。
-s, --short-form : 顯示簡單格式, 省略掉一些信息。
--start-datatime=date1 --stop-datetime=date2 : 指定日期間隔內的所有日志。
--start-position=pos1 --stop-position=pos2 : 指定位置間隔內的所有日志。
1.4、mysqldump
mysqldump 客戶端工具用來備份數據庫或在不同數據庫之間進行數據遷移。備份內容包含創建表,及插入表的SQL語句。
語法:
mysqldump [options] db_name [tables]
mysqldump [options] --database/-B db1 [db2 db3...]
mysqldump [options] --all-databases/-A
連接選項
參數:
-u, --user=name 指定用戶名
-p, --password[=name] 指定密碼
-h, --host=name 指定服務器IP或域名
-P, --port=# 指定連接端口
輸出內容選項
參數:
--add-drop-database 在每個數據庫創建語句前加上 Drop database 語句
--add-drop-table 在每個表創建語句前加上 Drop table 語句 , 默認開啟 ; 不開啟 (--skip-add-drop-table)
-n, --no-create-db 不包含數據庫的創建語句
-t, --no-create-info 不包含數據表的創建語句
-d --no-data 不包含數據
-T, --tab=name 自動生成兩個文件:一個.sql文件,創建表結構的語句;
一個.txt文件,數據文件,相當于select into outfile
示例 :
mysqldump -uroot -p2143 db01 tb_book --add-drop-database --add-drop-table > a
mysqldump -uroot -p2143 -T /tmp test city
1.5、mysqlimport/source
mysqlimport 是客戶端數據導入工具,用來導入mysqldump 加 -T 參數后導出的文本文件。
語法:
mysqlimport [options] db_name textfile1 [textfile2...]
示例:
mysqlimport -uroot -p2143 test /tmp/city.txt
如果需要導入sql文件,可以使用mysql中的source 指令 :
source /root/tb_book.sql
1.6、mysqlshow
mysqlshow 客戶端對象查找工具,用來很快地查找存在哪些數據庫、數據庫中的表、表中的列或者索引。
語法:
mysqlshow [options] [db_name [table_name [col_name]]]
參數:
--count 顯示數據庫及表的統計信息(數據庫,表 均可以不指定)
-i 顯示指定數據庫或者指定表的狀態信息
示例:
#查詢每個數據庫的表的數量及表中記錄的數量
mysqlshow -uroot -p2143 --count
#查詢test庫中每個表中的字段書,及行數
mysqlshow -uroot -p2143 test --count
#查詢test庫中book表的詳細情況
mysqlshow -uroot -p2143 test book --count
二、Mysql 日志
在任何一種數據庫中,都會有各種各樣的日志,記錄著數據庫工作的方方面面,以幫助數據庫管理員追蹤數據庫曾經發生過的各種事件。MySQL 也不例外,在 MySQL 中,有 4 種不同的日志,分別是錯誤日志、二進制日志(BINLOG 日志)、查詢日志和慢查詢日志,這些日志記錄著數據庫在不同方面的蹤跡。
2.1、錯誤日志
錯誤日志是 MySQL 中最重要的日志之一,它記錄了當 mysqld 啟動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。當數據庫出現任何故障導致無法正常使用時,可以首先查看此日志。
該日志是默認開啟的 , 默認存放目錄為 mysql 的數據目錄(var/lib/mysql), 默認的日志文件名為 hostname.err(hostname是主機名)。
查看日志位置指令:
show variables like 'log_error%';
查看日志內容:
tail -f /var/lib/mysql/xaxh-server.err
2.2、二進制日志
概述
二進制日志(BINLOG)記錄了所有的 DDL(數據定義語言)語句和 DML(數據操縱語言)語句,但是不包括數據查詢語句。此日志對于災難時的數據恢復起著極其重要的作用,MySQL的主從復制, 就是通過該binlog實現的。
二進制日志,默認情況下是沒有開啟的,需要到MySQL的配置文件中開啟,并配置MySQL日志的格式。
配置文件位置 : /etc/my.cnf
日志存放位置:配置時,給定了文件名但是沒有指定路徑,日志默認寫入Mysql的數據目錄。
#配置開啟binlog日志, 日志的文件前綴為 mysqlbin -----> 生成的文件名如 : mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin
#配置二進制日志的格式
binlog_format=STATEMENT
日志格式
STATEMENT
該日志格式在日志文件中記錄的都是SQL語句(statement),每一條對數據進行修改的SQL都會記錄在日志文件中,通過Mysql提供的mysqlbinlog工具,可以清晰的查看到每條語句的文本。主從復制的時候,從庫(slave)會將日志解析為原文本,并在從庫重新執行一次。
ROW
該日志格式在日志文件中記錄的是每一行的數據變更,而不是記錄SQL語句。比如,執行SQL語句 : update tb_book set status='1' , 如果是STATEMENT 日志格式,在日志中會記錄一行SQL文件; 如果是ROW,由于是對全表進行更新,也就是每一行記錄都會發生變更,ROW 格式的日志中會記錄每一行的數據變更。
MIXED
這是目前MySQL默認的日志格式,即混合了STATEMENT 和 ROW兩種格式。默認情況下采用STATEMENT,但是在一些特殊情況下采用ROW來進行記錄。MIXED 格式能盡量利用兩種模式的優點,而避開他們的缺點。
日志讀取
由于日志以二進制方式存儲,不能直接讀取,需要用mysqlbinlog工具來查看,語法如下:
mysqlbinlog log-file;
查看STATEMENT格式日志
執行插入語句 :
insert into tb_book values(null,'Lucene','2088-05-01','0');
查看日志文件 :

mysqlbin.index : 該文件是日志索引文件 , 記錄日志的文件名;
mysqlbing.000001 :日志文件
查看日志內容 :
mysqlbinlog mysqlbing.000001;

#####查看ROW格式日志
配置 :
配置開啟binlog日志, 日志的文件前綴為 mysqlbin -----> 生成的文件名如 : mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin
配置二進制日志的格式
binlog_format=ROW
插入數據 :
insert into tb_book values(null,'SpringCloud實戰','2088-05-05','0');
如果日志格式是 ROW , 直接查看數據 , 是查看不懂的 ; 可以在mysqlbinlog 后面加上參數 -vv
mysqlbinlog -vv mysqlbin.000002

####日志刪除
對于比較繁忙的系統,由于每天生成日志量大 ,這些日志如果長時間不清楚,將會占用大量的磁盤空間。下面我們將會講解幾種刪除日志的常見方法 :
#####方式一
通過 Reset Master 指令刪除全部 binlog 日志,刪除之后,日志編號,將從 xxxx.000001重新開始 。
查詢之前 ,先查詢下日志文件 :

執行刪除日志指令:
Reset Master
執行之后, 查看日志文件 :

#####方式二
執行指令 purge master logs to 'mysqlbin.******' ,該命令將刪除 ****** 編號之前的所有日志。
#####方式三
執行指令 purge master logs before 'yyyy-mm-dd hh24:mi:ss' ,該命令將刪除日志為 "yyyy-mm-dd hh24:mi:ss" 之前產生的所有日志 。
#####方式四
設置參數 --expire_logs_days=# ,此參數的含義是設置日志的過期天數, 過了指定的天數后日志將會被自動刪除,這樣將有利于減少DBA 管理日志的工作量。
配置如下 :
--expire_logs_days=7
###2.3、查詢日志
查詢日志中記錄了客戶端的所有操作語句,而二進制日志不包含查詢數據的SQL語句。
默認情況下, 查詢日志是未開啟的。如果需要開啟查詢日志,可以設置以下配置 :
該選項用來開啟查詢日志 , 可選值 : 0 或者 1 ; 0 代表關閉, 1 代表開啟
general_log=1
設置日志的文件名 , 如果沒有指定, 默認的文件名為 host_name.log
general_log_file=file_name
在 mysql 的配置文件 /etc/my.cnf 中配置如下內容 :
開啟查詢日志,默認關閉OFF
general_log=1
配置查詢日志的文件名
general_log_file=mysql_query.log
配置完畢之后,在數據庫執行以下操作:
select * from tb_book;
select * from tb_book where id = 1;
update tb_book set name = 'lucene入門指南' where id = 5;
select * from tb_book where id < 8;
執行完畢之后, 再次來查詢日志文件 :
2.4、慢查詢日志
慢查詢日志記錄了所有執行時間超過參數 long_query_time 設置值并且掃描記錄數不小于min_examined_row_limit 的所有的SQL語句的日志。long_query_time 默認為 10 秒,最小為 0, 精度可以到微秒。
文件位置和格式
慢查詢日志默認是關閉的 ??梢酝ㄟ^兩個參數來控制慢查詢日志 :
# 該參數用來控制慢查詢日志是否開啟, 可取值: 1 和 0 , 1 代表開啟, 0 代表關閉
slow_query_log=1
# 該參數用來指定慢查詢日志的文件名
slow_query_log_file=slow_query.log
# 該選項用來配置查詢的時間限制, 超過這個時間將認為值慢查詢, 將需要進行日志記錄, 默認10s
long_query_time=1
日志的讀取
和錯誤日志、查詢日志一樣,慢查詢日志記錄的格式也是純文本,可以被直接讀取。
1、查詢long_query_time 的值。
show variables like 'long_query_time';
2、執行查詢操作
select id, title,price,num ,status from tb_item where id = 1;
由于該語句執行時間很短,為0s , 所以不會記錄在慢查詢日志中。
select * from tb_item where title like '%阿爾卡特 (OT-927) 炭黑 聯通3G手機 雙卡雙待165454%' ;
該SQL語句 , 執行時長為 26.77s ,超過10s , 所以會記錄在慢查詢日志文件中。
3、查看慢查詢日志文件
直接通過cat 指令查詢該日志文件 :
如果慢查詢日志內容很多, 直接查看文件,比較麻煩, 這個時候可以借助于mysql自帶的 mysqldumpslow 工具, 來對慢查詢日志進行分類匯總。
總結
以上是生活随笔為你收集整理的mysql事物日志工具_MySQL——常用工具和日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql odbc安装提示找不到ian
- 下一篇: php mysql数据库 指南_用 PH