mysql5.7 innodb引擎日志系统相关参数

错误日志(error log)

        记录mysql启动、关闭、运行期间发生的错误及警告相关信息,当mysql出现问题时可通过排查错误日志定位具体问题。

        查看错误日志位置:show  global variables like 'log_error';

        修改错误日志位置:修改my.cnf中log-error路径

通用日志(general log)

        记录服务端收到的每个命令,由于会记录所有命令,开启会对性能造成影响,默认关闭。可通过以下方式配置使用

使用命令
show global variables like  '%general%'; 查看通用日志相关参数
    general_log :是否开启通用日志
    general_log_file 通用日志文件位置

set global general_log=on; -- 开启
set global general_log=off; -- 关闭
set global general_log_file='/data/mysql/log/general.log' -- 设置日志路径

show variables like 'log_output'; -- 查看通用日志记录格式,分为file,与table两种
set global log_output='file'; -- 使用文件方式保存日志
set global log_output='table'; -- 使用表方式保存日志,会保存到mysql库的general_log表中

使用配置文件
[mysqld]
general_log = 1  默认为0不开启,1开启
general_log_file = /data/mysql/log/general.log 

慢查询日志(slow query log)

        开启后会记录超过long_query_time查询时间的sql语句,可通过如下方式使用

使用命令
show global variables like '%slow%'; -- 查看慢查询日志相关配置
     log_slow_admin_statements :ddl慢查询是否开启          
     log_slow_slave_statements :从库慢查询是否开启                   
     slow_launch_time :创建线程的阈值,超过该时间slow_launch_time+1                            
     slow_query_log :慢查询是否开启                      
     slow_query_log_file:慢查询日志位置

show global variables like 'long_query_time'; -- 查看慢查询时间
set global long_query_time=3; -- 设置慢查询时间
set global slow_query_log=on; -- 开启
set global slow_query_log=off; -- 关闭
set global slow_query_log_file='/data/mysql/log/slow.log' -- 设置日志路径

show variables like 'log_output'; -- 查看日志记录格式,分为file,与table两种
set global log_output='file'; -- 使用文件方式保存日志
set global log_output='table'; -- 使用表方式保存日志,会保存到mysql库的slow_log表中


使用配置文件
[mysqld]
slow_query_log = 1 0不开启,1开启
slow_query_log_file = /data/mysql/log/slow.log 
long_query_time = 3  

中继日志(relay log)        

        用于主从同步,从库读取主库二进制日志并且保存到本地,然后从库线程读取relay log日志内容在从库中执行。日志格式与binlog相同可通过mysqlbinlog读取

使用命令
show global variables like '%relay%'; -- 查看中继日志相关配置
    max_relay_log_size :日志最大值,为0时等于max_binlog_size,不为0时,当日志超过此大小循环写入。      
    relay_log:中继日志名称,为空是在数据文件目录下,文件名为host_name-relay-bin            
    relay_log_basename:中继日志文件的基本名称和完整路径    
    relay_log_index:中继日志索引文件的名称           
    relay_log_info_file :设置relay-log.info的位置和名称     
    relay_log_info_repository :中继日志类型table或file 
    relay_log_purge:是否自动清空中继日志,默认开启          
    relay_log_recovery :从库宕机,relay log损坏,导致一部分中继日志没处理,则放弃所有未执行的relay log,重新从主库获取,使用时需要开启relay_log_purge       
    relay_log_space_limit :中继日志的最大空间量   
    sync_relay_log:刷盘策略,为0时不主动刷盘,依赖操作系统定期刷盘,为1时表示每次写入都刷盘      
    sync_relay_log_info:与sync_relay_log类似,刷盘时机取决于是否有事务

可通过 set global修改对应参数
set global sync_relay_log=1; -- 修改刷盘策略
set global relay_log_purge=off; -- 关闭




使用配置文件
[mysqld]
relay_log_purge= 1 0不开启,1开启
sync_relay_log= 1

回滚日志(undo log)

        innodb 特有,在数据变动时,将对变动进行逆向记录,用来保证事务原子性以及实现mvcc。


show global variables like '%undo%'; 
    innodb_max_undo_log_size :日志最大值,默认1G,开启innodb_undo_log_truncate后会进行自动回收
    innodb_undo_directory:日志位置,默认数据目录(datadir)下           
    innodb_undo_log_truncate:是否开启自动回收。开启后需要innodb_undo_tablespaces大于2才可以回收。   
    innodb_undo_logs:回滚段数量默认为128,innodb_undo_logs>=35,32个给临时表空间使用,1个给系统表空间使用,2个给自动回收表空间使用,由于每个回滚段由1024个undo segment组成,该值为128则最大事务为 93*1024
    innodb_undo_tablespaces:表示undolog对应的表空间文件的个数



重做日志(redo log)

        innodb 特有的引擎层物理日志,用来保证事务持久性,redo log 包括内存缓冲区(innodb_log_buffer_size)与磁盘日志文件(innodb_log_file_size ),在写磁盘日志文件时采用循环写入方式,当写到结尾时,会回到文件头覆盖写入。由于磁盘日志为顺序写入,可以提高性能。

show global variables like '%innodb_flush_log_at_trx_commit%'; -- 查看redo log 刷盘策略,
为0时表示每次事务提交都把写入redo log buffer中
为1时每次事务提交都写入 redo log file中进行刷盘,保证数据一致性
为2时每次提交事务都写入redo log file中但是不进行刷盘,此时数据在磁盘缓存(page chche)中

show global variables like '%innodb_flush_log_at_timeout%';
日志刷盘时间,默认1秒


show global variables like '%innodb_log%';
    innodb_log_buffer_size:redo log内存区大小
    innodb_log_checksums:是否启用重做日志的校验
    innodb_log_compressed_pages:是否启用压缩
    innodb_log_file_size:每个日志文件大小
    innodb_log_files_in_group:日志文件数量,可在innodb_log_group_home_dir下查看,默认两个ib_logfile0,ib_logfile1
    innodb_log_group_home_dir:日志文件路径
    innodb_log_write_ahead_size:预写块大小,以字节为单位。避免read-on-write


二进制日志(binlog)

        server层逻辑日志,记录sql语句的逻辑,在事务执行过程中,先写入到binlog cache,事务提交时再把binlog cache写入到binlog文件中,之后删除binglog cache中内容,当binlog cache不够大时,会先写入磁盘临时文件。binlog文件为追加写入,当文件写到一定大小写下一个文件。

        

SHOW GLOBAL  VARIABLES LIKE "%binlog%"
    binlog_cache_size:每个线程binlog cache 大小,必须是4096倍数
    binlog_checksum:验证算法,默认为crc32,为每一个binlog event写一个校验码,设置为none时只校验长度,不生成校验码。
    binlog_direct_non_transactional_updates:对非事务表操作是否记入binlog,个人理解用处不大,此参数只在binlog_format为statement时生效。
    binlog_error_action:默认为ABORT_SERVER写入binlog失败时主动关闭实例,重启时恢复,也可设置为IGNORE_ERROR写入binlog失败时不写入,继续对外提供服务
    binlog_format:分为statement,row,mixed格式,
        statement记录sql不保证数据一致性。
        row记录行记录,但比较费空间,保证数据 一致性。
        mixed为混合模式,由mysql判断存储sql还是行记录。
    binlog_group_commit_sync_delay:组提交延迟时间。
    binlog_group_commit_sync_no_delay_count:组提交延迟数量,累计到延迟数量忽略组提交延迟时间设置。
    binlog_gtid_simple_recovery:是否开启gtid简单恢复。
    binlog_order_commits:binlog记录顺序是否与事务顺序相同。
    binlog_row_image:控制binlog记录详细程度,binglog记录为row格式下生效
        full :记录一行数据所有列信息。
        minimal :只记录该行唯一表示和被修改的信息
        noblob :记录一行数据所有列信息BLOB 和 TEXT类型除外
    binlog_rows_query_log_events:对于row格式的binlog模式,是否记录binlog对应的SQL
    binlog_stmt_cache_size:线程私有,控制事务里有非事务语句缓存区大小。
    binlog_transaction_dependency_history_size:保存事务哈希值上限
    max_binlog_cache_size:与binlog_cache_size类似,每个线程binglog cache超过max_binlog_cache_size设置会抛异常。
    max_binlog_size:binlog日志文件大小,超过此值会打开新文件继续写入。
    max_binlog_stmt_cache_size:与binlog_stmt_cache_size类似,超过会抛异常
    sync_binlog:binlog:刷盘策略
        sync_binlog=0,禁止binlog刷盘,依赖操作系统刷盘。
        sync_binlog=1,每次提交事务都进行刷盘。
        sync_binlog=N,写入N次进行刷盘。

SHOW GLOBAL  VARIABLES LIKE "%log_bin%"
    log_bin:是否开启binglog
    log_bin_basename:binlog文件路径名称
    log_bin_index: binglog:索引文件路径名称
    log_bin_trust_function_creators:是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。
    log_bin_use_v1_row_events:是否启用版本2日志记录,mysql5.6.6以前使用版本1
    
    
    

 set global设置参数到内存中,重启失效,并且有些不能通过set global修改,需要修改my.cnf文件

你可能感兴趣的:(mysql,mysql,数据库)