原因
开发误删数据库表,需要恢复
要求
mysql 有开启 binlog 日志记录
步骤
1. 找到 binlog 文件
ll /var/lib/mysql/*bin*
# 查看 binlog 日志文件列表
mysql -uroot -ppassword
mysql> show master logs;
# 查看最后一个binlog日志的编号及最后一个操作事件position 结束点的值
mysql> show master status;
# 刷新日志,产生一个新编号 binlog 文件
mysql> flush logs;
2. 寻找需要还原的时间点 position
ll /var/lib/mysql/ # 查看文件时间
# 1. 通过Navicat 连接 mysql 查看 binlog文件内容(命令行查看太慢)
mysql > show binlog events in 'master-bin.000002';
3. 导出 sql 语句
mysqlbinlog --no-defaults --stop-position=315502651 --database=unidb2 /data/mysql/master-bin.000002 > /2.sql | mysql -uroot -ppassword
mysqldump -uroot -ppassword unidb2 < /2.sql
4. 执行导出的 sql 文件
注:执行sql文件时有创建表语句,提示表已存在,因此需要备份原数据库,然后删除所有表后再执行sql文件
# 备份原数据库unidb2
mysqldump -uroot -ppassword unidb2 > bak.sql
# 删除 unidb2 下所有表后导入 2.sql
mysqldump -uroot -ppassword unidb2 < /2.sql
\