mysql5.7使用binlog 恢復(fù)數(shù)據(jù)的方法
show variables like ’%log_bin%’;log_bin 為 on是開啟。


mysql> show binary logs; #獲取binlog文件列表mysql> show master status; #查看當(dāng)前正在寫入的binlog文件mysql> reset master; 重置binlog

例子1:查詢2021-3-12 14:00:00到2021-3-12 14:03:00 數(shù)據(jù)庫為 g_xinxiangshop的操作日志,輸入如下命令將數(shù)據(jù)寫入到一個備用的txt文件中
/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt
例子2:查詢2021-3-12 14:00:00到2021-3-12 14:03:00 數(shù)據(jù)庫為 g_xinxiangshop的操作日志,并且過濾出 只包括 g_user表數(shù)據(jù)的操作記錄 ,輸入如下命令將數(shù)據(jù)寫入到一個備用的txt文件中
/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 | grep g_user > /tmp/binlog.txt
例子3:查詢2021-3-15 15:25:00到2021-3-15 15:35:00 數(shù)據(jù)庫為 g_shoptest 的操作日志,并輸出到屏幕上/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_shoptest --start-datetime=“2021-3-15 15:25:00” --stop-datetime=“2021-3-15 15:35:00” /data/mysql/mysql-bin.000001 |more

圖片和例1、例2內(nèi)容一樣 看到了truncate操作 和記錄點 就可以做恢復(fù)操作了!
第四步:測試?yán)胋in_log恢復(fù)數(shù)據(jù)登錄mysql測試:
1、 reset master; 重置binlog并重新生成記錄日志

2、 測試某個表 插入一條數(shù)據(jù) 然后不小心刪除了。


3、 查看bin-log 命令:show binlog events in ‘mysql-bin.000001’;

如上圖我們看到刪除點在928到 1294 ;之前的新增的數(shù)據(jù) 在154到520

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 154 --stop-position 520 | mysql -uroot -p g_shoptest
執(zhí)行完畢之后 去看看刪除那條數(shù)據(jù)吧 又回來了

binlog命令
1.最長用的就是回復(fù)指定數(shù)據(jù)端的數(shù)據(jù)了,可以直接恢復(fù)到數(shù)據(jù)庫中:
mysqlbinlog --start-date='2021-3-12 14:00:00' --stop-date='2021-3-12 14:03:00' mysql_bin.000001 |mysql -uroot -p123456
2.指定開始結(jié)束位置,從上面的查看產(chǎn)生的binary log我們可以知道某個log的開始到結(jié)束的位置,我們可以在恢復(fù)的過程中指定回復(fù)從A位置到B位置的log.需要用下面兩個參數(shù)來指定:
--start-positon='50' //指定從50位置開始 --stop-postion='100'//指定到100位置結(jié)束/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 7903538 --stop-position 7904498|mysql -uroot -p123456
**常見錯誤 ERROR: Error in Log_event::read_log_event(): ‘Found invalid event in binary log’, data_len: 31, event_type: 35*問題為mysqlbinlog版本所導(dǎo)致
查看當(dāng)前os使用的mysqlbinlog
shell> which mysqlbinlog/usr/bin/mysqlbinlog
查看mysql當(dāng)前使用的mysqlbinlog
±--------------±------------------+| Variable_name | Value |±--------------±------------------+| basedir | /usr/local/mysql/ |±--------------±------------------+
mysql> show variables like ‘basedir’;
對比兩個版本
shell> /usr/bin/mysqlbinlog --versionshell> /usr/local/mysql/bin/mysqlbinlog --version
解決此問題指定mysqlbinlog路徑即可
/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt
到此這篇關(guān)于mysql5.7使用binlog 恢復(fù)數(shù)據(jù)的方法的文章就介紹到這了,更多相關(guān)mysql binlog 恢復(fù)數(shù)據(jù)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Microsoft Office Access設(shè)置小數(shù)位數(shù)的方法2. MySQL基本調(diào)度策略淺析3. mybatis 為什么千萬不要使用 where 1=14. 巧用SQL語言在ACCESS數(shù)據(jù)庫中批量替換內(nèi)容5. 數(shù)據(jù)庫相關(guān)的幾個技能:ACCESS轉(zhuǎn)SQL6. 如何實現(xiàn)MySQL數(shù)據(jù)庫的備份與恢復(fù)7. Access數(shù)據(jù)庫日常維護方法(優(yōu)化)8. DB2 常用命令小結(jié)9. Mysql入門系列:安排預(yù)防性的維護MYSQL數(shù)據(jù)庫服務(wù)器10. 微軟需要改進SQL Server的六大功能

網(wǎng)公網(wǎng)安備