mysql ??Binary Log也就是常說的bin-log,椒功,是mysql執(zhí)行改動產(chǎn)生的二進(jìn)制日志文件牍氛,其主要作用有兩個:
* 數(shù)據(jù)恢復(fù)
* 主從數(shù)據(jù)庫。用于slave端執(zhí)行增刪改请毛,保持與master同步粘我。
如何查看bin_log是否打開,執(zhí)行以下sql語句:
? ? ? show variables like 'log_bin'
如果值為on坝橡,則表示bin_log泻帮。如果為off,則需要通過以下方式打開:
找到my.ini配置文件计寇,找到log_bin锣杂,去掉前面的注釋,然后加上log_bin=“mysql_log_bin”.
mysql會在名字后面自動加上6位編碼番宁,從000001開始元莫,按上面的例子,文件名稱為mysql_log_bin.000001,mysql_log_bin.000002,mysql_log_bin.000003...........
如何查看這些文件呢蝶押?bin_log是二進(jìn)制文件踱蠢,因此這些文件是無法用記事本打開的〔ゴ希可在客戶端執(zhí)行以下sql進(jìn)行查看朽基,show binlog events in? mysql_log_bin.000001'.
結(jié)果當(dāng)中有l(wèi)og_name,pos离陶,event_type,server_id,end_log_pos,info等字段稼虎。通過info字段能清晰的看出都執(zhí)行了那些操作。那有人問招刨,你怎么知道最后操作的文件時(shí)000001呢霎俩?可以通過以下命令來查看最后一個bin_log的日志文件:show master status,其中的File字段顯示的就是最后一個日志文件。
接下來講一下如何利用bin_log恢復(fù)數(shù)據(jù)打却。
恢復(fù)數(shù)據(jù)主要使用mysqlbinlog工具杉适,各位看官如果沒有可自行下載。
mysqlbinlog可以執(zhí)行很多命令柳击,具體命令參考mysqlbinlog --help猿推。這里著重講一下恢復(fù)數(shù)據(jù)。
上面介紹了如何查看文件捌肴,通過文件中可以找到每條sql語句執(zhí)行的位置即position蹬叭,使用
mysqlbinlog --start-position=4 --stop-position=119? mysql_log_bin.000002|mysql -u root -p?
命令可恢復(fù)指定行的sql語句,that is all状知。
最后說一些bin_log常用操作
1.flush logs ?啟用新的日志文件秽五,一般在備份完數(shù)據(jù)庫之后執(zhí)行
2.reset ?master ?清空現(xiàn)有所用的bin_log文件