首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在执行完全备份时,是否可以获得动态mysql数据库的准确位置?

问在执行完全备份时,是否可以获得动态mysql数据库的准确位置?
EN

Database Administration用户
提问于 2015-02-10 18:09:44
回答 1查看 10K关注 0票数 6

我有一个生产数据库,我通常每周运行一次备份。我打开了bin日志以进行增量备份。

生产服务器在西海岸,而营业时间在东海岸。

当我执行完整备份时,我会查询主服务器的is日志和位置。我将这些值放在压缩数据库的zip文件名中。

我很难使用mysqlbinlog从我知道备份已经结束的某个位置创建增量sql文件。

运行Show Master Status,然后运行mysqldump --flush-logs --single-transaction...是否足以获得准确的信息以进行恢复。

我知道理想的设置是备份从数据库,因为锁定不会损害生产环境,但目前我还没有进行切换。

我是不是因为没有锁定所有的表而没有得到理想的结果呢?

提前感谢

编辑

在RolandoMySQLDBA的帮助下,我意识到我没有指向适当的binlog文件。相反,我指向整个目录binlog/bin-log.[0-9]* > sql.txt。所以,我碰到的位置比预期的要早得多。因此,我改变了我的脚本,以提取适当的binlog文件以及位置,这就像一个魅力。

谢谢

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-02-10 18:25:09

当您使用mysqldump时,可以在mysqldump的起始点获取备份的二进制日志坐标。

只需添加-主数据选项

代码语言:javascript
复制
mysqldump --master-data=2 --flush-logs --single-transaction...

使用--master-data=2将以CHANGE MASTER TO命令的形式记录二进制日志文件名和位置。这是作为评论记录下来的。

使用--master-data=1还将以CHANGE MASTER TO命令的形式记录二进制日志文件名和位置。它不是记录为注释,而是记录为在重新加载mysqldump时执行的命令。

在这两种情况下,您都可以在转储的第23行中找到CHANGE MASTER TO命令。我在以前的MySQL Exec_主控_日志_大于读的Pos值_主控_日志_位置帖子中提到过这一点,标题是“但是等等.”

要从名为myfullbackup.sql的mysqldump文件中检索该行,只需运行

代码语言:javascript
复制
head -23 myfullbackup.sql | tail -1 > MasterLogFilePos.sql

CHANGE MASTER TO命令将在其中

如果运行mysqldump

代码语言:javascript
复制
mysqldump --master-data=2 --flush-logs --single-transaction...

母版将继续允许对所有InnoDB表进行读写。

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

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

复制
相关文章

相似问题

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