開始先執行天天自動備份的數據庫mysql
show master status;
再使用binlog恢復linux
binlog直接恢復數據庫,不建議直接使用sql
mysqlbinlog --start-datetime="2018-8-11 02:00:00" C:\Users\donald\Desktop\mysql.000243 | mysql -uroot -p sakila
優先使用下面的,把binlog導出sql文件,看下沒有問題再從新導入數據庫
mysqlbinlog --start-datetime="2018-8-11 02:00:00" --database=sakila C:\Users\donald\Desktop\mysql.000243 >C:\Users\donald\Desktop\binlog.sql
恢復的數據不包含視圖,視圖須要另外使用工具導出導入windows
mysqldump -E -R -u ursername-ppassword --databases db> C:\Users\Administrator\Desktop\db.dump工具
使用mysqldump ,系統不會區分視圖和表,所以有視圖的時候dump必定會報錯編碼
另外恢復的數據庫,某些視圖或者function是使用非root 帳號建立的,對應的數據也要有一樣的帳號,不然會有 execute command denied to user 'admin'@'%' for routine.......的報錯3d
另外,mysqldump 是不會區分視圖和表 ,把視圖和表混一塊兒,就會報錯 Couldn't execute 'show create table 'bs_purchase(視圖名)''....日誌
基於linux 恢復數據code
-- 查看全部binlog日誌列表
SHOW MASTER LOGS ;
-- 查看master狀態,即最後(最新)一個binlog日誌的編號名稱,及其最後一個操做事件pos結束點(Position)值
SHOW MASTER STATUS;
-- 查詢第一個(最先)的binlog日誌:
show binlog events
-- 指定查詢 mysql-bin.000013 這個文件限制10行
show binlog events in 'mysql-bin.000013' from 1574 LIMIT 10 ;
-- 查看binlog
mysqlbinlog --start-datetime='2019-03-25 00:00:00' --stop-datetime='2019-03-25 00:00:10' -d zita_wms /var/lib/mysql/binlog/mysql-bin.000013 -vv
-- 備份最後一個binlog日誌文件
cp -v /var/lib/mysql/binlog/mysql-bin.000013 /root/
-- 執行一次刷新日誌索引操做,從新開始新的binlog日誌記錄文件
flush logs;
SHOW MASTER LOGS ;
-- 備份dump文件恢復 基於windows 語句,
mysql -uroot -p < C:\Users\username\Desktop\zita_wms-20190325_013001.dump
-- 導出binlog的sql 文件
mysqlbinlog --start-datetime="2019-03-25 01:30:00" --database=zita_wms /var/lib/mysql/binlog/mysql-bin.000013 > /var/lib/mysql/binlog/mysql_20190325.sql
-- binlog 可視化輸出
mysqlbinlog --start-datetime="2019-04-04 13:17:20" --stop-datetime="2019-04-04 13:22:15" --base64-output=decode-rows -v --database=zita_wms /var/lib/mysql/binlog/mysql-bin.000014 > /var/lib/mysql/binlog/mysql_20190404.sql
檢查binlog 是否包含改時間段
很差含就須要就須要兩份binlog的恢復
-- 導入binlog 的sql 文件 基於windows的語句
mysql -uroot -p zita_wms < C:\Users\donald\Desktop\mysql_20190325.sql
導入dump 文件報錯
mysql -uroot -p --default-character-set=utf8mb4 zita_wms < C:\Users\donald\Desktop\zita_wms-20190408_013001.dump
緣由:導入數據時的默認編碼(utf8)與導出文件的默認編碼(utf8mb4)不一致。
ERROR 1231 (42000) at line 5383: Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
8.0以上已經取消了NO_AUTO_CREATE_USER這個關鍵字,刪掉sql語句中的這個關鍵字便可