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

[经验分享] MySQL之日志管理(一)

[复制链接]

尚未签到

发表于 2018-10-10 13:06:49 | 显示全部楼层 |阅读模式
  MySQL的日志有以下六种:

  •   错误日志:服务器启动、关闭、运行中产生的错误信息、及event(事件调度)运行一个事件时产生的信息、及从服务器上启动和关闭从服务器进程时产生的信息。
  •   一般查询日志:general_log、general_log_file.
  •   慢查询日志:查询时间超过指定的查询时间的记录
  •   二进制日志:任何引起或者可能引起数据变化的操作都要记录进二进制日志(DDL、DML、DCL语句);二进制日志又叫做几十点还原,可在server崩溃后将数据还原到崩溃的那一刻。
  •   中继日志:中继日志就是从服务器复制的主服务器上的二进制日志,其格式一样,在从服务器上会根据中级日志的记录重新执行一遍,进行数据备份
  •   事务日志:只有支持事务的存储引擎(如innodb)才有事务日志,事务日志保证了数据的ACID,并将随机I/O转化为顺序I/O。
  mysql> show global variables like '%log%'; 查询与日志有关的变量
  错误日志文件参数:
  log_error: /mydata/data/localhost.localdomain.err(数据目录下当前主机名+.err)
  log_warnings
  一般查询日志参数:
  general_log
  general_log_file: /mydata/data/localhost.log
  log_output={table|file|none} table则日志全记录入表,file则日志全记录进文件,none不记录
  man查询日志参数:
  long_query_time=# 超过long_query_time的查询都要记录,默认为10s
  slow_query_log={on|off} 启用或关闭记录慢查询日志,启用不代表记录
  slow_query_log_file=/path 慢查询日志保存目录
  log_slow_queries={yes|no} 慢查询日志是否启用,启用不代表记录
  >set global slow_query_log=1;启用慢查询日志记录
  二进制日志的格式:
  1.基于语句: statement
  2.基于行: row
  3.混合方式: mixed
  二进制日志事件一般要记录两个内容:
  1.记录这个事件产生的时间(starttime)
  2.这个事件在整个事件中的相对位置
  让二进制日志文件不要和数据存放在同一个磁盘上,当数据丢失或者崩溃时,可以用备份 + 二进制日志的方式将数据还原到数据崩溃的那一刻
  [root@node1 ~]# cd /mydata/data/
  [root@node1 data]# ls
  master-bin.000002  master-bin.000006  master-bin.000010
  master-bin.000003  master-bin.000007  master-bin.000011
  master-bin.000004  master-bin.000008  master-bin.000012
  master-bin.000005  master-bin.000009  master-bin.000013
  mysql> show master status; 查看当前使用的日志文件时哪个
  +-------------------+----------+--------------+------------------+-------------------+
  | File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  +-------------------+----------+--------------+------------------+-------------------+
  | master-bin.000021 |    673 |         |
  +-------------------+----------+--------------+------------------+-------------------+
  1 row in set (0.14 sec)
  当前使用的是master-bin.00002
  事件相对于整个事件的位置为673
  mysql> show binlog events in 'master-bin.000021'; 查看二进制日志文件
  +-------------------+-----+-------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------+
  | Log_name          | Pos | Event_type  | Server_id | End_log_pos | Info                                                                                                            |
  +-------------------+-----+-------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------+
  | master-bin.000021 |   4 | Format_desc |         1 |          120 | Server ver: 5.6.34-log, Binlog ver: 4
  | master-bin.000021 | 120 | Query       |         1 |         207 | BEGIN                                                                                                           |
  | master-bin.000021 | 207 | Query       |         1 |         344 | use `students`; insert into test1 (cid,name,sid) values (4,'faded','D')
  | master-bin.000021 | 344 | Xid         |         1 |        375 | COMMIT /* xid=40 */                                                                                             |

  | master-bin.000021 | 375 | Query       |         1 |         549 | use `mysql`; CREATE USER 'faker'@'127.0.0.1'>  | master-bin.000021 | 549 | Query       |         1 |         673 | use `mysql`; rename user faker@'127.0.0.1' to sky@'127.0.0.1'
  +-------------------+-----+-------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------+
  6 rows in set (0.02 sec)
  Pos      事件的起始位置
  Event_type  事件类型
  Server_id  服务器id号
  End_log_pos 事件结束位置
  Info      文件头及进行的操作
  mysql> show binlog events in 'master-bin.000021' from 344; 从304起始位置查看
  +-------------------+-----+------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------+
  | Log_name          | Pos | Event_type | Server_id | End_log_pos | Info                                                                                                            |
  +-------------------+-----+------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------+
  | master-bin.000021 | 344 | Xid        |         1 |         375 | COMMIT /* xid=40 */                                                                                             |

  | master-bin.000021 | 375 | Query      |         1 |         549 | use `mysql`; CREATE USER 'faker'@'127.0.0.1'>  | master-bin.000021 | 549 | Query      |         1 |         673 | use `mysql`; rename user faker@'127.0.0.1' to sky@'127.0.0.1'                                                   |
  +-------------------+-----+------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------+
  3 rows in set (0.00 sec)
  除此之外还可以用mysqlbinlog命令查看日志文件(二进制格式的二进制文件不能用cat查看)
  mysqlbinlog
  --start-datetime
  --stop-datetime
  --start-position
  --stop-position
  [root@node1 data]# mysqlbinlog master-bin.000021
  [root@node1 data]# mysqlbinlog --start-position=207 --stop-position=375 master-bin.000021
  [root@node1 data]# mysqlbinlog --start-datetime='17-02-13  9:06:21' master-bin.000021
  还可以将其导入一个文件中,然后再将该文件导入另外一个数据库中,就可以按照二进制日志重新执行一遍
  [root@node1 data]# mysqlbinlog --start-datetime='17-02-13  9:06:21' master-bin.000021 >/root/my.sql
  mysql> flush logs; 手动进行日志滚动
  mysql> show master status;
  +-------------------+----------+--------------+------------------+-------------------+
  | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  +-------------------+----------+--------------+------------------+-------------------+
  | master-bin.000022 |      120 |              |                  |                   |
  +-------------------+----------+--------------+------------------+-------------------+
  1 row in set (0.00 sec)
  如果我已经将某时刻之前的数据进行了备份,应该删除该时刻之前的二进制日志,从而节省空间
  mysql> purge binary logs to 'master-bin.0000010'; 将'master-bin.0000010'之前的日志全删除
  mysql> show master status;
  +-------------------+----------+--------------+------------------+-------------------+
  | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  +-------------------+----------+--------------+------------------+-------------------+
  | master-bin.000022 |      120 |              |                  |                   |
  +-------------------+----------+--------------+------------------+-------------------+
  1 row in set (0.00 sec)
  mysql> show binary logs; 查看当前拥有的二进制日志
  +-------------------+-----------+
  | Log_name          | File_size |
  +-------------------+-----------+
  | master-bin.000001 |     69435 |
  | master-bin.000002 |   1371047 |
  | master-bin.000003 |       143 |
  | master-bin.000004 |       143 |
  | master-bin.000005 |       120 |
  | master-bin.000006 |       143 |
  | master-bin.000007 |   4836454 |
  | master-bin.000008 |     21561 |
  | master-bin.000009 |       143 |
  | master-bin.000010 |       143 |
  | master-bin.000011 |       120 |
  | master-bin.000012 |       120 |
  | master-bin.000013 |       120 |
  | master-bin.000014 |       143 |
  | master-bin.000015 |       120 |
  | master-bin.000016 |       143 |
  | master-bin.000017 |       120 |
  | master-bin.000018 |       818 |
  | master-bin.000019 |      2220 |
  | master-bin.000020 |      4692 |
  | master-bin.000021 |       721 |
  | master-bin.000022 |       120 |
  +-------------------+-----------+


运维网声明 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-619992-1-1.html 上篇帖子: mysql分区和分表 下篇帖子: MySQL之日志管理(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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