mysqlbinlog恢复数据注意事项【转】
mysqlbinlog 恢复数据注意事项
前言:
上次有个有个朋友恢复 MySQL 数据,一直恢复不成功,也没有报错信息,使用的环境是 MySQL 5.7 使用了 GTID 以及 binlog 格式为 ROW。现在我主要总结下没有恢复成功可能的原因以及解决方法。
1.不要使用 base64-output=decode-rows 参数
--base64-output=decode-rows
主要是解析 ROW 级别 binlog 日志时使用。
我们解析日志的时候都会使用:
# mysqlbinlog -v --base64-output=decode-rows --start-position=XXX --stop-position=XXX mysql-bin.0000XX
这是我们解析 binlog 日志时使用的命令,我们可以很直观的分析 binlog 日志。
但是我们想要恢复到数据库中的时候,不能使用--base64-output=decode-rows
参数,否则是无法恢复到数据库的。
2.是否使用--skip-gtids=true 参数
--skip-gtids=xxx
的作用为:mysqldump
是否使用--skip-gtids=true
参数,要根据情况来定;
第一种情况:
如果我们是要恢复数据到源数据库或者和源数据库有相同 GTID 信息的实例,那么就要使用该参数。如果不带该参数的话,是无法恢复成功的。因为包含的
GTID 已经在源数据库执行过了,根据 GTID 特性,一个 GTID 信息在一个数据库只能执行一次,所以不会恢复成功。
# mysqlbinlog --skip-gtids=true mysql-bin.000012 |mysql -uroot -p
或者
# mysqlbinlog --skip-gtids=true mysql-bin.000012 > backup.sql mysql -uroot -p < backup.sql
第二种情况:
如果是恢复到其他实例的数据库并且不包含源实例的 GTID 信息,那么可以不使用该参数,使用或者不使用都可以恢复成功。
转自
mysqlbinlog恢复数据注意事项 – UnixFBI 运维特工 http://www.unixfbi.com/499.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?