今天專案上需要對mysql進行資料修復,通過比較各種方案和工具,準備使用binlog2sql工具進行「資料閃回」,具體怎麼使用呢,安排。
以恢復某個庫的某個表為例,
準備兩個一模一樣地mysql,安裝上,推薦用yum+rpm方式安裝,否則,配置起來能否一次性安裝成功,看運氣了。
源庫:mysql 5.7.30
目標庫:mysql 5.7.30
修改my.cnf配置檔案,新增以下內容:
server_id=1binlog2sql需要python執行環境,首先安裝pip。# 標識,集群時必須且不能重複
log_bin = mysql-bin #必須開啟
binlog_format =row#必須
expire_logs_days = 0 #日誌儲存天數,按需,0代表永久
pip 是乙個 python 包安裝與管理工具,檢視本機是否安裝了pip,命令如下:
再次檢視命令
pip -v看到如下內容,代表安裝成功了
通過yum進行安裝,命令如下:
pip install -r requirements.txt安裝過程中看到方塊亂碼別慌,最後出現success,代表ok了
至此,binglog2sql工具安裝就緒。
檢視當前的binlog主檔案,命令如下:
可以看到,源庫當前正在寫入的主log是mysql-bin.000003,將該檔案通過ssh等方式,拷貝到目標庫任意目錄,備用。
同樣執行show master status\g;命令,檢視目標庫當前binlog主檔案,如果檔案序號小於源庫的序號,例如,目標庫目前是mysql-bin.000002,則手工刷出乙個或若干個binlog檔案,直至可以覆蓋源庫的binlog序號(檔名)。
至此,菜都備齊了,開炒
進入你的binlog2sql的主目錄下的binlog2sql目錄,執行以下命令:
python binlog2sql.py -h127.0.0.1 -p你的資料庫埠 -u資料庫使用者 -p'命令執行後,就是等待,時間視你的過濾條件多少,binlog檔案資料大小,時間區間大小等條件制約,根據你伺服器資源情況設定過濾條件。如果資料量過大,可能等不出結果。資料庫密碼
' --flashback -d '
資料庫名稱
' -t '
表名 --start-file=
'mysql-bin.000003
'--start-datetime=
'開始時間'
--stop-datetime=
'結束時間'
> flashback-test(名字隨便起).sql
沒有訊息就是好訊息,如果經過一段時間的等待,最後成功地看到命令提示符,且生成的檔案大小 > 0,恭喜,成功了!
這個sql檔案,就是針對指定時間區間(如果你輸入了)等過濾條件內的執行的sql的反向sql,在目標表中執行一下,資料就回到你期望的時間點了。
這個在網上有很多文章都是提示你輸入格式有問題,如果你不屬於這種情況,那麼以下的辦法會終極解決
你的mysql使用的caching_sha2_password認證方式,換成mysql_native_password就可以了,具體操作如下:
alter user 『root』@『localhost』 identified with mysql_native_password by 『你的密碼』;
刪庫不必跑路,談資料庫刪除設計
凡是做業務邏輯系統,總是離不開對刪除邏輯的處理.本文論述重點是偽刪除,即欄位標示狀態,這是在一些中小型系統開發中的單據等較重要資料的主流做法.但在此之前,不妨先將常見刪除策略列舉一下 1 資料庫設定級聯 這個我沒太懂是怎麼回事,不過網上也說缺點較多,很少用到,在此就不考慮了 2 觸發器控制 本文所寫...
刪庫刪目錄 跑路
刪庫刪目錄 dirdata public web public apk public h5 thinkphp public js public pay vendor dbhost 127.0.0.1 mysql伺服器主機位址 dbuser 資料庫使用者名稱 mysql使用者名稱 dbpass 資料庫...
MySQL,從刪庫到跑路
1 刪除表中指定記錄 mariadb vincen delete from 資料表名 where 指定條件 2 同時刪除表中的記錄 mariadb vincen delete from 資料表名 where 欄位名 between 條件1 and 條件2 3 刪除表中所有的記錄 mariadb vi...