开始先执行每天自动备份的数据库
show master status;
再使用binlog恢复
binlog直接恢复数据库,不建议直接使用
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
恢复的数据不包含视图,视图需要另外使用工具导出导入
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.......的报错
另外,mysqldump 是不会区分视图和表 ,把视图和表混一起,就会报错 Couldn't execute 'show create table 'bs_purchase(视图名)''....
基于linux 恢复数据
-- 查看所有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语句中的这个关键字即可
来源:oschina
链接:https://my.oschina.net/u/3556610/blog/1926213