mysql使用binlog恢复数据的时候,如何确定起始位置

[复制链接]
查看11 | 回复6 | 2015-3-6 11:57:31 | 显示全部楼层 |阅读模式
我用xtrabackup将数据库还原了,但是我还需要应用一些binlog日志恢复到某一时间点,这样我应用binlog恢复的时候,如何确定起始位置呢?难道没有类似oracle的scn么?
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
有两组参数,一组是根据LOG位置控制的,一组是根据时间控制的
--start-datetime='YYYY-MM-DD HH:MM:SS' 和--stop-datetime='YYYY-MM-DD HH:MM:SS'
--start-position=NUM1 和--stop-position=NUM2
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
这个我也知道,但如何精确的确定起始时间呢?要知道mysql实际上用的是sql语句来重新执行来达到恢复的效果的,如果我的起始时间差了一秒,那么这一秒所有sql都没执行,而剩余所有的sql都错误的执行了,那岂不是灾难啊?
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
我也想知道,有没有方法可以严格正确的控制。
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
那就看你自己如何确定了,需要具体情况具体分析,比如:
执行了一条错误的SQL语句S,那就需要去二进制日至中寻找此语句的Position了,这是最准确的,因为时间只精确到了秒(timestamp类型 )
你要知道S语句大概啥时间段执行的....这些时跟你的出错情况有关系,需要自己根基实际情况分析得到 然后确认 甚至还需要取舍
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
好多程序员都说mysql很简单,简单是简单,但发生灾难是要付出代价的。
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
xtrabackup 备份的时候,是有记录当时MASTER LOG的状态的,文件名:  xtrabackup_binlog_info
你从这个LOG位置开始恢复即可
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行