甲方提出业务服务器的mysql日志要本地备份或者上传日志服务器,以及要具备回滚、恢复功能。问了度娘后,同甲方商量、建议,保存binlog日志30天且每月全量备份一次。

     mysql的日志主要有错误日志(error-log)、查询日志、事务日志和二进制日志,重要的或者常用的是事务日志和二级制日志。基于甲方的需求,开启二进制日志,并测试恢复功能。

      二进制binlog日志,主要有主从复制和数据恢复这两个功能,mysql默认只开启error日志。在虚拟机上测试:

     1)本地连接mysql,输入 show variables like '%log%;回车可以看到log_bin的状态是OFF,在/etc/my.cnf的[mysqld]新增一条log-bin=/var/lib/mysql/mysql-bin,数据库重启后,就会在/var/lib/mysql下生成mysql-bin.000001和.index两个文件。同时log_bin的状态也是ON

      2)在test库中新建t1表,插入几行数据,因为默认autocommit开启,执行之后不需要commit,即生效(不在缓存里)。此时mysql-bin.000001的大小发生了改变,使用mysqlbinlog mysql-bin.000001可以查看到具体的操作。  

       3)drop test库,show binlog events,查看drop动作的start position和stop position。但是由于binlog恢复数据的原理就是重新执行一遍binlog记录的操作,因此会提示没有test这个库,记录的操作就没有办法再执行。


      4)所以需要每月定期mysqldump相关的数据库,如果出现误操作或其他,就能通过备份和binlog日志来恢复。