mysql數(shù)據(jù)庫(kù)navicat數(shù)據(jù)同步時(shí)誤刪除部分?jǐn)?shù)據(jù)的解決
背景介紹
聽說過刪庫(kù)跑路被抓的,今天就碰到升級(jí)服務(wù)器(Alibaba Cloud Linux ----> Ubuntu)原因是taos3.2不支持Alibaba Cloud Linux系統(tǒng)!
為了保險(xiǎn)起見把現(xiàn)在這個(gè)數(shù)據(jù)庫(kù)里的數(shù)據(jù)都備份一份,為了不耽誤同事們繼續(xù)開發(fā)所以需要將需要升級(jí)的數(shù)據(jù)庫(kù)在另一個(gè)服義務(wù)器中再跑一份出來!
有navicat幫忙數(shù)據(jù)遷移很方便!
但是犯錯(cuò)就在圖方便上了!
因?yàn)檫w移的這兩個(gè)數(shù)據(jù)庫(kù)中有幾個(gè)名字相同的庫(kù)!然后再數(shù)據(jù)同步時(shí)直接把原表中的數(shù)據(jù)刪除了!
我的天呢尤其是 bas_file表,這里面存的都是minio里的文件!
任務(wù)需求
現(xiàn)在無論如何都要把數(shù)據(jù)恢復(fù)回來!要不然工作不保!
有好多方法:
一.數(shù)據(jù)恢復(fù)備份(這個(gè)我我嘗試了,需要實(shí)現(xiàn)開啟備份)
就是這個(gè)東西!誰沒事會(huì)保存這個(gè)?。ㄎ揖捅4媪耍?/p>
這個(gè)恢復(fù)很簡(jiǎn)單,我要講的不是這個(gè)簡(jiǎn)單的!
二.利用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í)間咱們找到他對(duì)一個(gè)的開始id和結(jié)束id
我大概是1:30左右刪除的 這里我就選擇這個(gè)
然后使用下面這個(gè)語句生成時(shí)間段內(nèi)對(duì)數(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ù)庫(kù)時(shí) 要有留備份的習(xí)慣!
找到binlog.000004文件后可以復(fù)制到本地,用本地的mysqlbinlog操作效果是一樣的。
最后的 delete轉(zhuǎn)insert可以借助excel實(shí)現(xiàn),這里就不贅述了
到此這篇關(guān)于mysql數(shù)據(jù)庫(kù)navicat數(shù)據(jù)同步時(shí)誤刪除部分?jǐn)?shù)據(jù)的解決的文章就介紹到這了,更多相關(guān)mysql navicat 誤刪數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql時(shí)間格式和Java時(shí)間格式的對(duì)應(yīng)方式
這篇文章主要介紹了mysql時(shí)間格式和Java時(shí)間格式的對(duì)應(yīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08MySQL實(shí)現(xiàn)列轉(zhuǎn)行與行轉(zhuǎn)列的操作代碼
在處理數(shù)據(jù)時(shí),我們常常會(huì)遇到需要將表中的列(字段)轉(zhuǎn)換為行,或?qū)⑿修D(zhuǎn)換為列的情況,這種操作通常被稱為“列轉(zhuǎn)行”(Pivoting)和“行轉(zhuǎn)列”(Unpivoting),本文將向您介紹如何使用 CASE 語句、聚合函數(shù)以及 GROUP BY 子句來完成列轉(zhuǎn)行和行轉(zhuǎn)列的操作2024-09-09MySQL8.0移除傳統(tǒng)的.frm文件原因及解讀
MySQL 8.0移除傳統(tǒng)的.frm文件,采用基于InnoDB的事務(wù)型數(shù)據(jù)字典,主要解決了元數(shù)據(jù)不一致、性能優(yōu)化、架構(gòu)簡(jiǎn)化、增強(qiáng)功能支持、兼容性與升級(jí)問題,這一變革提高了數(shù)據(jù)庫(kù)的可靠性和性能,為未來的高級(jí)功能奠定了基礎(chǔ)2025-03-03詳解mysql 獲取某個(gè)時(shí)間段每一天、每一個(gè)小時(shí)的統(tǒng)計(jì)數(shù)據(jù)
這篇文章主要介紹了mysql 獲取某個(gè)時(shí)間段每一天、每一個(gè)小時(shí)的統(tǒng)計(jì)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04clickhouse復(fù)雜時(shí)間格式的轉(zhuǎn)換方式
這篇文章主要介紹了clickhouse復(fù)雜時(shí)間格式的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12