【问题标题】:MySQL recovery, include binlog position MASTER_LOG_POSMySQL 恢复,包括 binlog 位置 MASTER_LOG_POS
【发布时间】:2019-08-31 08:08:58
【问题描述】:

我像这样运行 MySQL 数据库转储:

mysqldump mydatabase -u root -p --single-transaction --events --routines --quick --master-data=2 --flush-logs --flush-privileges > mydump.sql

这将创建一个转储文件,其中包含以下行:

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=120;

这告诉我任何新的更改都记录在 mysql-bin.000008 开始

然后,我可以在加载我的转储文件后,像这样加载增量文件(假设 mysql-bin.000009 也在某个时候创建​​):

mysqlbinlog mysql-bin.000008 mysql-bin.000009 | mysql -u root -p mydatabase

但是 MASTER_LOG_POS = 120 呢?我是否需要包含它,如果需要,如何包含?我的转储命令包括 --flush-logs 所以它应该已经启动了一个全新的文件。

我正在阅读这里的https://dev.mysql.com/doc/refman/5.7/en/backup-policy.html 和这里的https://dev.mysql.com/doc/refman/5.7/en/recovery-from-backups.html

【问题讨论】:

    标签: mysql mysqlbinlog


    【解决方案1】:

    https://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html#option_mysqlbinlog_start-position 说:

    --开始位置=N, -j N

    在第一个有位置的事件开始读取二进制日志 等于或大于 N。此选项适用于第一个日志文件 在命令行中命名。

    此选项对于时间点恢复很有用。

    【讨论】:

    • 但是你确定它甚至是必要的吗? --flush-logs 参数应该已经启动了一个新的 binlog,并且 MySQL 的备份/恢复说明没有提到需要使用此信息。那时我觉得它在那里很奇怪。
    猜你喜欢
    • 2019-03-15
    • 2020-03-03
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多