zoukankan      html  css  js  c++  java
  • MySQL 日志

    系统参数
    系统变量variables
    • 数据库的配置信息,分为session级和global级别,可以动态或静态改变,也可以用--选项来在启动时设
    置参数
    • show global variables like '%slow%';
    状态变量status
    • 数据库运行状态的记录,揭示了数据库SQL数量,连接, I/O负载,缓存使用,文件FD等即时状态量。也分为session级和global级别,无法改变。
    • show global status like 'com_select';
    查看帮助详细信息
    设置my.cnf进入数据库
    创建参数文件进入数据库
    [mysql@mysql5 ~]$ mysql_config_editor set --login-path=test --user=root --password --socket=/mysqldb/db_slave/mysql.sock
    Enter password:
    [mysql@mysql5 ~]$ mysql --login-path=test
    默认读取配置文件的顺序
    /etc/my.cnf
    /etc/mysql/my.cnf
    $basdir/etc/my.cnf
    ~./.my.cnf
    针对拥有global session两个级别的变量,gloabl的改变只影响新增session,不映像现有的session,例如:autocommit。
    日志文件
    general log
    • 记录数据库全部的SQL(包括错误的),连接信息,启动和关闭服务,按照时间顺序记录
    • 数据量巨大
    • 默认关闭,防止大量日志沾满空间
    • mv之后要flush logs
    参数
    • general_log #控制是否开启,动态调整
      • (默认关闭) {0-关闭,1-开启} 可以在线打开和关闭;
      • set global general_log=‘ON’;
    • general_log_file #控制日志路径,动态调整
    • 默认路径为datadir/hostname.log
    • log_output={TABLE | FILE | NONE}
      • TABLE:便于统计,写入一个CSV引擎的表中。
      • FILE:默认。
      • NONE:任何地方都不写。
    注意:如果log_output=NONE但是general_log为1,则默认不写常规日志。
    格式
    格式如下:
    • Event_time每秒第一次query打印
    • Query发出时记录
    • 错误的,失败的,成功的均会记录
    • 数据库的流量日志
    关于表mysql.general_log表:
    • select * from mysql.general_log;
    • 表mysql.general_log不支持insert, update和delete;
    • 表是不同步的(复制),不写binlog;
    binlog
    • 以“事件”的形式保存,描述数据的变更,包含关于每个更新数据库的语句的执行时间点。
    • binlog只记录完整事务。
    • 目的:最大可能地恢复数据库
    • 启用该选项数据库性能降低1%,但保障数据库完整性,重要数据库必须启用。
    • 主要用途:
      • 主从复制
      • 基于binlog的恢复
      • 审计
    参数
    • log_bin
      • (默认关闭) 不可以在线打开和关闭;
      • 只能在my.cnf中的修改!需要重启mysqld
    • log_bin_basename
      • 不指定路径则为hostname-bin.00000N
    • log_bin_index
      • 不指定路径则为hostname-bin.index
    注意:
    • 文件路径需要在log_bin中设置,而不是log_bin_basename!
    • 所有的日志都建议自己起名字,不要用默认
    • binlog_checksum
      • {CRC32|NONE}
      • 写binlog时,会将内容生成校验位,之后存储在binlog中。
      • 默认情况下,服务器记录事件的长度以及事件本身,并使用它来验证事件是否正确写入。 可以通过设置binlog_checksum系统变量来使服务器为事件写入校验和。
    • master_verify_checksum
      • 主库应用二进制日志时候,如果需要开启校验和,则打开此参数。
    • slave_sql_verify_checksum
      • 从库sql_thread读取relay log时使用checksum核对数据,如果需要开启校验和,则打开此参数。
    • max_binlog_size: 二进制日志的大小。
    • 记录binlog,在语句或事务完成之后立即执行(而不是在任何锁释放或任何提交完成之前写入),这确保日志以提交顺序登录。
      • 对于不支持事务的表(MyISAM), 执行之后马上会被记录到binlog中。
      • 对于未提交的事务中,更改事务表(例如InnoDB表)的所有更新(UPDATE, DELETE或INSERT)将被缓存,直到服务器收到COMMIT语句。 在这一点上, mysqld在执行COMMIT之后将整个事务写入二进制日志。
      • 对非事务性表的修改无法回滚。 如果回滚的事务包括对非事务性表的修改,则会在最后使用ROLLBACK语句记录整个事务,但是非事务表无法回滚。
    • binlog_cache_size:
      • 内存中缓存二进制的缓冲区大小。
      • 注意:对于大的事务,二进制日志会超过max_binlog_size设定的值。即该事务仅写入一个二进制日志。
    • 当处理事务的线程开始时,它将给语句分配一个binlog_cache_size缓冲区。 如果一个语句大于这个值,线程将打开一个临时文件来存储事务文本。 当线程结束时,临时文件被删除。
    • binlog_cache_use
      • 状态变量, 显示用于存储语句的此缓冲区(可能还有一个临时文件)的事务数。
    • binlog_cache_disk_use
      • 状态变量, 显示有多少这些事务实际上必须使用临时文件。
    • 根据这两个状态值,判断binlog_cache_size值设置是否合理,避免使用临时文件。
    • max_binlog_cache_size
      • 系统变量(默认为4GB,也是最大值)可用于限制用于缓存多语句事务的总大小。 如果一个事务大于这个多个字节,它将失败并回滚。 最小值为4096。
    • sync_binlog: {0,1}
      • 二进制内容从缓冲区flush到磁盘的触发点。
      • 多少日志组,提交时,同步一次
      • 5.7.7以后, sync_binlog参数被默认设置为1,减少了binlog中的不一致可能性。
    • expire_logs_days:
      • 日志过期时间,一定要和备份相结合。
      • 8.0.3以后废弃,有binlog_expire_logs_seconds替代
    格式
    • binlog_format: STATEMENT, ROW, MIXED
    • STATEMENT模式(SBR)
      • 每一条变更数据的sql原语句记录到binlog。
      • 缺点是在某些情况(如非确定函数)下会导致master-slave中的数据不一致(如sleep()函数,last_insert_id(),以及udf等会出现问题)
    • ROW模式(RBR)
      • 将原SQL语句等价转化为涉及数据变更的行的多条语句, 记录表中各个行如何被改变
      • 不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。
    • MIXED模式(MBR)
      • 以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog, MySQL会根据执行的SQL语句选择日志保存方式。
    管理
    • Show binary logs; show master logs;
      • 查看当前实例有哪些binlog文件
    • Show master status;
      • 查看当前实例最新的binlog点
    • Flush logs;
      • 生成一个新的binlog
      • 关闭errlog,general log和slow log的fd重新打开fd
    • reset master;
      • 清理所有二进制日志,并从新开始记录二进制日志
      • 写入binlog索引文件
    • 清理指定编号之前的二进制日志:
      • purge binary logs to ‘3306-bin.000005’;
    • 清理指定时间前的二进制日志:
      • purge binary logs before '2017-02-25 19:30:57';
    • 不建议手动rm删除二进制日志,会造成index文件不一致。
    slowlog
    • 记录数据库中影响时间超过阀值的慢SQL(包括所有的select和更新)
    • 不计算SQL执行前等待锁的时间,mysqld只从SQL等待的锁释放掉后,并开始执行时,开始计算时间(执行开始后的锁定时间会记录),所以慢查询日志中的语句顺序和语句的发出顺序或者general log的顺序不同
    • mv之后要flush logs
    参数
    • slow_query_log #控制是否开启,动态调整
      • (默认关闭) {0-关闭,1-开启} 可以在线打开和关闭;
      • set global slow_query_log=‘ON’;
    • slow_query_log_file #控制日志路径,动态调整
      • 默认路径为datadir/hostname-slow.log
    • long_query_time # SQL执行的阀值,默认为10s,动态
    • log_queries_not_using_indexes 记录未用索引的慢查询
    • log_throttle_queries_not_using_indexes: 记录没有使用索引查询的语句条数,
    在一分钟内记录的条数
    • min_examined_row_limit:
      • 要检查的行数大于等于N时才记录为慢查询,前提是必须满足long_query_time和log-queries-notusing-indexes约束。
    • log_slow_admin_statements:
      • 管理语句是否记录
      • ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, and REPAIR TABLE.
    • log_slow_slave_statements:
      • 从库的语句执行是否记录
    error log
    • 记录数据库启动,关闭, innodb加载,错误,告警信息, aborted connection
    等信息
    • 数据库的alert日志
    参数
    log_error=[path/[file_name]],如果不指定文件名,则默认hostname.err.
    • 修改后重启生效
    • 默认存放位置 datadir/hostname.err
    log_error_verbosity(5.7.2被引入)
    • Errors only
    • Errors and warnings
    • Errors, warnings, and notes (默认)
    查看错误日志的位置
    show variables like 'log_error’;
    错误日志重建
    [mysql@mysql5 log]$ mv mysql.err mysql.err'20180810';
    mysql> flush logs;
  • 相关阅读:
    《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57
    《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56
    《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55
    《Linux命令行与shell脚本编程大全 第3版》Linux命令行---54
    《Linux命令行与shell脚本编程大全 第3版》Linux命令行---53
    《Linux命令行与shell脚本编程大全 第3版》Linux命令行---51
    activity-启动动画的设定(下面弹出出现,弹入下面消失)
    TextView-显示自己添加的字体样式
    visibility-控件的显示跟隐藏设置
    RelativeLayout-属性大全
  • 原文地址:https://www.cnblogs.com/Knight7971/p/9634694.html
Copyright © 2011-2022 走看看