java binlog是什么,讓我們一起了解一下?
binlog是記錄所有數據庫表結構變更以及表數據修改的二進制日志,而java代碼中可以通過地方的類庫提供的方法去監聽日志文件中的時間變化,當日志中出現增刪改時可以在java中監聽到,從而進行一些對緩存等內容的自動修改。
如何打開binlog?
在mysql的目錄下etc/my.conf或者my.ini文件中的[mysqld]標簽下添加以下配置:
log-bin=mysql-bin binlog-format=Row server_id=201903
那么在java中是如何監聽binlog日志的?
文件pom地址:
???? com.github.shyiko ????mysql-binlog-connector-java ????0.13.0
引入文件后:
//配置連接(指定數據庫的地址,端口號,賬號,密碼) BinaryLogClient?logClient?=?new?BinaryLogClient( ????????"127.0.0.1", ????????3306, ????????"root", ????????"123456" ); //注冊事件監聽器(可以對不同日志變更進行不同的操作邏輯) logClient.registerEventListener(event?->?{ ????EventData?data?=?event.getData(); ????//如果日志是更新記錄 ????if(data?instanceof?UpdateRowsEventData){ ????????System.out.println("update"); ????}else?if(data?instanceof?WriteRowsEventData){ ????????//寫操作 ????????System.out.println("write"); ????}else?if(data?instanceof?DeleteRowsEventData){ ????????????//刪除操作 ????????System.out.println("delete"); ? ????} }); //開始連接監聽 logClient.connect();
拓展一下:binlog還有這三個用途,分別為恢復、復制、審計。
恢復:創建的庫突然消失,可以用來恢復數據。
復制:從庫有兩個線程,一個I/O線程,一個SQL線程,I/O線程讀取主庫傳過來的binlog內容并寫入到relay log,SQL線程從relay log里面讀取內容,寫入從庫的數據庫。
審計:用戶可以通過二進制日志中的信息來進行審計,判斷是否有對數據庫進行注入攻擊。
以上就是小編今天的分享了,希望可以幫助到大家。