首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysqlbinlog恢复表wise

mysqlbinlog恢复表wise
EN

Database Administration用户
提问于 2015-02-01 05:18:20
回答 1查看 2.2K关注 0票数 1

我将使用日志文件恢复我的MySQL数据库表。我的数据库名是"decsys“。

我已经使用日志文件创建了sql。

代码语言:javascript
运行
复制
C:\wamp\bin\mysql\mysql5.5.8\bin>mysqlbinlog  -d decsys C:\wamp\bin\mysql\mysql5.5.8\data\mysql-bin.0000xx > sql1.sql (file size 8GB)

我要恢复的不是整个数据库,只有一个表。(表名:cm)。

EN

回答 1

Database Administration用户

发布于 2015-02-01 23:40:48

最可靠的方法是将所有数据库--整个服务器--还原到另一台机器上,方法是加载备份(转储)文件并回放适当的日志,从转储开始的binlog坐标开始.然后使用mysqldump提取一个感兴趣的表,并将其复制到所需的目标。

无论如何,你必须首先从备份中恢复一些东西--我假设你理解,但没有提到。回放二进制日志可以捕获还原备份和日志结束之间发生的事件。

据我所知,播放单个表的行事件是不支持的。但是,即使以这种方式恢复单个数据库(模式)也是一项复杂的操作。

只有当创建日志条目的服务器上的--database-d设置为ROW时,mysqlbinlogbinlog_format选项才能准确地确定所需的数据库;或者,如果二进制日志是由启用log_slave_updates的副本生成的,则级联中至少有一个服务器(包括最后一个服务器)将其binlog_format设置为ROW,因为这会将复制事件强制转换为ROW格式,这是一个单向进程。

如果事件没有以ROW格式登录,那么在没有服务器上的所有其他数据的情况下,无法保证二进制日志的正确工作。如果--database-d选项没有以ROW格式登录,也不可能确定它们是否会捕获所有语句,因为它们与USE语句的交互以及MySQL如何解释复制事件的其他复杂问题。

这并不意味着mysqlbinlog被破坏,只意味着它是一个高级工具,只能在复制工作方式的约束下使用。

二进制日志格式是为将更改从一台服务器复制到另一台服务器而设计的,并且只包含足够的信息,当所讨论的两台服务器以相同的数据集开始时--因此引用从备份恢复。

另外,在生产系统中回放二进制日志并不是你想要做的事情,除非你的生产系统被损坏得如此严重,以至于你别无选择,只能从备份中完全重新加载它,并且想要通过可用的日志进行回放,以尽量减少丢失的数据量。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/90723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档