2021新年的第一天第一篇文章,2020年最后一天是不安宁的一天,生产数据误删除,在项目经理的夺命call中恢复数据,现在回想真是惊心动魄,此时就做下数据库数据恢复的过程。
1、查看binlog日志是否开启
如果没开启那就尴尬了,下面的就不用进行了
show variables like 'log_%';
如果没有设置,下次记得在/etc/my.cnf中配置
log-bin=mysql-bin
2、查看所有二进制日志
show master logs;
每次重启,都会接着上次生成新的mysql-bin.xxxx文件
清空重置命令: reset master;
3、查看需要恢复时间段二进制日志
方法一、 进入mysql数据存放目录,一般都是在my.cnf中配置的,使用mysqlbinlog查看日志数据
mysqlbinlog --no-defaults mysql-bin.000005
方法二、 在服务器上连上mysql的客户端
show binlog events in 'mysql-bin.000005';
二进制文件是查到了,那怎么恢复数据呢,请接下来看
4、用mysql的二进制文件恢复数据
将二进制文件重定向到指定的位置
mysqlbinlog --no-defaults mysql-bin.000005 > /home/xxx.sql
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000005 > /home/app_db.sql
5、关于mysql 常用的日志
binlog 二进制日志
general_log_file 查询日志(使用general_log开启)
redolog 持久化日志
undolog 回滚日志
relaylog 中继日志
slowlog 慢查询日志
6、 关于mysql调优的参数
innodb_buffer_pool_size 缓冲池(以kb为单位)
innodb_log_buffer_size 日志缓存
max_connections 最大连接数
back_log tcp积压请求栈大小
table_open_cache 执行线程可以打开表缓存
thread_cache_size 连接缓存数
innodb_lock_wait_time 事务锁等待时间