mysqlbinlog 工具
mysqlbinlog 工具說明:它可以審查binlog檔案及中繼日誌檔案的內容。除了在本地去讀binlog檔案,mysqlbinlog同樣可以從其他伺服器上遠端讀取binlog檔案
基本用法:
啟動一個客戶端連線到master,執行下面的命令檢視它們在二進位制日誌中如何結束的。
mysql> reset master;
Query OK, 0 rows affected (0.10 sec)
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 120 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
mysql> create table test(
-> id int auto_increment,
-> name char(100) not null,
-> email char(100),
-> password char(100),
-> primary key(id)
-> );
Query OK, 0 rows affected (0.07 sec)
mysql> set @password=PASSWORD('test');
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test (name,email,password)
-> values ('test','test@test.com',@password);
Query OK, 1 row affected (0.03 sec)
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 697 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
使用mysqlbinlog裝載binlog檔案master-bin.000001的內容
不知道 master-bin.000001檔案位置可以執行下面命令查詢 master-bin.000001檔案位置
find / -name master-bin.000001
[root@root ~]# sudo mysqlbinlog --short-form --force-if-open --base64-output=never /var/lib/mysql/master-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1431574509/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table test(
id int auto_increment,
name char(100) not null,
email char(100),
password char(100),
primary key(id)
)
/*!*/;
SET TIMESTAMP=1431574594/*!*/;
BEGIN
/*!*/;
SET INSERT_ID=1/*!*/;
SET @`password`:=_utf8 0x2A39344244434542453139303833434532413146393539464430324639363443374146344346433239 COLLATE `utf8_general_ci`/*!*/;
SET TIMESTAMP=1431574594/*!*/;
insert into test (name,email,password)
values ('test','test@test.com',@password)
/*!*/;
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
--short-form:mysqlbinlog只列印被執行的SQL語句資訊,忽略關於二進位制日誌中的事件的註釋資訊。當mysqlbinlog只用來回放事件到一個伺服器時,這個選項時非常有用的。如果你想為查詢問題而審計binlog檔案,就需要這些註釋而不能使用該選項。
--force-if-open:如果binlog沒有被正確關閉,無論因為binlog檔案仍在被寫入或因為伺服器系統崩潰,mysqlbinlog都將列印一條警告說這個binlog檔案沒有被正確關閉。這個選項防止列印警告
--base64-output=never:阻止mysqlbinlog列印base64-encoded事件。如果mysqlbinlog必須列印base64-encoded事件,他將列印二進位制日誌的format description事件以顯示其使用的編碼。
mysqlbinlog 可以接受多個檔案,如果給定多個binlog檔案,它們將被按順序處理。
由於binlog檔案通常都很大,可以透過限制選項限定一定範圍內的事件被列印。
--start--position=bytepos:轉儲的第一個事件的位元組位置。如果幾個binlog檔案提供給mysqlbinlog的,這個位置將被解釋為在序列中的第一個檔案的位置。
如果一個事件不在給定位置開始。mysqlbinlog仍然會嘗試解釋在那個位置開始的子節作為一個事件,這通常會導致垃圾輸出。
--stop-position=bytepos:最後列印的事件的子節位置。如果沒有事件在那個位置結束,最後列印的事件的位置將是在bytepos位置之前的事件。給定了多個binlog檔案,該位置將是序列中最後一個檔案的位置。
--start-datetime=datetime:只列印那些有時間戳或datetime後的事件。
--stop-datetime=datetime:只列印那些有時間戳或datetime前的事件。
讀取遠端檔案
為處理遠端讀取binlog檔案,包含有連線到伺服器的主機和使用者的read-from-remote-server選項,以及可選的埠和密碼,用於replication slave許可權的使用者
$sudo mysqlbinlog --read-from-remote-server --host=master.example.com --base64-output=never --user=rple_user --password --start-position=xxx --stop-position=xxx master-bin.000001
基本用法:
啟動一個客戶端連線到master,執行下面的命令檢視它們在二進位制日誌中如何結束的。
mysql> reset master;
Query OK, 0 rows affected (0.10 sec)
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 120 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
mysql> create table test(
-> id int auto_increment,
-> name char(100) not null,
-> email char(100),
-> password char(100),
-> primary key(id)
-> );
Query OK, 0 rows affected (0.07 sec)
mysql> set @password=PASSWORD('test');
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test (name,email,password)
-> values ('test','test@test.com',@password);
Query OK, 1 row affected (0.03 sec)
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 697 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
使用mysqlbinlog裝載binlog檔案master-bin.000001的內容
不知道 master-bin.000001檔案位置可以執行下面命令查詢 master-bin.000001檔案位置
find / -name master-bin.000001
[root@root ~]# sudo mysqlbinlog --short-form --force-if-open --base64-output=never /var/lib/mysql/master-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1431574509/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table test(
id int auto_increment,
name char(100) not null,
email char(100),
password char(100),
primary key(id)
)
/*!*/;
SET TIMESTAMP=1431574594/*!*/;
BEGIN
/*!*/;
SET INSERT_ID=1/*!*/;
SET @`password`:=_utf8 0x2A39344244434542453139303833434532413146393539464430324639363443374146344346433239 COLLATE `utf8_general_ci`/*!*/;
SET TIMESTAMP=1431574594/*!*/;
insert into test (name,email,password)
values ('test','test@test.com',@password)
/*!*/;
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
--short-form:mysqlbinlog只列印被執行的SQL語句資訊,忽略關於二進位制日誌中的事件的註釋資訊。當mysqlbinlog只用來回放事件到一個伺服器時,這個選項時非常有用的。如果你想為查詢問題而審計binlog檔案,就需要這些註釋而不能使用該選項。
--force-if-open:如果binlog沒有被正確關閉,無論因為binlog檔案仍在被寫入或因為伺服器系統崩潰,mysqlbinlog都將列印一條警告說這個binlog檔案沒有被正確關閉。這個選項防止列印警告
--base64-output=never:阻止mysqlbinlog列印base64-encoded事件。如果mysqlbinlog必須列印base64-encoded事件,他將列印二進位制日誌的format description事件以顯示其使用的編碼。
mysqlbinlog 可以接受多個檔案,如果給定多個binlog檔案,它們將被按順序處理。
由於binlog檔案通常都很大,可以透過限制選項限定一定範圍內的事件被列印。
--start--position=bytepos:轉儲的第一個事件的位元組位置。如果幾個binlog檔案提供給mysqlbinlog的,這個位置將被解釋為在序列中的第一個檔案的位置。
如果一個事件不在給定位置開始。mysqlbinlog仍然會嘗試解釋在那個位置開始的子節作為一個事件,這通常會導致垃圾輸出。
--stop-position=bytepos:最後列印的事件的子節位置。如果沒有事件在那個位置結束,最後列印的事件的位置將是在bytepos位置之前的事件。給定了多個binlog檔案,該位置將是序列中最後一個檔案的位置。
--start-datetime=datetime:只列印那些有時間戳或datetime後的事件。
--stop-datetime=datetime:只列印那些有時間戳或datetime前的事件。
讀取遠端檔案
為處理遠端讀取binlog檔案,包含有連線到伺服器的主機和使用者的read-from-remote-server選項,以及可選的埠和密碼,用於replication slave許可權的使用者
$sudo mysqlbinlog --read-from-remote-server --host=master.example.com --base64-output=never --user=rple_user --password --start-position=xxx --stop-position=xxx master-bin.000001
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28282660/viewspace-1654361/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysqlbinlog工具報錯MySql
- “mysqlbinlog”工具做binlog server靠譜嗎?MySqlServer
- mysqlbinlog二進位制日誌檢視工具MySql
- mysqlbinlog工具基於日誌恢復詳細解釋MySql
- MySQL:MySQL工具以及5.7mysqlbinlog|mysql速度極慢問題MySql
- mysqlbinlog 處理二進位制日誌檔案的工具MySql
- mysqlbinlog檢視binlogMySql
- MySQL 5.5 mysqlbinlog 介紹MySql
- mysqlbinlog 恢復、備份MySql
- mysqlbinlog rewrite-db選項MySql
- 使用 MYSQLBINLOG 來恢復資料MySql
- 用mysqlbinlog檢視row格式的事件MySql事件
- mysqlbinlog命令詳解 Part 8 指定 Server IDMySqlServer
- mysqlbinlog命令詳解 Part 10 恢復MySQLMySql
- 【Mysql】閃回--mysqlbinlog flashback 5.6版本MySql
- mysqldump+mysqlbinlog執行備份與還原MySql
- mysqlbinlog命令詳解 Part 9 MySQL備份策略MySql
- mha_replication_check Can't exec "mysqlbinlog": No such file or directoryMySql
- 使用mysqlbinlog備份binlog 搭建Binlog ServerMySqlServer
- 'mysqlbinlog' is currently not installed install mysql-server-5.5MySqlServer
- AWS RDS上如何使用mysqlbinlog命令下載binlogMySql
- mysqlbinlog: unknown variable 'default-character-set=utf8'MySql
- 檢視寶塔mysql二進位制檔案 mysqlbinlogMySql
- mysqlbinlog命令詳解 Part 11 其他的一些引數MySql
- mysqlbinlog命令恢復資料要注意的問題彙總MySql
- 執行mysqlbinlog出現Found invalid event in binary log錯MySql
- mysqldump全量備份+mysqlbinlog二進位制日誌增量備份MySql
- MySQL:從庫binlog 使用mysqlbinlog stop-datetime過濾問題MySql
- mysqlbinlog命令詳解 Part 5 通過位置和時間檢視日誌MySql
- mysqlbinlog命令詳解 Part 6 讀取遠端MySQL伺服器日誌MySql伺服器
- mysqlbinlog命令詳解 Part 7 備份二進位制日誌檔案MySql
- 用mysqlbinlog做基於時間點的資料恢復一例MySql資料恢復
- mysql之 binlog維護詳細解析(開啟、binlog引數作用、mysqlbinlog解讀、binlog刪除)MySql
- 工具工具
- mysql之 binlog維護詳細解析(開啟、binlog相關引數作用、mysqlbinlog解讀、binlog刪除)MySql
- Golang工具集-String工具,時間工具,http工具等GolangHTTP
- 最常用的scrum工具、敏捷開發工具、看板工具Scrum敏捷
- 工具