binlog日志管理¶
开启binlog¶
下面我们添加了两行内容,一行server-id=1, 如果是单台mysql数据库,那么这个id可以随便写个数字,但如果是集群,则不同的mysql配置的server-id不能相同。
log-bin= 这一行配置的是binlog日志的文件前缀,包括存放地址。 这里我们将binlog日志放在了/mysql-binlog目录下,便于备份和管理,我们也需要先创建这个目录并给予mysql权限。
$ mkdir -p /mysql-binlog
$ chown mysql:mysql /mysql-binlog
$ vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=/mysql-binlog/mysql-bin
然后重启mysql服务
数据库里查看binlog¶
MariaDB [test]> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 881 |
+------------------+-----------+
1 row in set (0.00 sec)
查看binlog文件¶
[root@d ~]# ll /var/lib/mysql/mysql-bin.*
-rw-rw---- 1 mysql mysql 881 Dec 12 13:34 /var/lib/mysql/mysql-bin.000001
-rw-rw---- 1 mysql mysql 19 Dec 12 13:31 /var/lib/mysql/mysql-bin.index
查看binlog文件内容¶
$ mysqlbinlog -v /var/lib/mysql/mysql-bin.000001
下面简单说一下怎么用bin-log恢复数据
mysqlbinlog /var/lib/mysql/BIN-log.000009 --stop-POSITION=1255|mysql -uroot -pMyNewPass4!
mysqlbinlog常见的选项有以下几个:
--start-datetime:从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间
--stop-datetime:从二进制日志中读取指定小于时间戳或者等于本地计算机的时间 取值和上述一样
--start-position:从二进制日志中读取指定position 事件位置作为开始。
--stop-position:从二进制日志中读取指定position 事件位置作为事件截至
备份binlog 时,可以先执行一下mysqladmin flush-logs, 增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.
mysqladmin flush-logs