mysql binlog 二進位制日誌 備忘

2021-06-20 02:20:41 字數 1276 閱讀 3247

當資料丟失後,除了備份外,就是日誌檔案了,所在mysql日常管理中,若磁碟空間允許,建議開啟binlog日誌

1:開啟binlog日誌記錄 

修改mysql配置檔案mysql.ini,在[mysqld]節點下新增 

# log-bin 

log-bin = /usr/local/mysql/logbin.log   《---也可以不指定路徑,預設在mysql_base下

expire-logs-days=3 《---儲存最近三天

重啟資料庫後,在指定的路徑下便 會生成相關日誌。

2、binlog日誌檔案不能直接檢視,需匯出來才行

匯出日誌可以根據自己的掌握的資訊的需求匯出

常見匯出的幾種方法

全部匯出  

[root@db1 tmp]# /usr/bin/mysqlbinlog  mysqlbinlog.000002 > e.txt

根據時間段匯出 

[root@db1 tmp]# /usr/bin/mysqlbinlog --start-datetime="2013-01-23 17:00:00" --stop-datetime="2013-01-24 03:05:00" mysqlbinlog.000002  > e.txt

根據位置匯出

[root@db1 tmp]# /usr/bin/mysqlbinlog  --start-position=5 --stop-position=10 mysqlbinlog.000002 > e.txt

其它引數參考 mysqlbinlog --help 

關於資料匯入 正常情況下,用命令mysql < e.txt就能恢復了,但是如果 發現提示有很主鍵重複什麼的。就需對匯出的檔案進行下整理,我的經驗如下:

1、用ultredit 開啟,使用批量替換功能 將/*!*/;    替換成/*!*/; ^p(也就是加個回車符)

2、將一些ddl語句過濾掉如:

#cat e.txt | grep -v '^#' | grep -v '^set' | grep -v '^begin' | grep -v ^$ | grep -v '^rollback' | grep -v '^delimiter' | grep -v '^\/\*\!\\c' > test1.txt

3、再用mysql < test1.txt匯入即可

binlog 其它一些操作

強制輪轉日誌:mysql>flush logs; (在進行資料庫備份後,建議強制輪轉一次)

手工清除日誌:mysql>show master logs; 

mysqlbinlog 檢視二進位制日誌

當bin log的模式設定為 row時 不僅日誌長得快 並且檢視執行的sql時 也稍微麻煩一點 1.干擾語句多 2生成sql的編碼需要解碼。binlog format row 直接mysqlbinlog出來的 檔案 執行sql部分的sql顯示為base64編碼格式 固生成sql記錄的時候 不能用常規...

mysqlbinlog檢視二進位制日誌時的乙個問題

在使用mysqlbinlog檢視日誌時,出現乙個錯誤提示如下 usr local mysql bin mysqlbinlog unknown variable default character set utf8 原因分析,是由於在my.cnf中的client選項組中新增了 default char...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...