设为首页 收藏本站
查看: 891|回复: 0

[经验分享] MySQL日志功能

[复制链接]

尚未签到

发表于 2018-10-3 11:36:06 | 显示全部楼层 |阅读模式
  MySQL的日志有很多种,分为错误日志、一般查询日志、慢查询日志、二进制日志、中继日志、事务日志,这些日志信息有很强大的功能,错误查询、查询诊断、复制、数据恢复、保持事务性质等都依靠日志完成;所以日志文件从性能和数据安全方面考虑,都不应该和数据文件存放在同一个存储设备上,且考虑到IO问题日志文件应存在性能高的存储设备上
  下面是日志的相应功能和常用相关变量
  错误日志
  作用:

  •   服务器启动和关闭过程中的信息
  •   服务器运行过程中的错误信息
  •   事务调度器event scheduler运行事件时产生的信息
  •   从服务器启动和停止进程时产生的信息
  •   警告信息
  相关变量:

  •   log_error #默认记录文件路径,数据目录下的本机名.err
  •   log_warnings={0|1} #1记录警告信息,0不记录
  一般查询日志
  作用:将一般查询操作的所有信息都记录下来
  相关变量

  •   general_log={ON|OFF} #是否启用查询日志 # 默认应关闭,否则所有查询都记录产生大量的IO
  •   general_log_file #默认记录文件路径:数据目录下的本机名.log
  •   log #是否将除查询意外的所有操作都做记录(mysql5.6之后不再使用这个变量)
  •   log_output={TABLE|FILE|NONE} #日志输出成表、文件、不记录
  慢查询日志
  作用

  •   和一般查询日志差不多,只是记录查询时间长超出long_query_time变量定义的时间的查询信息,记录哪些查询比较慢;可用于查询性能诊断,通过分析慢查询日志,进行查询优化
  相关变量

  •   log_slow_queries={YES|NO} #是否记录慢查询
  •   slow_query_log={YES|NO} #和上个变量重复
  •   slow_query_log_file #默认记录文件路径:数据目录下的本机名-slow.log
  •   long_query_time
  •   log_output:{TABLE|FILE|NONE}
  二进制日志(mysqlbinlog)
  作用

  •   记录任何可能引起或引起数据库变化的操作如DML,DCL、授权语句等,利用此日志可以实现mysql复制即时点恢复的依据(按照某个时间点、某个位置还原)
  文件特性

  •   二进制日志会发生滚动,手动滚动,FLUSH LOGS;
  •   命名:mysql-bin.000001按后面数值每滚动一次增加1并生成新的文件
  事件记录格式

  •   基于语句(statement):记录的是操作语句
  •   基于行(row):记录的是改变的数据
  •   混合方式(mixed):两种混合
  事件如何记录

  •   产生时间(starttime)
  •   相对位置(position):上一个事件结束位置,也是当前事件的开始位置
  二进制日志文件相关操作

  •   查看当前所有的二进制日志文件 # SHOW BINARY LOGS;
  •   查看当前在用哪一个 # SHOW MASTER STATUS; 同时还可看到position
  •   查看二进制日志文件详细信息 # SHOW BINLOG EVENT IN ‘mysql-bin.000001’;
  •   删除 # PURGE BINARY LOGS TO ‘某二进制日志文件’ ; 删除这个之前的所有二进制日志文件
  •   实现滚动 # FLUSH LOGS;
  •   读取二进制文件内容 #mysqlbinlog mysql-bin.000005 --{start|stop}-{datetime|position}
  相关变量

  •   binlog_format={STATEMENT|RAW|MIXED} # 事件记录格式
  •   log_bin # 二进制日志是否开启
  •   sql_log_bin # 控制二进制日志信息是否记录进文件
  •   sync_binlog # 多久同步一次二进制日志到磁盘中,0不同步,正数值表示多少次写操作后同步一次,autocommit为1时,每条语句自动同步 用于控制同步行为
  中继日志
  作用

  •   格式和二进制日志差不多,是从主服务器的二进制日志文件中复制而来的事务信息,并保存为的日志文件,实现mysql主从复制;从中继日志当中读取操作内容,在本地数据库上执行相同的操作
  事务日志:支持事务的存储引擎才有事务日志,如InnoDB
  作用

  •   事务日志是保证ACID的重要依据,记录了提交的事务,并后续写如数据库文件当中
  日志组

  •   一般事务日志文件有多个,若其中一个满了,但还没有同步进数据库文件中怎么办,所以需要多个,ib_logfile0、ib_logfile1、......
  事务的同步

  •   事务从用户空间缓存同步到内核空间缓存,缓存是因为若每个事务都直接同步到日志文件中产生频繁的IO操作,但缓存过大会造成故障数据丢失量大,所以应折中选择缓存大
  •   事务从缓存同步到事务日志文件
  •   从日志文件同步进数据库文件
  重要的变量innodb_flush_log_at_trx_commit={0|1|2}

  •   0:每秒同步,并flush
  •   1:每事务同步,并flush
  •   2:每事务同步,不执行flush,由系统决定flush时间
  •   这里的同步表示将用户空间缓存同步到内核空间,flush表示事务缓存同步到日志文件中
  二进制日志和事务日志区别:

  •   二进制日志文件为了实现当数据库崩溃故障的时候,用于数据还原的
  •   而事务日志为了保证事务本身的可靠性,保证ACID的
  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-609209-1-1.html 上篇帖子: MySQL 优化(memcache) 下篇帖子: MySQL分区简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表