mysql數(shù)據(jù)庫navicat數(shù)據(jù)同步時(shí)誤刪除部分?jǐn)?shù)據(jù)的解決
背景介紹
聽說過刪庫跑路被抓的,今天就碰到升級(jí)服務(wù)器(Alibaba Cloud Linux ----> Ubuntu)原因是taos3.2不支持Alibaba Cloud Linux系統(tǒng)!
為了保險(xiǎn)起見把現(xiàn)在這個(gè)數(shù)據(jù)庫里的數(shù)據(jù)都備份一份,為了不耽誤同事們繼續(xù)開發(fā)所以需要將需要升級(jí)的數(shù)據(jù)庫在另一個(gè)服義務(wù)器中再跑一份出來!
有navicat幫忙數(shù)據(jù)遷移很方便!

但是犯錯(cuò)就在圖方便上了!
因?yàn)檫w移的這兩個(gè)數(shù)據(jù)庫中有幾個(gè)名字相同的庫!然后再數(shù)據(jù)同步時(shí)直接把原表中的數(shù)據(jù)刪除了!
我的天呢尤其是 bas_file表,這里面存的都是minio里的文件!
任務(wù)需求
現(xiàn)在無論如何都要把數(shù)據(jù)恢復(fù)回來!要不然工作不保!
有好多方法:
一.數(shù)據(jù)恢復(fù)備份(這個(gè)我我嘗試了,需要實(shí)現(xiàn)開啟備份)

就是這個(gè)東西!誰沒事會(huì)保存這個(gè)!(我就保存了)
這個(gè)恢復(fù)很簡單,我要講的不是這個(gè)簡單的!
二.利用bin_log日志來完成
查看有沒有開啟bin_log
現(xiàn)在服務(wù)器中進(jìn)入到mysql服務(wù)
mysql -u root -p
show variables like 'log_%'

可以看得到 log_bin是開啟狀態(tài)(其實(shí)不用太過關(guān)心,一般大家都是開啟的,尤其是安裝liunx版本的mysql時(shí),如果真的沒開 再去看其他博客吧)
開啟了bin_log日之后,就會(huì)有binlog文件生成咱們現(xiàn)在過去找
show master logs;

可以看得到文件名與大小都被打印出來,現(xiàn)在就去找這兩個(gè)文件(先退出mysql模式:exit)
find / -name binlog.000004

找到了他的位置

找到他們了
然后根據(jù)時(shí)間確定 是哪binlog
可以看得到000004后綴的這個(gè)時(shí)4月28 11:55 到 4月29 9:56,我是4月28 下午1:30左右刪除的數(shù)據(jù),所以咱們把重點(diǎn)放在binlog.000004上就行了。
這個(gè)文件將會(huì)救回你的數(shù)據(jù)
復(fù)制一份到你想要的位置 cp binlog.000004 /you/ (位置自己選)
然后 cd /you/ (別忘記換成自己的路徑)
使用
mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v -d crmeb /mysqldb/binlog.000004 > data.sql
上面這個(gè)語句多半你會(huì)遇到問題!
大概報(bào)錯(cuò)是mysqlbinlog 找不到
在你這個(gè)目錄不用動(dòng) 使用軟連接鏈接過來一個(gè)就行了
ln -s /www/server/mysql/bin/mysqlbinlog mysqlbinlog

能用就行了。
先用這個(gè)生成一個(gè)事件日志文件
日志大概樣子:

根據(jù)咱們要找的時(shí)間咱們找到他對一個(gè)的開始id和結(jié)束id
我大概是1:30左右刪除的 這里我就選擇這個(gè)
然后使用下面這個(gè)語句生成時(shí)間段內(nèi)對數(shù)據(jù)進(jìn)行的操作語句
mysqlbinlog --no-defaults --base64-output=DECODE-ROWS --start-position=3367047 --stop-position=3747440 -v binlog.000004 > insertdata.sql
會(huì)生成一個(gè) insertdata.sql文件大概樣子如下:

可以看得到,每步的操作都會(huì)被打印出來
往下翻找到咱們誤刪除的地方:

這就得到了當(dāng)時(shí)刪除數(shù)據(jù)的詳細(xì)信息,根據(jù)這些信息就看別寫insert語句再插入進(jìn)去就行了。
總結(jié)
操作數(shù)據(jù)庫時(shí) 要有留備份的習(xí)慣!
找到binlog.000004文件后可以復(fù)制到本地,用本地的mysqlbinlog操作效果是一樣的。

最后的 delete轉(zhuǎn)insert可以借助excel實(shí)現(xiàn),這里就不贅述了
到此這篇關(guān)于mysql數(shù)據(jù)庫navicat數(shù)據(jù)同步時(shí)誤刪除部分?jǐn)?shù)據(jù)的解決的文章就介紹到這了,更多相關(guān)mysql navicat 誤刪數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中必須了解的13個(gè)關(guān)鍵字總結(jié)
這篇文章主要為大家詳細(xì)介紹了MySQL中必須了解學(xué)會(huì)的13個(gè)關(guān)鍵字,文中的示例代碼簡潔易懂,對我們掌握MySQL有一定的幫助,需要的可以了解下2023-09-09
MySQL利用frm文件和ibd文件恢復(fù)表結(jié)構(gòu)和表數(shù)據(jù)
當(dāng)MySQL數(shù)據(jù)庫遭遇崩潰或數(shù)據(jù)丟失時(shí),利用備份的 .frm 和 .ibd 文件恢復(fù)數(shù)據(jù)是一種有效的解決方案,.frm 文件包含表的結(jié)構(gòu)信息,而 .ibd 文件則存儲(chǔ)表的實(shí)際數(shù)據(jù),本文將提供一個(gè)詳細(xì)的步驟指南,演示如何利用這些文件恢復(fù)MySQL表數(shù)據(jù)和表結(jié)構(gòu),需要的朋友可以參考下2024-05-05
后端MySQL數(shù)據(jù)庫四大范式詳細(xì)解析
數(shù)據(jù)庫的設(shè)計(jì)范式是數(shù)據(jù)庫設(shè)計(jì)所需要滿足的規(guī)范,滿足這些規(guī)范的數(shù)據(jù)庫是簡潔的、結(jié)構(gòu)明晰的,這篇文章主要介紹了后端MySQL數(shù)據(jù)庫四大范式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-12-12
asp+mysql+utf8 網(wǎng)頁出現(xiàn)亂碼問題的解決方法
無論在網(wǎng)頁中加多少UTF8的定義,顯示的結(jié)果都還是會(huì)有一些小格子,反而定義為gb2312,顯示完全正常2014-03-03
window下mysql 8.0.15 安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了window下mysql 8.0.15 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02

