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

阿里云网站域名证书网页设计与制作 培训

阿里云网站域名证书,网页设计与制作 培训,杭州市住房和城乡建设局,旅游网站开发文档怎么写MySQL 的 binlog_format 是做什么的? binlog_format 是 MySQL 中一个关键配置参数,决定了二进制日志(binlog)记录数据库变更的方式。binlog 就像 MySQL 的“操作日记”,记录了所有增删改、建表等操作,主要…

MySQL 的 binlog_format 是做什么的?

binlog_format 是 MySQL 中一个关键配置参数,决定了二进制日志(binlog)记录数据库变更的方式。binlog 就像 MySQL 的“操作日记”,记录了所有增删改、建表等操作,主要用于主从复制和数据恢复。不同的 binlog_format 会影响日志的格式、复制的可靠性以及性能表现。咱们一步步来搞清楚它到底干啥!


1. 二进制日志(binlog)是啥?

先简单说说 binlog,帮你打个底:

  • 二进制日志:MySQL 的“日记本”,记录数据库的所有变更操作(比如插入一行数据、修改表结构)。日志以二进制格式存储,文件名通常是 mysql-bin.000001mysql-bin.000002 等。
  • 主要用途
    1. 主从复制:主库把 binlog 传给从库,从库重放操作,保持数据一致。
    2. 数据恢复:数据库崩溃时,用 binlog 恢复到某个时间点。
  • 开启方式:在 my.cnf 中配置 log_bin(你的配置已启用 log_bin=mysql-bin)。

binlog_format 就是决定这本“日记”怎么写的规则。


2. binlog_format 的三种类型

MySQL 支持三种 binlog 格式:STATEMENTROWMIXED。每种格式就像不同的记日记方式,咱们用生活化的比喻来理解。

假设你是个厨师,做了道菜(数据库操作),binlog 是你的烹饪记录:

STATEMENT(基于语句)

  • 记录方式:记下做菜的“指令”。比如:“炒一盘西红柿炒蛋,先打两个蛋,切三个西红柿,炒 5 分钟。”
  • 技术解释:记录执行的 SQL 语句本身,例如:
    INSERT INTO users (name) VALUES ('Alice');
    
  • 特点
    • 日志文件小,只记 SQL 语句,不记具体数据。
    • 人类能看懂,适合调试。
  • 比喻:就像记食谱,简单明了。

ROW(基于行)

  • 记录方式:记下每道菜的“结果”。比如:“盘子里多了两勺炒好的西红柿炒蛋,包含两个蛋、三个西红柿。”
  • 技术解释:记录每行数据的实际变更,例如:
    • 插入:具体插入的值(name=Alice)。
    • 更新:更新前后的值(nameBobAlice)。
  • 特点
    • 日志文件大,每行变更都记详细数据。
    • 复制更可靠,不受环境影响。
  • 比喻:就像拍了菜的照片,连细节都记录。

MIXED(混合模式)

  • 记录方式:灵活切换,简单操作记“指令”,复杂操作记“结果”。比如:“炒菜记食谱,切菜记具体切的块。”
  • 技术解释:结合 STATEMENT 和 ROW,自动选择:
    • 普通插入、更新用 STATEMENT。
    • 复杂操作(如随机函数、触发器)用 ROW。
  • 特点
    • 平衡日志大小和可靠性。
    • 默认推荐,减少配置失误。
  • 比喻:像个聪明的记录员,啥合适用啥。

3. binlog_format 的作用

binlog_format 具体影响以下几个方面:

  1. 主从复制的可靠性

    • STATEMENT:从库直接跑主库的 SQL,可能因环境差异(如时间函数、随机数)导致数据不一致。
    • ROW:只关心数据变更,环境无关,复制更稳。
    • MIXED:自动选择,尽量避免不一致。
  2. 日志文件大小

    • STATEMENT:日志小,适合小规模操作。
    • ROW:日志大,适合大数据量或复杂表。
    • MIXED:大小适中。
  3. 性能开销

    • STATEMENT:主库记录快,从库执行 SQL 可能慢。
    • ROW:主库记录稍慢(记每行),从库应用快。
    • MIXED:性能折中。
  4. 数据恢复

    • STATEMENT:恢复可能受 SQL 上下文限制。
    • ROW:精确到每行数据。
    • MIXED:兼顾两者。

4. 三种格式的优缺点对比

格式优点缺点适用场景
STATEMENT日志小,易读,记录快复制可能不一致(如随机函数、触发器)小型系统,简单操作,日志空间有限
ROW复制可靠,环境无关日志大,记录开销高,人类难读复杂系统,高可靠性要求,大数据量
MIXED平衡可靠性和效率,自动选择格式配置复杂,可能仍需手动调整默认推荐,多数生产环境

5. 你的配置:binlog_format=ROW

你的 my.cnf 中设置了:

binlog_format=ROW
  • 意味着

    • 主库记录每行数据的具体变更(插入啥,更新前后是啥)。
    • 主从复制很可靠,即使主从版本不同,也很少出错。
    • 适合你的场景(GTID、主从复制、并行复制),因为 ROW 格式与 GTID 配合更稳定。
  • 注意事项

    • 日志文件可能较大,尤其在频繁更新的表上。
    • 权限操作(如 CREATE USERGRANT)可能不直接记录语句,需额外处理(如用 MIXED)。

6. 怎么选择 binlog_format

选格式得看需求,给你点实际建议:

  • 用 STATEMENT

    • 数据库操作简单(无触发器、复杂函数)。
    • 磁盘空间有限,日志得省着点。
    • 主从环境完全一致(版本、配置相同)。
  • 用 ROW

    • 需要最高可靠性(金融、电商系统)。
    • 主从版本可能不同,或有复杂操作。
    • 磁盘空间充足,不怕日志大。
  • 用 MIXED(默认推荐):

    • 不确定选啥,MIXED 自动判断。
    • 想兼顾性能和可靠性。
    • 生产环境不想踩坑。

建议

  • 你当前用 ROW,适合高可靠性场景。如果日志大小没问题,可以继续用。
  • 如果需要同步权限语句(如 CREATE USER),考虑临时切到 MIXED
    binlog_format=MIXED
    

7. 设置和修改 binlog_format

  • 配置文件

    [mysqld]
    binlog_format=ROW
    
  • 动态修改(无需重启):

    SET GLOBAL binlog_format = 'ROW';
    
    • 注意:只影响新连接,现有连接需断开重连。
    • 确认修改:
      SHOW VARIABLES LIKE 'binlog_format';
      
  • 重启生效

    systemctl restart mysqld
    

总结

binlog_format 是 MySQL 控制二进制日志记录方式的“开关”,影响主从复制和数据恢复:

  • STATEMENT:记 SQL,省空间,可能不稳。
  • ROW:记数据,可靠但占空间。
  • MIXED:聪明切换,适合多数场景。

http://www.dtcms.com/a/599263.html

相关文章:

  • 如何做可以赚钱的网站永川网站制作联系电话
  • 基于野火stm32f407移植freertos(标准库版)
  • 小程序网站备案vr看房网站开发费用
  • 深圳网站建设哪里百度seo怎么样优化
  • 公司企业网站的选择怎样建立网站挣钱
  • 如何建设自己的小说网站企业网站建设ppt介绍
  • 宁波市建设厅网站首页网站模板选择
  • 代做财务报表分析网站dede网站安全
  • 国外优秀排版设计网站代做毕设自己专门网站
  • 营销企业网站建设应遵守的原则公司部门职位名称大全
  • 网站推广文案杭州市江干区建设局网站
  • 网站开发最佳实践建设官方网站需要那些人员
  • QuickAPI数据市场应用:业务人员自主获取授权API数据
  • 简单的网页设计作品图片seo 费用
  • 设计类专业网站有哪些北京橙乐视觉广告有限公司
  • 深度学习模型处理图片的所需的算力计算
  • 无锡网站建设推荐管理技巧与方法
  • 苏州企业建站程序阿里云个人备案可以做企业网站吗
  • 6.HashMap 从 JDK7 到 JDK21 的演进
  • 网站上传模板后asp.net网站开发项目源码
  • 网站建设与维护选择题建设展示型网站公司哪家好
  • python_相比C++的优点、改进和适用场景
  • 网站建设指导思想c++可视化界面设计
  • 商务网站信息审核的重要性在于电商平台的营销方式
  • 卡盟做网站芜湖企业网站制作
  • 网站 维护做爰全过程的视频网站
  • 阳泉网站建设移动互联网技术体系架构示意图
  • 美团做团购网站如何网站建设自己怎么个人网站
  • Twine/Harlowe 网页对话式作品开发技术手册
  • 怎样让自己的网站被收录博客网站是自己做的吗