MySQL学习之二进制日志

数据安全

比较常见的敏感信息就是密码,当执行改变数据库中表的语句,并且它包含访问这个表所必须的密码的时候,包含密码的事件就会被写入二进制日志。

例:

update employee set pass= password(‘123456’) where email = ‘mats@example.com’;

如果复制是正确的,最好重写这个语句,可以通过以下方法实现:计算和存储哈希密码到用户自定义变量,,然后在表达式中使用它:

set @password =password(‘123456’);

update employee set pass= @password where email = ‘mats@example.com’;

由于set语句没有被复制,密码将不会存储在二进制日志中,而仅在执行该语句的时候存储在服务器内存中。

清除binlog文件

随着时间的推移,服务器会集聚binlog文件,要使服务器自动清理旧的binlog文件,需设置expire-logs-days选项。这个选项可用来作为一个服务器变量,达到你想保留binlog文件的天数,如果希望在重启后仍保持自动清除,必须添加该设置到my.cnf文件。

使用PURGE BINARY LOGS 命令手工清除binlog文件,有如下两种格式:

PURGE BINARYLOGS BEFORE datetime

这个命令格式将清除在给定时间之前的所有binlog文件。如果datetime在一个日志文件的中间,那么datetime所在的那个文件之前的所有文件将被清除。

实战演练:

1、由于是通过日期时间删除,我们先要知道需要删除那个时间之前的二进制日志。

mysqlbinlog –force-if-open–base64-output=never mysql-bin.000003

2、假如我们需要删除2014/09/09之前的日志,执行如下命令:

PURGE BINARY LOGS BEFORE 140909;

PURGE BINARY LOGS TO ‘filename’

这个命令格式将清除在给定文件之前的所有文件。也就是Show master logs 命令输出的所有文件中,在filename之前的文件都将被删除。

实战演练:

PURGE BINARY LOGS TO ‘mysql-bin.000002’;

mysqlbinlog 工具的使用

mysqlbinlog

–short-form只打印被执行的SQL语句信息,忽略关于二进制日志的事件注释信息。

–force-if-open如果binlog文件正在被写入,或因为服务器崩溃,mysqlbinlog都将打印一条警告信息说这个binlog文件没有被正确关闭,这个选项忽略打印警告信息。

–base64-output=never 阻止mysqlbinlog打印base64-encoded事件。

start-position=bytepos转储的第一个事件的字节位置。如果几个binlog是提供给mysqlbinlog的,这个位置将被解释为在序列号中第一个文件的位置。

stop-position=bytepos最后打印的事件的字节位置,如果给定了多个binlog文件,该位置将是序列中最后一个文件的位置。

start-datetime=datetime只打印那些有时间戳或datetime后的事件。

stop-datetime=datetime只打印那些有时间戳或datetime前的事件。

读取远程文件实例:

mysqlbinlog –read-from-remote-server –host=192.168.18.202 –base64-output=never –user=repl_user –password –start-position=386 –stop-position=643 mysqld-bin.000001

我们接下来使用mysqlbinlog来读取一个二进制日志文件:

mysqlbinlog –force-if-open–base64-output=never /mylogbin/mysql-bin.000001 | cat -n

1 /*!50530 SET@@SESSION.PSEUDO_SLAVE_MODE=1*/;

2 /*!40019SET @@session.max_insert_delayed_threads=0*/;

3 /*!50003SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

4 DELIMITER/*!*/;

5 #at 4

6 #141015 9:03:53 server id 1 end_log_pos 245 Start: binlog v 4, server v 5.5.32-MariaDB-log created141015 9:03:53 at startup

7 ROLLBACK/*!*/;

8 #at 245

奋斗令我们的生活充满生机,责任让我们的生命充满意义!

MySQL学习之二进制日志

相关文章:

你感兴趣的文章:

标签云: