目錄
1、MySql中常用工具
1.1、 mysql
該mysql不是指mysql服務,而是指mysql的客戶端工具。
鏈接遠程的MySQL
mysql -h127.0.0.1 -P3306 -uroot -proot
命令行中執行SQL語句
mysql -uroot -proot demo 03 -e "select * from tb_book";
1.2、mysqladmin
一個執行管理操作的客戶端程序。可以用它來檢查服務器的配置和當前狀態、創建並刪除數據庫等。
可以通過:mysqladmin --help指令查看幫助文檔
1.3、mysqlbinlog
由於服務器生成的二進制日誌文件以二進制格式保存,所以如果想要檢查這些文本的文本格式,就會使用到mysqlbinlog日誌管理工具。
1.4、mysqldump
mysqldump 客戶端工具用來備份數據庫或在不同數據庫之間進行數據遷移。備份內容包含創建表,及插入表的SQL語句。
1.4.1、連接選項
1.4.2、輸出內容選項
示例:
mysqldump -uroot -proot test emp > C:\Users\phubing\Desktop\tb_book.sql
1.5/mysqlimport/source
mysqlimport 是客戶端數據導入工具,用來導入 mysqldump 加 -T 參數後導出的文本文件。
mysqlimport [options] db_name textfilel [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顯示指定數據庫或者指定表的狀態信息
2、Mysql日誌
在任何一種數據庫中,都會有各種各樣的日誌,記錄着數據庫工作的方方面面,以幫助數據庫管理員追蹤數據庫曾經發生過的各種事件。MySQL也不例外,在MySQL中,有4種不同的日誌,分別是錯誤日誌、二進制日誌(BINLOG日誌)、查詢日誌和慢查詢日誌,這些日誌記錄着數據庫在不同方面的蹤跡。
2.1、錯誤日誌
錯誤日誌是MySQL中最重要的日誌之一,它記錄了當mysqld啓動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。當數據庫出現任何故障導致無法正常使用時,可以首先查看此日誌。
該日誌是默認開啓的,默認存放目錄爲mysql的數據目錄(var/lib/mysql),默認的日誌文件名爲hostname.err(hostname是主機名)。
show variables like 'log_error%';
查看日誌內容
tail -f /var/1ib/mysql/xaxh-server.err
2.2、二進制日誌
2.2.1、概述
二進制日誌(BINLOG)記錄了所有的DDL(數據定義語言)語句和DML(數據操縱語言)語句,但是不包括數據查詢語句。此日誌對於災難時的數據恢復起着極其重要的作用,MySQL的主從複製,就是通過該binlog實現的。
二進制日誌,默認情況下是沒有開啓的,需要到MySQL的配置文件中開啓,並配置MySQL日誌的格式。
配置文件位置:/usr/my.cnf日誌存放位置:配置時,給定了文件名但是沒有指定路徑,日誌默認寫入Mysql的數據目錄。
vim /etc/my.cnf
log_bin=mysql_bin
binlog-format=Row
server-id=1
2.2.2、日誌格式
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格式能儘量利用兩種模式的優點,而避開他們的缺點。
2.2.3、日誌讀取
由於日誌以二進制方式存儲,不能直接讀取,需要用mysqlbinlog工具來查看,語法如下:
mysqlbinlog log-file;
查看STATEMENT格式日誌
執行插入語句:
insert into tb_book values(null, 'Lucene', '2088-05-01', '0");
mysqlbinlog mysqlbing.000001;
mysqlbin.index:該文件是日誌索引文件,記錄日誌的文件名;
mysqlbing.000001:日誌文件
查看ROW格式日誌
insert into tb_book values(nu1l,'Springcloud實戰’,‘2088-05-05’,‘0’);
如果日誌格式是ROW,直接查看數據,是查看不懂的;可以在mysqlbinlog 後面加上參數 -vv
mysqlbinlog -vv mysqlbin.000002
2.2.4、日誌刪除
對於比較繁忙的系統,由於每天生成日誌量大,這些日誌如果長時間不清楚,將會佔用大量的磁盤空間。
刪除日誌的常見方法:
方式一
通過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管理日誌的工作量。
配置如下:
2.3、查詢日誌
查詢日誌中記錄了客戶端的所有操作語句,而二進制日誌不包含查詢數據的SQL語句。
默認情況下,查詢日誌是未開啓的。如果需要開啓查詢日誌,可以設置:
在mysql的配置文件/etc/my.cnf中配置如下內容:
配置完畢之後,在數據庫執行以下操作:
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,精度可以到微秒。
2.4.1、文件位置和格式
慢查詢日誌默認是關閉的。可以在 /etc/my.cnf 中通過兩個參數來控制慢查詢日誌:
2.4.2、日誌的讀取
和錯誤日誌、查詢日誌一樣,慢查詢日誌記錄的格式也是純文本,可以被直接讀取。
1)查詢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%’;
3)查看慢查詢日誌文件
直接通過cat指令查詢該日誌文件:
如果慢查詢日誌內容很多,直接查看文件,比較麻煩,這個時候可以藉助於mysql自帶的 mysqldumpslow 工具,來對慢查詢日誌進行分類彙總。