【MySQL】利用二進制文件進行數據恢復
查看二進制文件是否開啟

show variables like ‘log_bin’
二進制文件存放的地址
此處是在window下
利用二進制文件恢復數據
關于Mysqlbinlog的使用參考官網: https://dev.Mysql.com/doc/refman/5.7/en/mysqlbinlog.html
這里沒有截圖,按照這個順序走即可,這里只是實現一個簡單的數據恢復,后期在深入來了解這部分
-- 先創建一個數據庫做操作:community CREATE DATABASE `community` ; USE community;
1
2
3
-- 添加測試的數據表 CREATE TABLE `count` ( `prefix` char(255) NOT NULL, `count` smallint(8) DEFAULT NULL COMMENT '當天插入記錄條數', `historyCount` int(20) DEFAULT NULL COMMENT '歷史插入記錄', PRIMARY KEY (`prefix`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1
2
3
4
5
6
7
8
-- 添加對應的測試數據 insert into count values('dd1', 1, 0); insert into count values('dd2', 1, 0); insert into count values('dd3', 1, 0);
1
2
3
4
-- 查看日志文件列表 SHOW BINARY LOGS; -- 查看日志文件的具體信息 show binlog events in 'mysql-bin.000001';
1
2
3
4
5
-- 導入到SQL文件中 mysqlbinlog --skip-gtids /usr/local/mysql/data/mysql-bin.000001 > /usr/local/mysql/data/community.sql 運行檢測內容 vim /usr/local/mysql/data/community.sql; mysql57 -u root -p -e "source /usr/local/mysql/data/community.sql"
1
2
3
4
5
6
7
然后可以做一個比較暴力或者直接的操作;把數據表count刪除 drop table `count`; -- 或者執行 delete from `count`; 然后進行數據的還原: mysql57 -u root -p -e "source /usr/local/mysql/data/community.sql"
1
2
3
4
5
6
7
8
關于binlog的寫入時間節點
sync_binlog=0: 對于日志刷新到磁盤基本上MySQL是不會自己控制刷新,由文件系統自己控制它的緩存刷新。這時候的性能最好,但是風險也是最大的。因為一旦系統出問題在binlog_cache中的所有binlog信息都會被丟失
sync_binlog=1: 啟用在事務提交之前將二進制日志同步到磁盤。這是最安全的設置,但是由于磁盤寫操作的增加,可能會對性能產生負面影響。在發生電源故障或操作系統崩潰時,二進制日志中缺少的事務只處于準備狀態。這允許自動恢復例程回滾事務,從而確保二進制日志中沒有丟失任何事務。
sync_binlog=N:其中N是0或1之外的值:在收集了N個二進制日志提交組之后,將二進制日志同步到磁盤。在發生電源故障或操作系統崩潰時,服務器可能提交了未刷新到二進制日志的事務。由于磁盤寫的數量增加,此設置可能對性能產生負面影響。值越大,性能越好,但是數據丟失的風險越大。
在mysql8.0中默認是值1
MySQL
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。