MariaDB日志 ======================================================================================================================================= 日志 1、日志类型 查询日志 query log 慢查询日志 slow query log 错误日志 error log 二进制日志 binary log 中继日志 reley log 事务日志 transaction log 2、查询日志 记录查询操作的日志。记录日志可以记录在文件或者MySQL数据库表中。 general_log = OFF # 定义是否启用查询日志。是一个global参数,立即生效 general_log_file = node2.log # 查询日志保存位置路径,路径可以自行修改。默认保存在数据库目录,是一个文本文件。 log_output = FILE # 日志输出格式,可以是 FILE|TABLE|NONE。如果为NONE值,则无论上述两个指定的值为什么, 都不记录。如果是TABLE,则记录到mysql.general_log表中。 3、慢查询日志 slow query log 查询时长超出[指定时长的查询操作],通常建议启用。 long_query_time = 10.000000 # 慢查询时长。单位默认是秒 log_slow_queries = OFF # 是否记录慢查询日志 slow_query_log = OFF # 是否启用慢查询日志 slow_query_log_file = node2-slow.log # 慢查询日志文件保存位置路径 log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk # 慢查询日志过滤器 log_slow_rate_limit = 1 # 记录速率 log_slow_verbosity # 记录详细级别 4、错误日志 error log 记录内容: 服务器关闭启动等产生的信息 mysqld运行中产生的错误信息 事件调度器运行一个 event 时产生的日志信息 主从复制架构中的从服务器上复制线程启动关闭时产生的信息 SELECT @@global.log_error; log_error = /var/log/mariadb/mariadb.log|OFF # 错误日志记录路径位置 log_warnings = ON|OFF # 是否记录警告信息到错误日志 5、二进制日志 binary log 记录导致数据改变或者潜在导致数据改变的SQL语句。可以通过[重放]日志文件中的时间生成数据副本。 查看二进制格式: SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] 查看二进制文件: SHOW BINARY LOGS; # 查看所有二进制文件列表 SHOW MASTER LOGS; # 查看所有二进制文件列表 SHOW MASTER STATUS; # 查看当前正在使用的二进制文件 SHOW BINLOG EVENTS IN 'mysql-bin.000002'; # 查看二进制文件内容 二进制日志记录格式: 基于语句的记录 statement 基于行的记录 row 混合模式 mixed 系统自行判定用何种方式记录 二进制日志文件构成: 日志文件:mysql-bin.0000001 索引文件:mysql-bin.index # 用来追踪当前MySQL正在使用的二进制文件 服务器变量: log_bin = /path/to/bin_log_file # 启用并定义二进制文件文件名。建议将二进制日志存放到特定的存储设备或位置 sql_log_bin = ON # 如果设置为0(默认值为1),则不会为客户端记录二进制日志。只有具有SUPER权限的客户端才能更新此变量。 binlog_format = MIXED # 二进制日志的格式。STATEMENT|ROW|MIXED 默认值:STATEMENT (<= MariaDB 10.2.3) MIXED (>= MariaDB 10.2.4) max_binlog_size = 1073741824 # 定义单个二进制日志文件的最大值,大于最大值后会自动滚动,日志文件可能小于此值或大于此值就滚动 如果写入后二进制日志超过此大小,则服务器通过关闭它并打开新的二进制日志来滚动它。单个事务将始终存储在同一个二进制日志中,因此服务器将在旋转之前等待打开的事务完成。默认大小为1G,1073741824,设置范围可以是4096 to 1073741824 (4KB to 1GB) expire_logs_days = 0 # 可以自动删除二进制日志的天数。默认为0,或者不自动删除。使用复制时,应始终将其设置为高于任何从节点的最大延迟。范围可以是0 to 99 sync_binlog = 0 # 在发生多少事务之后MariaDB将二进制日志同步到磁盘。默认为0,即每个事务都同步磁盘。其范围可以是Range: 0 to 4294967295 二进制日志格式: 读取并显示二进制日志的工具:mysqlbinlog 使用格式:mysqlbinlog [options] log-files 选项: --start-position=# -j --stop-position=# --start-datetime="171030 19:03:07" --stop-datetime=name {254字节文件头} # at 900 # 时间起始位置 #171031 20:14:18 server id 1 end_log_pos 1010 Query thread_id=20 exec_time=0 error_code=0 # 事件发生日期和时间 171031 20:14:18 # 事件发生的服务器标识,唯一ID server id 1 # 事件结束位置 end_log_pos 1010 # 事件类型:Query # 事件发生时所在服务器执行时间的线程ID:thread_id=20 # 语句的时间戳与将其写入二进制文件中的时间差:exec_time=0 # 错误代码:error_code=0 SET TIMESTAMP=1509452058/*!*/; # 事件内容 CREATE TABLE table2(name char(20),age int) /*!*/; 6、中继日志 reley log 复制架构中,从服务器用于保存主服务器的二进制日志中读取的事件。 7、事务日志 transaction log 事务性存储引擎自行管理和使用。 客户端发起对数据库的操作后,会引发大量的随机I/O操作,从而影响数据库的性能。为了解决这个问题,MySQL将操作顺序存储到一个存储空间中, 事实上,这个存储空间是在内存的。将所有查询语句缓冲到内存的空间中。对于InnoDB存储引擎而言,内存中的空间叫 buffer pool。 buffer pool空间不能够太大,如果增加到一定的量后,系统奔溃就会使得事务日志丢失。 日志文件组循环利用,循环同步到磁盘。 innodb_log_file_size = 50331648 # 事务日志大小 innodb_log_files_in_group = 2 # 事务日志文件组个数ib_logfile0 ib_logfile1 innodb_log_group_home_dir = ./ # 事务日志文件存放目录 ======================================================================================================================================