使用前滚日志的增量备份:如何使用 MySQL 命令获取日志?

Incremental backup with rollforward logs: How to get the logs with MySQL commands?

我有一个 MySQL 数据库,其中激活了二进制日志记录(即前滚日志)。日志(默认情况下)位于 /var/log/mysql 中,仅供 mysqlroot 用户访问。

我每个星期天都使​​用这样的 cronjob 进行(完整)备份:

mysqldump -u root --flush-logs $database > $database.sql
mysql -u root -e 'purge binary logs before now();'
            # or "reset master", which is the same

我知道mysqldump没有增量备份的选项,二进制日志实际上增量备份——或者至少可以这样看。 所以每个星期三我都会通过刷新和复制二进制日志文件来进行增量备份:

mysql -u root -e 'flush binary logs;'
cp /var/log/mysql/mysql-bin.* $some_backup_path

(此处省略整理当前binlog的代码)

有多种命令可以检查 binlog 文件,例如

show binary logs;                    -- display
flush binary logs;                   -- start a new one
reset master;                        -- delete all and start over
purge binary logs before $some_date; -- delete older logs

但是,似乎没有 MySQL 命令来 获取 它们。 唯一的方法似乎是使用 "regular" Unix 命令复制它们,例如 cprsync 作为用户 root。是真的吗?

我知道还有其他方法可以进行备份,例如 MySQL 企业资料或简单地备份 /var/lib/mysql 目录。我只是好奇。

您可以使用 mysqlbinlog utility to administer binary log files, including copying them to another location. Within mysql you can use show binlog events command 访问二进制日志中的大部分内容。