Mysql 5.7开启binlog日志

Mysql 5.7开启binlog日志

前言

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

查看binlog是否开启

show variables like '%log_bin%';

Mysql 5.7开启binlog日志

开启binlog

修改mysql配置文件

[mysqld]
log-bin=mysql-bin
server_id=1

Mysql 5.7开启binlog日志

重新启动mysql

windows系统
net stop mysql   # 停止mysql服务
net start mysql  # 启动mysql服务
Linux系统
service mysql stop # 停止mysql服务
service mysql start # 启动mysql服务
service mysql restart   # 重启mysql服务

扩展

应用

  1. 主从复制

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

  2. 数据恢复

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

binlog日志常用命令

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

bin-log日志存放地址

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

Mysql 5.7开启binlog日志

配置存放位置、过期时间

在MySQL配置文件my.cnf或者my.ini中[mysqld]标签内修改

配置定时清理
expire_logs_days = 5
配置修改后的日志路径
log-bin=/home/logs/mysql-bin

Mysql 5.7开启binlog日志

配置每个日志文件的大小

在MySQL配置文件my.cnf或者my.ini中[mysqld]标签内修改

binlog每个日志文件大小
max_binlog_size = 100m

binlog格式

binlog日志格式,MySQL默认采用的是STATEMENT,建议使用MIXED
binlog_format = MIXED
  1. STATEMENT模式(SBR)

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

  2. 不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能 缺点:
  3. 某些情况会导致master-slave中的数据不一致,例如sleep(),last_insert_id()等
  4. ROW模式(RBR)

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

  5. 任何情况都可以复制,并且不会出现特定情况下存储过程、function等调用或者触发无法被正确复制的问题 缺点:
  6. binlog日志文件会非常大
  7. master上执行update语句时,所有变化都会写到binlog里面,SBR只会写一次,所以会导致频繁发生binlog的并发写问题
  8. MIXED模式

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

如有侵权请立即与我们联系,我们将及时处理,联系邮箱:865934097@qq.com。

原文链接: https://monkey.blog.xpyvip.top/archives/Mysql57开启binlog日志

Original: https://www.cnblogs.com/aibianchengya/p/16683849.html
Author: 程序猿的代码
Title: Mysql 5.7开启binlog日志

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/577840/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 使用Foxit Reader实现批量打印以及一页多版设置技巧

    阅文时长 | 0.36分钟字数统计 | 587.2字符主要内容 | 1、引言&背景 2、批量打印软件 3、Foxit Reader设置一页多版 4、声明与参考资料『使用Fo…

    Linux 2023年6月14日
    0166
  • 自制弹窗拦截器

    一个十分简单的bat脚本 如果需要拦截更多弹窗,只需要将第6~8行复制一下并粘贴到:3后面,将所有的SGtool改成要拦截的进程名即可,每添加一个进程,就要将标号加一,我相信你们能…

    Linux 2023年6月6日
    0130
  • shell运算符

    算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符说明举例 + 加法 expr $a + $b 结果为 30。 – 减法 ex…

    Linux 2023年5月27日
    097
  • NC反弹shell的几种方法

    nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口 (2)端口的扫描,nc可以作为client发起TCP或UDP连接 (3…

    Linux 2023年6月14日
    0129
  • 命令大全目录

    linux 本文来自博客园,作者:ivanlee717,转载请注明原文链接:https://www.cnblogs.com/ivanlee717/p/16341641.html O…

    Linux 2023年6月7日
    0186
  • 写给初学者的Linux errno 错误码机制

    不同于Java的异常处理机制, 当你使用C更多的接触到是基于错误码的异常机制, 简单来说就是当调用的函数发生异常时, 程序不会跳转到一个统一处理异常的地方, 取而代之的是返回一个整…

    Linux 2023年5月27日
    0113
  • cron 表达式

    cron 表达式 1.简介:一个cron表达式最少有5个空格来分割时间元素,总共有7个元素,分别如下: ① 秒(0-59) ② 分钟(0-59) ③ 小时(0-23) ④ 天(月的…

    Linux 2023年6月7日
    0101
  • Ubuntu系统中MySQL安装后基本配置

    mysql8.0安装好后并不会让你输入root密码,而是采用默认账户+默认密码的方式保护数据库安全,但开发环境并不需要这样做。那么怎么找到这个默认账户和密码,又如何修改数据库使它可…

    Linux 2023年6月14日
    0107
  • 继承、封装、多态的实现原理

    欢迎来到Java学习之继承、封装、多态的实现原理 目录 从JVM结构开始谈多态 JVM 的结构 Java 的方法调用方式 常量池(constant pool) 图 2. 常量池各表…

    Linux 2023年6月13日
    0159
  • 安装及管理文件

    优点: 契合系统兼容性强 如果你可以看懂源代码,修改新增功能 比较自由 缺点: 如果编译出了问题,你看不懂源代码,无法解决 安装过程复杂 没有统一的管理人员 安装过程 程序包编译安…

    Linux 2023年6月6日
    0165
  • Redis源码学习

    为什么要阅读Redis源码? 主要原因就是『简洁』。如果你用源码编译过Redis,你会发现十分轻快,一步到位。其他语言的开发者可能不会了解这种痛,作为C/C++程序员,如果你源码编…

    Linux 2023年5月28日
    0127
  • Jedis和redisTemplate 共用问题–序列化不一致(生产事故->解决->两个redisTemplate)

    Jedis和redisTemplate 共用问题老项目用Jedis,放入redis中,用的是比较老的框架,还进行序列化. 用redisTemplate试了下拿不到.因为序列化的方式…

    Linux 2023年5月28日
    0117
  • 玩转 Windows Terminal

    今天给大家分享一下Windows Terminal的使用及个性化定制。 一、安装 该项目的开源地址为https://github.com/microsoft/terminal,如果…

    Linux 2023年6月7日
    0172
  • Linux下定时自动备份Docker中所有SqlServer数据库

    给出一个备份的范例 #!/bin/bash #设置mssql备份目录 folder=/var/opt/mssql/data/databack/ day=date +%Y%m%d%H…

    Linux 2023年6月14日
    0163
  • 回顾乐信集团工作经历

    2019年入职乐信用户增长部门,负责开发开放平台的需求和合作方技术支持。乐信金融开放平台提供了金融业务API以及配套SDK等组件,为合作商户的产品赋予分期支付和小额贷款能力,子系统…

    Linux 2023年6月6日
    0128
  • 我对二进制的理解

    理解进制的重要方法是类比我们熟知的十进制 10进制 一个正常的人类,拥有10根手指,每根手指代表1个信息,那么两双手掌便可表达10个信息。1, 2, 3, …, 10。…

    Linux 2023年6月7日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球