1. 程式人生 > 其它 >Mysql-day04-工具日誌主從複製案例

Mysql-day04-工具日誌主從複製案例

技術標籤:資料庫mysql

文章目錄

1. MySql中常用工具

1.1 mysql

該mysql不是指mysql服務,而是指mysql的客戶端工具。
語法 :

mysql [options]
[database]

1.1.1 連線選項

引數 :
	-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

1.1.2 執行選項

-e, --execute=name 執行SQL語句並退出

此選項可以在Mysql客戶端執行SQL語句,而不用連線到MySQL資料庫再執行,對於一些批處理指令碼,這種方式尤其方便。

示例:
mysql -uroot -p2143 db01 -e "select * from tb_book";

1.2 mysqladmin

mysqladmin 是一個執行管理操作的客戶端程式。可以用它來檢查伺服器的配置和當前狀態、建立並刪除資料庫
等。
可以通過 : 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

1.4.1 連線選項

引數 :
	-u, --user=name 指定使用者名稱
	-p, --password[=name] 指定密碼
	-h, --host=name 指定伺服器IP或域名
	-P, --port=# 指定連線埠

1.4.2 輸出內容選項

引數:
--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

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/lib/mysql/xaxh-server.err

2.2 二進位制日誌

2.2.1概述

二進位制日誌(BINLOG)記錄了所有的 DDL(資料定義語言)語句和 DML(資料操縱語言)語句,但是不包括資料查詢語句。此日誌對於災難時的資料恢復起著極其重要的作用,MySQL的主從複製, 就是通過該binlog實現的。

二進位制日誌,預設情況下是沒有開啟的,需要到MySQL的配置檔案中開啟,並配置MySQL日誌的格式。

配置檔案位置 : /usr/my.cnf

日誌存放位置 : 配置時,給定了檔名但是沒有指定路徑,日誌預設寫入Mysql的資料目錄。

#配置開啟binlog日誌, 日誌的檔案字首為 mysqlbin -----> 生成的檔名如 :mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin
#配置二進位制日誌的格式
binlog_format=STATEMENT

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');

檢視日誌檔案 :