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

[经验分享] MySQL日志功能详解(2)

[复制链接]

尚未签到

发表于 2018-10-11 09:17:06 | 显示全部楼层 |阅读模式
  二进制日志:(多个线程会争用,可以首先写到缓冲区中)
  记录了当前服务器的数据修改和有潜在可能性影响数据修改的语句
  默认在数据目录下,通常情况下为mysql-bin
    [root@redhat7 data]# file mysql-bin.000001  
    mysql-bin.000001: MySQL replication log  复制日志
  可以通过mysqlbinlog命令来查看
  时间记录 time
  偏移位置 position
DSC0000.png

MySQL > show master status 显示主服务器状态  
查看当前使用的二进制日志和下一个事件开始时的基于的位置
  

  
MySQL [(none)]> show master status;
  
    +------------------+----------+--------------+------------------+
  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000003 |      107 |              |                  |
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  日志滚动:
  1、可以按照大小定义
  2、可以按照时间定义
  3、重启mysql服务器
  4、执行flush logs(手动滚动)
DSC0001.png

  查看当前正在使用的二进制日志
MariaDB [(none)]> show binary logs;  
+------------------+-----------+
  
| Log_name         | File_size |
  
+------------------+-----------+
  
| mysql-bin.000001 |      1043 |
  
| mysql-bin.000002 |       245 |
  
| ...............3 |       245 |
  
+------------------+-----------+
  
2 rows in set (0.00 sec)
  二进制日志的功用
  即时点(时间点)恢复:
  复制:
[root@redhat7 data]# file mysql-bin.index  
mysql-bin.index: ASCII text
  
[root@redhat7 data]# cat mysql-bin.index
  
./mysql-bin.000001
  
./mysql-bin.000002
  
./mysql-bin.000003
  
./mysql-bin.000004
  清除二进制日志
Mysql > help purge  
PURGE { BINARY | MASTER } LOGS
  
    { TO 'log_name' | BEFORE datetime_expr(某个时间之前) }
  查看MySQL的二进制日志
mysql > help SHOW BINLOG EVENTS;  
mysql > SHOW BINLOG EVENTS;
  
MariaDB [(none)]> show binlog events\G
  
*************************** 1. row ***************************
  
   Log_name: mysql-bin.000001
  
        Pos: 4
  
Event_type: Format_desc
  
  Server_id: 1
  
End_log_pos: 245
  
       Info: Server ver: 5.5.36-MariaDB-log, Binlog ver: 4
  service-id:服务器身份标识
  (避免重复执行mysql二进制日志中'修改'类的语句)
  MySQL 记录二进制日志的格式
MariaDB [(none)]> show variables like 'binlog_format';  
+---------------+-------+
  
| Variable_name | Value |
  
+---------------+-------+
  
| binlog_format | ROW   |
  
+---------------+-------+
  
1 row in set (0.00 sec)
  基于语句:statement
  基于行(数据):row
  update tb1 set salary=salary+1000; --> 数据量很大
  混合模式:mixed
  指定从那个位置开始读取
  MariaDB [(none)]> show binlog events in 'mysql-bin.000001' from 591\G
  也可以使用
  [root@redhat7 data]# mysqlbinlog --start-position=24223 mysql-bin.000001
  mysqlbinlog命令(客户端命令)
   --start-time  
   --stop-time
  
   --start-position
  
   --stop-position
  二进制日志文件内容格式
  事件发生的日期和时间
  服务器ID
  事件结束位置
  事件的类型
  原服务器生成此事件时的线程ID号  MySQL [(none)]> show processlist;
  语句时间戳和写入二进制文件的时间差,单位为秒
  错误代码,0表示正常执行
  事件内容
  事件位置(相当于下一事件的开始位置)
MySQL [(none)]> show global variables like '%log%';  
  +-------------------------------------------------------------------------------+
  
  | log_bin = {ON|OFF};还可以是一个文件路径                            |
  
  | log_bin_trust_function_creators  是否阻止任何存储函数                         |
  
  | sql_log_bin = {ON|OFF} 当前会话是否将二进制文件录入进二进制文件  |
  
  | sql_log_off 是否将一般查询日志记入查询日志  |
  
  | sync_binlog 同步缓冲中的二进制到硬盘的时间,0不基于时间同步,只在事件提交时同步 |
  
  | binlog_format = {|statement|row|mixed}  |
  
  | max_binlog_cache_size  mysql二进制日志的缓冲区大小,仅用于缓存事务类的语句     |
  
  | max_binlog_stmt_cache_size 语句缓冲区大小,即事务类和非事务类公用的大小        |
  
  | max_binlog_size 二进制日志文件的上限,单位为字节  (超过上限会滚动)             |                |
  
  +-------------------------------------------------------------------------------+
  

  
建议:切勿将二进制日志与数据文件放在同一设备
  事先做好规划
[root@redhat7 data]# mkdir /mysql/binlog  
[root@redhat7 data]# vim /etc/my.cnf
  
log-bin=/mysql/binlog/master-bin
  
[root@redhat7 data]# chown -R mysql:mysql /mysql/binlog/
  

  
重启mysqld 服务器
  

  
[root@redhat7 data]# cd /mysql/binlog/
  
[root@redhat7 binlog]# ls
  
master-bin.000001  master-bin.index
  可以临时通过sql_log_bin来控制二进制的写入
DSC0002.png

DSC0003.png

  中继日志:(跟主从复制相关)
  对于非从服务器,中继日志没有启用
  relay_log  指明一个文件路径
  relay_log_index
  relay_log_purge = {ON|OFF} 是否自动清理不在需要的中继日志
  relay_log_space_limit 中继大小是否限制



运维网声明 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-620203-1-1.html 上篇帖子: mysql主从状态异常解决办法 下篇帖子: mysql主从数据库复制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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