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

使用前滚日志的增量备份:如何使用MySQL命令获取日志?,mysql,logging,logfile,Mysql,Logging,Logfile,我有一个MySQL数据库,带有激活的二进制日志记录(即前滚日志)。日志(默认情况下)位于/var/log/mysql中,只有用户mysql和root可以访问该日志 我每个星期天都会用这样的cronjob进行(完整)备份: mysqldump -u root --flush-logs $database > $database.sql mysql -u root -e 'purge binary logs before now();' # or "reset mast

我有一个MySQL数据库,带有激活的二进制日志记录(即前滚日志)。日志(默认情况下)位于
/var/log/mysql
中,只有用户
mysql
root
可以访问该日志

我每个星期天都会用这样的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命令复制它们,如
cp
rsync
作为用户
root
。这是真的吗?


我知道还有其他的备份方法,比如MySQL企业版的东西,或者只是备份
/var/lib/MySQL
目录。我只是好奇。

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

获取日志的确切含义是什么?请注意,对于某些表类型,复制
/var/lib/mysql
效果不好。您将丢失内存中任何尚未提交的内容。@将它们复制到本地文件系统中,并将其复制到我选择的目录中。比如
mysqldump
将DDL和完整数据提取到我选择的文件中。是的,这是真的。有无数的OS命令可以通过网络复制文件,但没有一个是专门为MySQL编写的。MySQLDump只提供了与std-mysql客户端类似的Host/User/PW。@ethrbunny很好。但是,如果我在一个维护窗口内关闭整个数据库几分钟,对我(和我的用户)来说是可以的。实际上,我的完全备份非常快(<3秒),根本不需要增量备份。我这样做是为了好玩和学习,所以我知道时间到了。啊,我没有意识到
显示binlog事件。非常感谢。我知道
mysqlbinlog
,因为它对应用binlog至关重要。它工作得很好,但我认为它只适用于本地文件。但当你给我指那些文件时,我注意到了这个选项。我想那正是我想要的。二进制形式的二进制日志无论如何都是无用的。