我有一个生产数据库,我通常每周运行一次备份。我打开了bin日志以进行增量备份。
生产服务器在西海岸,而营业时间在东海岸。
当我执行完整备份时,我会查询主服务器的is日志和位置。我将这些值放在压缩数据库的zip文件名中。
我很难使用mysqlbinlog从我知道备份已经结束的某个位置创建增量sql文件。
运行Show Master Status,然后运行mysqldump --flush-logs --single-transaction...是否足以获得准确的信息以进行恢复。
我知道理想的设置是备份从数据库,因为锁定不会损害生产环境,但目前我还没有进行切换。
我是不是因为没有锁定所有的表而没有得到理想的结果呢?
提前感谢
编辑
在RolandoMySQLDBA的帮助下,我意识到我没有指向适当的binlog文件。相反,我指向整个目录binlog/bin-log.[0-9]* > sql.txt。所以,我碰到的位置比预期的要早得多。因此,我改变了我的脚本,以提取适当的binlog文件以及位置,这就像一个魅力。
谢谢
发布于 2015-02-10 18:25:09
当您使用mysqldump时,可以在mysqldump的起始点获取备份的二进制日志坐标。
只需添加-主数据选项
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文件中检索该行,只需运行
head -23 myfullbackup.sql | tail -1 > MasterLogFilePos.sqlCHANGE MASTER TO命令将在其中
如果运行mysqldump
mysqldump --master-data=2 --flush-logs --single-transaction...母版将继续允许对所有InnoDB表进行读写。
https://dba.stackexchange.com/questions/91619
复制相似问题