码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用 MySQL 日志 | 二进制日志 - Part 2


    日志是关于记录数据库中发生的事情。就像有些人可能会保留个人日志来记下他们日常生活中发生的事情一样,数据库日志会跟踪登录和事务等事情。更重要的是,有效的日志应包括有关访问控制和输入验证失败的条目。难怪默认情况下 MySQL 唯一启用的日志是错误日志(至少在 Windows 上)。

    上周的文章简介了 MySQL 中不同的日志类型,重点介绍了其中最重要的-错误、常规、二进制和慢速日志,并涵盖了前两个。今天我们会更详细地介绍二进制日志,而慢速日志将留待第 3 部分。

    ​如果你想要试用 Navicat Premium 16,点击这里下载免费全功能试用版。

    二进制日志记录的语句

    二进制日志用于存储描述数据库更改的事件,例如表创建操作或通过 INSERT 和 UPDATE 等语句更改表数据。除了使用基于行的日志记录外,它还保存一些可能已进行更改的语句(例如删除不存在行的 DELETE 语句)的事件(有关此内容的更多信息,请参见下文)。因此,二进制日志不包括没有修改数据的语句,例如 SELECT 或 SHOW 等,这些可以在常规查询日志中找到。

    二进制日志有两个重要用途:

    • 对于复制,主复制服务器上的二进制日志提供要发送到从服务器的数据更改的记录。实际上,主服务器将其二进制日志中包含的事件发送到其从服务器,以便它们运行相同的命令,进行与主服务器上相同的数据更改。
    • 某些数据恢复操作会使用二进制日志。还原备份后,将重新运行二进制日志中与备份相关的事件,以便将数据库同步到执行备份时的位置。

    尽管有这些非常重要的用途,但默认情况下二进制日志是禁用的,因为它会稍微降低性能。但是,二进制日志在设置复制时和从备份还原时提供的好处通常会超过这种轻微的性能影响。

    二进制日志格式

    MySQL 为二进制日志提供了三种日志记录格式,每种格式都有自己的优缺点。与其他日志不同,你无法使用简单的 ON/OFF 开关启用它。相反,你必须使用“--binlog-format = type”启动 MySQL 服务器来选择二进制日志的格式。每种类型的确切语句如下所述:

    • 基于语句
      基于语句的日志记录了所有对表的数据或结构进行更改的 SQL 语句。使用 --binlog-format=STATEMENT 启用。
      某些非确定性语句可能对复制来说是不安全的。如果 MySQL 确定是这种情况,它将发出警告“Statement may not be safe to log in statement format”。
    • 基于行
      在基于行的日志中,主服务器将事件写入二进制日志,以指示各个表行的影响方式。因此,表必须始终包含主键以确保可以有效地识别行。你可以使用 --binlog-format=ROW 启動服务器来告诉它使用基于行的日志。
    • 混合
      第三种选项是混合日志。使用此日志格式时,默认情况下会使用基于语句的日志,但在某些情况下,日志模式会自动切换到基于行。若要使用混合日志,请使用选项 --binlog-format=MIXED 启动 MySQL。

    图 1-在 Navicat 的服务器监控工具中的 binlog_format 服务器变量

     往期回顾

    1. 假冒网站引发多重安全风险 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件
    2. Navicat 荣获 Microsoft 金牌合作伙伴
    3. Navicat 16.3 正式支持 OceanBase 企业版​
    4. 免费试用 Navicat 16
    5. Navicat 的 20年发展史
    6. SQL 语句中 WHERE 1=1 的作用
    7. SQL 中计算总行数的百分比
    8. 互动有礼活动进行中 | 奖品为价值 819 元 Navicat Premium
    9. Navicat NAPP 校企合作和申请免费一年期的 Navicat Premium 教育版
  • 相关阅读:
    centos格式化硬盘/u盘的分区为NTFS格式
    DTD之XML的元素&属性定义
    2022-08-26 第六小组 瞒春 学习笔记
    【机器学习】数值分析02——任意方程求根
    一文搞定POI,再也不怕excel导入导出了
    在Docker中安装nacos
    Linux网络配置
    Django实战项目-学习任务系统-发送短信通知
    企业级的商用远程控制软件有哪些
    Caller 服务调用 - Dapr
  • 原文地址:https://blog.csdn.net/weixin_53935287/article/details/127686934
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号