当前位置: 首页 > news >正文

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%';

开启binlog

修改mysql配置文件

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

重新启动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;
  2. 查看master状态,即最后一个binlog日志的编号名称,及其最后一个操作时间pos结束点值
    show master status;
  3. flush刷新binlog日志,此刻之后会产生一个新编号的binlog日志文件
    flush logs;

bin-log日志存放地址

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

image-20220911001502484

配置存放位置、过期时间

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

配置每个日志文件的大小

在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中。
    优点:
    1. 不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能

缺点:

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

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

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

缺点:

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

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

http://www.cnnetsun.cn/news/2747109.html

相关文章:

  • Redis HyperLogLog用户统计功能实现
  • 基于Arduino Nano的智能小车PCB设计:从传感器集成到自主避障
  • Halcon实战:用decompose3和trans_from_rgb搞定彩色图像分割与HSV转换(附避坑要点)
  • 相位测距信号处理实战:如何用混频和FFT把15MHz高频信号‘降频’测准相位?
  • MATLAB实现高斯混合背景建模的运动目标检测与框选跟踪代码包
  • WebPlotDigitizer完整指南:科研图表数据提取的终极解决方案
  • 基于树莓派Zero W的微型侦察机器人:从零构建嵌入式移动平台
  • 跨平台网盘文件直链解析工具:告别客户端依赖的现代化下载方案
  • 从向量与嵌入到ChromaDB:构建AI应用的语义搜索基石
  • GPT-5.5 Pro与DeepSeek-V4实战对比:逻辑推理、工程交付与协作范式
  • 别再只盯着数据了!手把手教你用新拓三维XTDIC系统做一次靠谱的精度验证实验
  • Windows 11 LTSC版安装微软商店的完整指南:3分钟快速恢复应用生态
  • GoSkills:Go语言原生Claude技能包运行时详解
  • 从Verilog到可执行程序:手把手教你用Verilator在Ubuntu 22.04上构建你的第一个硬件模拟器
  • 别再只盯着K因子了!ADS实战:用环路增益和奈奎斯特图给你的射频放大器“体检”
  • 手把手教你用STM32F407的SDIO给TF卡建个‘文件系统’,告别裸读写
  • 告别环境配置焦虑:用VS2022和OpenCV 4.9.0,5分钟搞定你的第一个图像识别Demo
  • 基于Arduino与433MHz射频模块的单向无线通信系统搭建指南
  • 从静态滑翔机到遥控飞机:DIY改装全流程与核心技术解析
  • Django搭建的轻量级图书借阅后台,含用户管理、借还登记与库存统计功能
  • Ripes:可视化RISC-V处理器模拟器,让硬件学习变得触手可及
  • RV1126人脸识别项目实战:手把手教你搞定GC2053红外摄像头驱动配置与VLC拉流
  • 为什么87%的RAG项目在对话整合阶段失败?一线专家复盘6类典型架构断裂场景
  • STM32H743VIT6最小系统板AD工程包:原理图+PCB+封装库全开源
  • AI工具如何真正接管内容风控?揭秘头部平台智能审核系统日均拦截99.98%违规内容的技术闭环
  • 黑龙江全省三级行政区划矢量数据:地级市、区县、乡镇街道边界SHP文件合集
  • 为你的RB5机器人系统加把锁:详解dm-verity验证与FBE加密配置
  • SAP-ABAP:S/4HANA 下的 ST02 深度解读:从缓冲区监控到内存架构优化
  • 【完整题单10、贪心与思维(区间合并)】【✅✅✅✅】
  • 如何高效解密NCM文件?ncmdumpGUI完整指南助你解放音乐收藏