沈阳网站建设21anshan,各大网站的404,七台河新闻视频,靖江网站建设公司前言
在mysql中我们有时候会出现误删除#xff0c;或者其他的问题#xff0c;我们可以通过mysql的日志进行恢复
操作
我们可以在mysql里面定义一个错误日志#xff0c;方便我们可以排查是因为什么原因来解决mysql无法启动问题
----------------------------------------…前言
在mysql中我们有时候会出现误删除或者其他的问题我们可以通过mysql的日志进行恢复
操作
我们可以在mysql里面定义一个错误日志方便我们可以排查是因为什么原因来解决mysql无法启动问题
-------------------------------------------------------------------------------------------------------------------------------
1.错误日志
进入到配置文件
vim /etc/my.cnf
添加或者找到你的错误日志
log_error/tmp/mysql3306.log 这里的路径是我自己设置的每人的目录有可能不同具体看自己
重启
systemctl restart mysqld
查看日志 -这里就可以看到你在启动过程中遇到的问题 ---------------------------------------------------------------------------------------------------------------------------------
2.二进制日志binlog
作用
(1) 主从要依赖二进制日志 (2) 数据恢复时需要依赖于二进制日志
我们在配置文件里面进行添加这个一般没有启动
log_bin/databinlog/mysql-bin 这个是我在数据库进行了增删改的操作二进制文件就会存放到这里后面我们就可以通过二进制文件进行恢复 我们可以查看一个用cat命令是查看不到的需要用mysql自己的
查看二进制日志内容 mysqlbinlog mysql-bin.000001 #看语句级日志不能看行数据 mysqlbinlog --base64-outputdecode-rows -vvv mysql-bin.000001 #使用解码的方式可看行数据 mysqlbinlog -d event mysql-bin.000001 #摘要显示事件号码
这里的 mysql-bin000001是我自己的每次数据库经过重启或者刷新这个值就会加一
刷新命令 flush log;
截取日志
在恢复数据的途中我们可以选择从哪里恢复到哪里 我们恢复找到#数字开头然后下面找到操作命令的行然后到结束行就可以恢复
命令
1.截取出来保存到/tmp/a.sql目录下
mysqlbinlog --start-position233 --stop-position801 mysql-bin.000001 /tmp/a.sql
这里的意思就是从233行恢复到801行
2.关闭二进制文件记录 set_sql_log_bin0; 为了避免太多的日志不关闭会在日志重新疾苦一遍执行日志
3.把数据导入到mysql source /tmp/a.sql
4.开启二进制文件 set_sql_log_bin1; --1为开启 0为关闭
----------------------------------------------------------------------------------------------------------------
第二种恢复(GTID)
对于binlog中的每一个事务,都会生成一个GTID号码 - DDL ,DCL 一个event就是一个事务,就会有一个GTID号. DML语句来讲,begin到commit,是一个事务,就是一个GTI 查看gtid号
cat /usr/local/mysql/data/auto.cnf [auto] server-uuide2e9b01e-9687-11eb-b577-000c29b0384b
或者这样也可以查看到 TID是一个:自增长的数据,从1开始 e2e9b01e-9687-11eb-b577-000c29b0384b:1-15
GTID的幂等性 如果拿有GTID的日志去恢复时,检查当前系统中是否有相同GTID号,有相同的就自动跳过 会影响到binlog恢复和主从复制. GTID的开启和配置 vim /etc/my.cnf gtid-modeon enforce-gtid-consistencytrue 基于GTID,binlog恢复
(1) 截取日志mysqlbinlog --include-gtids3b915642-87b4-11ef-ae7c-000c2937c73c:1-3 mysql-bin.000001 /tmp/gtid.sql
cd /data/binlog -这里还是上面你的日志存放位置
mysqlbinlog --skip-gtids --include-gtids820f8917-d358-11ec-b243-000c29cbdce4:1-3 mysql-bin.000001 /tmp/gtid.sql -这里红的需要看你自己的是多少来修改 --skip-gtids 作用:在导出时,忽略原有的gtid信息,恢复时生成最新的gtid信息
这个日志查看比上面会多一个大家注意这个为分隔
恢复
set sql_log_bin0; source /tmp/gtid.sql set sql_log_bin1; 对此大家可以最后加一个整表备份然后定时测试是否可以正常使用