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

长春企业公司网站建设百度热搜大数据

长春企业公司网站建设,百度热搜大数据,免费网站提供,哈尔滨建设银行网站首页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/wzjs/221629.html

相关文章:

  • 大学生网站开发文档网络营销的类型有哪些
  • 不用网站做cpa关键词优化技巧有哪些
  • 自动做微网站如何注册一个网站
  • 建设银行河北分行官网招聘网站河南企业网站建设
  • 目前专业做水果的网站有哪些互联网网站
  • 免费的tickle网站竞价排名点击
  • 做货运网站找哪家好免费b站推广软件
  • 淘宝做基础销量怎么网站苏州网站
  • 域名和网站建设实训报告市场策划方案
  • 台州自助建站百度关键词排名联系
  • 长沙优化网站哪家公司好重庆网站制作系统
  • 做网站用dw还是vs网络营销策略案例分析
  • 韩国做色情网站违法不营销课程培训都有哪些
  • 让别人访问自己做的网站搜索点击软件
  • 济南做网站公司关于营销的最新的新闻
  • b2c网站是什么意思百度网盘登陆入口
  • centos7.2做网站nba最新交易汇总实时更新
  • 网络营销推广方案有哪些seo搜索排名
  • 广西哪家公司做网站的web设计一个简单网页
  • 网站建设的常用技术有哪些渠道推广有哪些方式
  • 国家城乡住房建设部网站seo比较好的优化方法
  • 微信怎么做小程序的网站更换服务器对seo的影响
  • 网站策划书网站需求分析网络营销团队
  • 惠州网站设计哪家好seo页面链接优化
  • 做实验室信息的网站网络运营
  • 天津市城乡建设委员会官方网站2023广州疫情最新消息今天
  • 淘宝领券网站怎么做百度指数排名热搜榜
  • 最大的外包公司有哪些seo排名优化课程
  • 哪个网站推荐做挖机事的国家卫生健康委
  • 中国建设教育协会是个什么网站游戏app拉新平台