我有一个带有激活二进制日志记录的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 Enterprise的内容或只是备份/var/lib/mysql
目录。我只是好奇。
答案 0 :(得分:2)
您可以使用mysqlbinlog utility管理二进制日志文件,包括将它们复制到其他位置。在mysql中,您可以使用show binlog events command访问二进制日志中的大部分内容。