Mysql 5.7开启binlog日志

打印 上一主题 下一主题

主题 1005|帖子 1005|积分 3015

Mysql 5.7开启binlog日志

前言

binlog是MySQL的二进制日志,并且是MySQL中最重要的日志。binlog记录了对MySQL数据库执行更改的所有操作,包括对数据库表结构的变更,对数据的变更,例如CREATE、ALTER TABLE、INSERT、UPDATE、DELETE…,但是不会记录查询语句select。需要注意的是,如果是update操作,即使是没有数据更新,也会记录在binlog日志中,binlog日志是以事件形式记录,并且还包含语句所执行的消耗时间。
查看binlog是否开启
  1. show variables like '%log_bin%';
复制代码

开启binlog

修改mysql配置文件
  1. [mysqld]
  2. log-bin=mysql-bin
  3. server_id=1
复制代码

重新启动mysql

windows系统
  1. net stop mysql   # 停止mysql服务
  2. net start mysql  # 启动mysql服务
复制代码
Linux系统
  1. service mysql stop # 停止mysql服务
  2. service mysql start # 启动mysql服务
  3. service mysql restart   # 重启mysql服务
复制代码
扩展

应用


  • 主从复制
    master端开启binlog,master把二进制日志传递给slaves来达到master-slave数据保持一致。

  • 数据恢复
    可以通过mysqlbinlog工具解析binlog来恢复数据。

binlog日志常用命令


  • 查看所有的binlog日志列表
    1. show master logs;
    复制代码
  • 查看master状态,即最后一个binlog日志的编号名称,及其最后一个操作时间pos结束点值
    1. show master status;
    复制代码
  • flush刷新binlog日志,此刻之后会产生一个新编号的binlog日志文件
    1. flush logs;
    复制代码
bin-log日志存放地址

binlog存放在/var/lib/mysql里面的,如果是docker,则在相应的映射目录

配置存放位置、过期时间

在MySQL配置文件my.cnf或者my.ini中[mysqld]标签内修改
  1. # 配置定时清理
  2. expire_logs_days = 5
  3. # 配置修改后的日志路径
  4. log-bin=/home/logs/mysql-bin
复制代码

配置每个日志文件的大小

在MySQL配置文件my.cnf或者my.ini中[mysqld]标签内修改
  1. # binlog每个日志文件大小
  2. max_binlog_size = 100m
复制代码
binlog格式
  1. # binlog日志格式,MySQL默认采用的是STATEMENT,建议使用MIXED
  2. binlog_format = MIXED
复制代码

  • STATEMENT模式(SBR)
    基于SQL语句的复制(statement-based replication),每一条会修改数据的sql语句都会记录到binlog中。
    优点:

    • 不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能
    缺点:

    • 某些情况会导致master-slave中的数据不一致,例如sleep(),last_insert_id()等

  • ROW模式(RBR)
    基于行的复制(row-based replication),不记录每条sql语句的上下文信息,仅记录哪条数据被修改了,修改成什么样。
    优点:

    • 任何情况都可以复制,并且不会出现特定情况下存储过程、function等调用或者触发无法被正确复制的问题
    缺点:

    • binlog日志文件会非常大
    • master上执行update语句时,所有变化都会写到binlog里面,SBR只会写一次,所以会导致频繁发生binlog的并发写问题

  • MIXED模式
    上面两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

如有侵权请立即与我们联系,我们将及时处理,联系邮箱:865934097@qq.com。
原文链接: https://monkey.blog.xpyvip.top/archives/Mysql57开启binlog日志

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

民工心事

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表