首页>>帮助中心>>香港vps服务器的MySQL日志管理

香港vps服务器的MySQL日志管理

2023/8/14 298次

香港vps服务器的MySQL日志管理

1.1 错误日志

文件名:可用–log-error[=file_name]指定,否则默认使用hostname.err

内容:记录mysqld启动和停止时,以及服务器发生任何严重错误时记录相关信息

1.2 二进制日志

文件名:也是binlog(逻辑日志),可用–log-bin[=file_name] 指定,默认为主机名

内容:包含了所有更新了或者潜在更新了数据的所有语句,语句以事件的形式保存,描述数据更改文件位置和格式

查看日志:

mysqlbinlog log-file

删除日志:

#删除所有的binlog日志,新日志从头开始编号

RESET MASTER

#删除mysql-bin.010之前的所有日志

PURGE MASTER LOGS TO 'mysql-bin.010'

#删除2022.5.1之前的binlog日志

purge master logs before '2022-05-01 08:00:00';

1.3 查询日志

文件名:使用–log指定,默认hostname.log

内容:记录客户端所有查询语句记录,在二进制日志不存在查询语句记录

1.4 慢查询日志

文件名:使用–log-slow-querie指定,默认*-slow.log,写入data目录

内容:记录执行时间超过long_query_time秒的SQL查询日志文件

其它选项:–log_slow_admin_statements:表示将慢管理语句,如OPTIMIZE TABLEANALYZE TABLEALTER TABLE写入慢查询语句

1.5 通用查询日志

查看:show variables like '%general_log%';

执行SQL命令 set global general_log=on; 开启

文件:默认存放在data目录下hostname.log文件

内容:记录客户端的所有查询行为

1.6 中继日志

文件:默认文件名hostnamet-relay-bin,存放在data目录下

功能:从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致

参数:show variables like '%relay%';

max_relay_log_size

relay log 允许的最大值,如果该值为0,则默认值为 max_binlog_size (1G)

如果不为0,则 max_relay_log_size 则为最大的relay_log文件大小

relay_log

定义 relay_log 的位置和名称,如果值为空,则默认位置在数据文件的目录

relay_log_index

定义 relay_log 索引的位置和名称,记录有几个 relay_log 文件,默认为2

relay_log_info_file

定义 relay-log.info 的位置和名称,relay-log.info 记录 master 主库的 binary_log 的恢复位置和 从库 relay_log 的位置

relay_log_purge

是否自动清空中继日志,默认值为1(启用)

relay_log_recovery

slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启

sync_relay_log

当设置为1时,slaveI/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O

当设置为0时,并不是马上就刷入中继日志里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改

sync_relay_log_info

这个参数和 sync_relay_log 参数一样

1.7 审计日志

内容:企业版自带功能,社区版需使用audit审计插件完成数据库审计工作

开启步骤:

下载插件:https://github.com/mcafee/mysql-audit

查看插件功能是否开启: show variables like "%audit%";

开启插件功能:set global audit_json_file=1;

注意,使用此方法开启对global全局变量的设置仅对于新开启的会话才是有效的,对已经开启的会话不生效,参数最终需持久化到my.cnf配置文件中

开启后,在MySQL数据目录下会多出一个mysql-audit.json审计日志

2 InnoDB日志

2.1 重做日志 (Redo Log)

文件:默认情况下,对应的物理文件位于数据库的data目录下的ib_logfile1&ib_logfile2

内容:物理日志,记录物理数据页面的修改信息,redo log顺序写入redo log file物理文件中

重做日志有一个缓冲区Innodb_log_bufferInnoDB优先将重做日志写入缓冲区,日志写盘通常有三种方式:

Master Thread 每秒一次执行刷新Innodb_log_buffer到重做日志文件

每个事务提交时会将重做日志刷新到重做日志文件。

当重做日志缓存可用空间 少于一半时,重做日志缓存被刷新到重做日志文件

因此,重做日志的写盘,并不一定是随着事务的提交才写入重做日志文件的,而是随着事务的开始逐步开始的,这可以很好地解释再大的事务的提交(commit)的时间也是很短暂的

事务产生的重做日志,通过innodb_flush_log_at_trx_commit参数控制:

设置为 0 的时候,表示不写入buffer,直接每秒写入到redo file中,但mysql 崩溃会丢失1s数据

设置为 1 的时候,表示每次事务提交时都将 redo log 直接持久化到磁盘

设置为 2 的时候,表示每次事务提交时都只是把 redo log 写到 page cache,由OS处理回写磁盘操作,OS宕机会丢失数据

2.2 回滚日志(Undo Log)

文件:逻辑日志,记录在表空间中

MySQL5.6之前,undo表空间位于共享表空间的回滚段中,共享表空间的默认的名称是ibdata,位于数据文件目录中

MySQL5.6之后,undo表空间可以配置成独立的文件,但是提前需要在配置文件中配置,完成数据库初始化后生效且不可改变undo log文件的个数

内容:记录数据的逻辑变化,一条INSERT会对应一条DELETEundo log,发生错误时能够恢复到事务之前的数据状态

undo logMVCC(多版本并发控制)实现的关键

一诺网络香港免备案专区,提供「香港增强VPS」和「香港特惠VPS」两种类型的高可用弹性计算服务,搭载新一代英特尔®至强®铂金处理器,接入CN2低延时高速回国带宽线路,网络访问顺滑、流畅。机房网络架构采用了BGP协议的解决方案可提供多线路互联融合网络,使得不同网络运营商线路的用户都能通过最佳路由实现快速访问。香港云VPS低至29/月,购买链接:https://www.enuoidc.com/vps.html?typeid=2