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

时间:2016-02-21 13:45:44

标签: mysql logging logfile

我有一个带有激活二进制日志记录的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没有增量备份的选项,而实际上 的二进制日志是增量备份 - 或者至少可以看作是。 因此,每周三我都会通过刷新和复制binlog文件来进行增量备份:

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命令来获取它们。 唯一的方法似乎是使用“常规”Unix命令复制它们,例如cprsync用户root。这是真的吗?

我知道还有其他方法可以进行备份,例如MySQL Enterprise的内容或只是备份/var/lib/mysql目录。我只是好奇。

1 个答案:

答案 0 :(得分:2)

您可以使用mysqlbinlog utility管理二进制日志文件,包括将它们复制到其他位置。在mysql中,您可以使用show binlog events command访问二进制日志中的大部分内容。