1、相關命令
1)查看是否開啟 binlog日志(默認不開啟,log_bin值為OF)及日志位置
show variables like '%log_bin%';
2)查看產生的 日志文件。
show binary logs;
3)查看當前使用的日志文件,即記錄操作的最后一個日志文件
show master status;
4)查看日志事件信息 ,開始、結束操作位置等
show binlog events;
5)查看mysql-bin.000001日志文件的事件信息 ,開始、結束操作位置等
show binlog events in 'mysql-bin.000001';
6)產生新日志,后面的操作會寫到新日志中,日志名mysql-bin.00000X+1
flush logs;
7)清空所有的日志,從mysql-bin.000001開始重新記錄日志
reset master;
8)查詢mysql-bin.000001中記錄的操作,不顯示sql,要進入到mysql的安裝目錄中
mysqlbinlog mysql-bin.000001;
9)查詢mysql-bin.000001中記錄的操作,會顯示sql語句
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;
2、開啟binlog
修改配置文件/etc/my.cnf,增加如下配置:
log_bin=mysql-bin
server-id = 1
說明:
1)看准log_bin是下划線,不是橫杠,mysql-bin是定義的 產生日志的文件名前綴。
2)server-id的值隨便指定 ,集群環境下不能重復。
3)配置完成后,需要重啟數據庫,此時/var/lib/mysql下已經產生日志文件mysql-bin.index、mysql-bin.000001
3、演示數據恢復
1)查看當前日志文件
當前記錄日志文件mysql-bin.000001,初始位置154。
2)新建數據庫mydb1,新建表t_test1,並准備數據如下
3)再次查看記錄位置,發現記錄位置已改變
4) 查看mysql-bin.000001日志文件的事件信息 ,開始、結束操作位置等
5)查看記錄日志的詳細信息,可以看到sql語句
6)重新開啟新日志
7)開始演示恢復表操作,首先刪除表
8)查看建表位置
[root@localhost mysql]# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;
9)執行恢復語句,查詢結果,表及數據恢復完成。
備注:本篇主要目的是演示binlog的相關命令,其中數據恢復的例子單純為了演示,實際工作中要復雜的多,相關文章請參考后面的文章。