講解mysql binlog的使用方法

jacklove
發布: 2023-03-30 20:10:01
原創
3093 人瀏覽過

本文介紹mysql binlog的使用,包括開啟,關閉,查看狀態,刷新,清空,查看執行的sql語句等操作。並對5.7及舊版的設定加以說明,方便大家學習。 

mysql binlog 介紹

binlog就是binary log,二進位日誌文件,記錄了​​mysql所有的dml操作。

根據mysql binlog文件,我們可以查看執行了什麼sql語句,進行資料恢復,主從同步複製等操作。

binlog檔案對於一個資料庫的處理和復原有很重要的作用。

1.mysql binlog 開啟與關閉

查看mysql binlog設定

show global variables like '%log_bin%';
+---------------------------------+-------+| Variable_name                   | Value |
+---------------------------------+-------+| log_bin                         | OFF   |
| log_bin_basename                |       |
| log_bin_index                   |       |
| log_bin_trust_function_creators | OFF   |
| log_bin_use_v1_row_events       | OFF   |+---------------------------------+-------+
登入後複製

binlog 目前是關閉的。

開啟binlog

開啟my.cnfmy.ini加入以下語句,重啟mysql

log_bin=ONlog_bin_basename=/usr/local/var/mysql/mysql-binlog_bin_index=/usr/local/var/mysql/mysql-bin.index
登入後複製

log_bin
ON表示開啟binlog日誌,關閉改為OFF。

log_bin_basename
表示binlog日誌的基本檔名,後面會追加標識來區分每一個檔案。

log_bin_index
指定binlog文件的索引文件,這個文件管理了所有binlog文件的目錄。


如果是mysql5.7以下,這樣設定就可以了,如果是5.7以上,需要按以下設定

log_bin=mysql-binserver_id=123456
登入後複製

log_bin # 表示自訂binlog檔案名稱。

server_id 表示隨機指定一個與其他叢集機器不重名的字串,設定mysql replication需要定義,不能和canal的slaveId重複。

重啟後再次查看mysql binlog配置

show global variables like '%log_bin%';
+---------------------------------+--------------------------------------+| Variable_name                   | Value                                |
+---------------------------------+--------------------------------------+| log_bin                         | ON                                   |
| log_bin_basename                | /usr/local/var/mysql/mysql-bin       |
| log_bin_index                   | /usr/local/var/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF                                  |
| log_bin_use_v1_row_events       | OFF                                  |+---------------------------------+--------------------------------------+
登入後複製

可以看到binlog已開啟。

2.查看binlog日誌檔案清單

show master logs;
+------------------+-----------+| Log_name         | File_size |
+------------------+-----------+| mysql-bin.000001 |       177 |
| mysql-bin.000002 |       177 |
| mysql-bin.000003 |       177 |
| mysql-bin.000004 |       177 |
| mysql-bin.000005 |       177 |
| mysql-bin.000006 |       177 |
| mysql-bin.000007 |       201 |
| mysql-bin.000008 |       201 |
| mysql-bin.000009 |       201 || mysql-bin.000010 |       154 |
+------------------+-----------+
登入後複製

3.查看目前正在寫入的binlog日誌

show master status;
+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000010 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
登入後複製

4.刷新binlog日誌檔案

flush logs;
登入後複製

5.清空日誌檔案

reset master;
登入後複製

6.查看binglog日誌檔案內容

查看binlog日誌文件,查看執行了哪些sql語句,我們可以使用mysqlbinlog 工具進行處理。

首先根據log_bin_basename,找到存放binlog檔案的目錄,然後使用mysqlbinlog工具查看對應的binlog檔案。
 
例如:

mysqlbinlog -v mysql-bin.000001 > mysql-bin-1.log
登入後複製

然後查看mysql-bin-1.log,可以查看執行過的sql語句。

BINLOG '
Xq1HWhNA4gEAPAAAAGQBAAAAAPEEAAAAAAEACXRlc3RfdXNlcgAGY3NfdGFnAAUDDwEDAwL9AgBa
WZlG
Xq1HWh5A4gEANwAAAJsBAAAAAPEEAAAAAAEAAgAF/+ACAAAABABjc2RuAf2LG1r9ixtaIS88ZA==
'/*!*/;### INSERT INTO `test_user`.`cs_tag`### SET###   @1=2###   @2='csdn'###   @3=1###   @4=1511754749###   @5=1511754749# at 411
登入後複製

使用mysqlbinlog時需要注意一下幾點

#1.不要查看目前正在寫入的binlog文件,可以先把文件複製到其他目錄,再執行查看。

2.不要加force參數強制存取。

3.如果binlog格式是row模式的,請加-vv參數。

本篇文章解釋了mysql binlog的使用方法,更多相關知識請關注php中文網。

相關推薦:

講解php 基於redis使用令牌桶演算法實現流量控制的相關內容

如何透過php 建立帶有logo二維碼類別

詳解mysql重建表格分割區並保留資料的相關方法

以上是講解mysql binlog的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板