首先要確定當前版本是不是mysqlbinlog版本,當不是mysqlbinlog版本時可能會導致出哪些問題,下面通過模擬場景的方法給大家做介紹,希望對大家有所幫助。
看當前mysqlbinlog版本的方法:
mysqlbinlog --version mysqlbinlog Ver 3.3 for Linux at x86_64
場景1:mysql服務器為mysql 5.6,要求mysqlbinlog版本為3.4及以上,否則mysqlbinlog解析時會直接報錯,之前已經碰到過很多次,但是沒有記錄具體的報錯信息,貌似和position位置不存在的報錯信息差不多,後來改用mysqlbinlog 3.4版本以後方可解析;
場景2:今天幫客戶做一個db恢復,備份文件是全庫備份,恢復卻只能恢復某個db到一個特定的時間點。方法如下:mysql加上-o database_name參數執行全備份的sql文件,然後用mysqlbinlog的-d database_name參數解析指定庫的binlog文件,期間使用到了mysqlbinlog,mysql server是5.6,mysqlbinlog版本是3.3,結果mysqlbinlog解析並沒有報錯,執行報錯,查看解析出來的binlog有很多亂碼,起初以為是字符集的問題,但查了半天也沒發現問題。後來才嘗試用3.4版本的mysqlbinlog解決了這個問題,類似的亂碼如下圖
總結:當mysql服務器版本是5.6時,一定切記要使用版本>=3.4的mysqlbinlog
希望以上內容對大家有所幫助。