数据库原理及MySQL应用 | 日志管理(附限免视频)( 二 )


(2)查看服务器上所有的二进制日志的基本语法格式如下所示 。
3.自动清除过期的二进制日志
可用以下方法设置二进制日志的到期时间 , 到期后系统会自动清除过期的二进制日志文件 。
(1)在配置文件my.ini的[mysqld]组下加入以下变量声明 , 并重新启动服务器来设置二进制日志的到期天数 。
(2)通过全局系统变量expire_logs_days设置日志的到期天数 , 例如:设置到期时间为5天 , 可用以下命令 。
(3)通过全局系统变量binlog_expire_logs_seconds设置日志的到期秒数 , 例如:同样想设置到期时间为5天 , 可用以下命令 。
若想禁止到期自动清除二进制日志 , 可将这两个变量的值设置为0 。
4.手动清除二进制日志
(1)手动清除指定二进制日志文件之前的所有文件 , 基本语法格式如下所示 。
(2)手动清除所有的二进制日志文件 , 并重新创建新的二进制日志文件 , 基本语法格式如下所示 。
5.强制开启新的二进制日志文件
强制结束当前二进制日志文件 , 并开启新的二进制日志文件 , 基本语法格式如下所示 。
6.禁用当前会话的二进制日志
如果不想当前会话的SQL语句被记录到二进制日志中 , 可用SET命令禁用当前会话的二进制日志 , 基本语法格式如下所示 。
语法说明如下 。 值设置为0表示禁用当前会话的二进制日志 。 值设置为1表示重新启用当前会话的二进制日志 。
7.查看二进制日志文件内容
不能直接打开二进制日志文件查看二进制日志 , 因为它是以二进制方式存储的 , 必须在DOS命令提示符窗口下使用mysqlbinlog命令进行查看 , 基本语法格式如下所示 。
提示/在配置文件my.ini中将"default-character-set=utf8mb4"修改为"character-set-server=utf8mb4" , 但是这需要重启MySQL服务 , 如果MySQL服务正在忙 , 代价会比较大 。 用"mysqlbinlog--no-defaultspath\filename"命令 。
8.设置二进制日志格式
可以用SET命令更改系统变量BINLOG_FORMAT的值来改变二进制日志中的记录格式 , 基本语法格式如下所示 。
语法说明如下 。 SET@@SESSION.BINLOG_FORMAT表示设置当前会话的BINLOG_FORMAT变量的值 , 无须断开会话重新连接 。 SET@@GLOBAL.BINLOG_FORMAT表示设置全局范围的BINLOG_FORMAT的值 , 必须断开会话重新连接 , 才能生效 。 STATEMENT|ROW|MIXED , 是二进制日志中的记录格式 , 包括以下3种选项 。 ◇STATEMENT:表示在二进制日志中记录原始的SQL语句 , 优点是日志量小 , 缺点是执行一些不确定的函数(如UUID、NOW等)可能会出现主从数据不一致问题 。 ◇ROW:表示记录的不是SQL语句 , 而是表中记录的更改情况 , 优点是解决了STATEMENT格式下主从数据不一致的问题 , 所有数据都可以安全地复制 , 缺点是日志量大 , 会影响从库日志的复制时间 , 但可以通过设置参数"binlog_row_image=MINIMAL"来减少日志的生成量 。 ◇MIXED:表示以STATEMENT+ROW的混合格式记录执行的语句 。 ◇MySQL默认采用STATEMENT格式进行二进制日志文件的记录 , 但出现以下情况会使用ROW格式 。 ◇使用了UUID、USER、CURRENT_USER、FOUND_ROWS、ROW_COUNT等不确定函数 。 ◇使用了INSERTDELAY语句 。 ◇使用了用户自定义函数 。 ◇使用了临时表 。
设置完系统变量BINLOG_FORMAT的值后 , 可用以下命令查看当前日志格式 。
【例10-1】使用mysqlbinlog命令查看二进制日志 。
(1)登录MySQL , 新建一个会话窗口 , 手动清除所有的二进制日志文件后 , 将BINLOG_FORMAT变量的值设为STATEMENT , 并进行验证;然后对数据库的数据表执行修改操作 。
(2)用cmd命令进入DOS命令提示符窗口 , 切换到二进制日志文件所在的目录(Data文件夹) , 查看最新的二进制日志 。