关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » MySQL »自动清理MySQL binlog日志与手动删除的设置

    自动清理MySQL binlog日志与手动删除的设置

    2010-05-18 11:28:00 出处:ITJS
    分享

    以下的文章主要讲述的是对自动清理MySQL binlog日志与手动删除的实际解决方案的设置, 我们大家都知道MySQL数据库从复制(replication)采用了RBR 模式之后,binlog 的格式为"ROW",其主要作用是解决很多原先出现的主键重复问题。

    在一个繁忙的master db server上,MySQL binlog日志文件增长速度很快,如果不定时清除,硬盘空间很快就会被充满。

    设置自动清理MySQL binlog日志,配置my.cnf:

    expire_logs_days = 10

    在运行时修改:

    show binary logs;   show variables like '%log%';   set global expire_logs_days = 10; 

    清除之前可以采用相应的备份策略。

    手动删除10天前的MySQL binlog日志:

    PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY);  show master logs; 

    MASTER和BINARY是同义词。

    一般情况下,推荐使用MIXED binlog的复制。http://dev.MySQL.com/doc/refman/5.1/en/open-bugs-general.html中的说明:Replication uses query-level logging: The master writes the executed queries to the binary logThis is a very fast, compact, and efficient logging method that works perfectly in most cases

    附:关于MySQL复制的几种模式

    从 MySQL 5.1.12 开始,可以用以下三种模式来实现:

    基于SQL语句的复制(statement-based replication, SBR),

    基于行的复制(row-based replication, RBR),

    混合模式复制(mixed-based replication, MBR)。

    相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。 MBR 模式中,SBR 模式是默认的。

    在运行时可以动态改动 binlog的格式,除了以下几种情况:

    存储流程或者触发器中间

    启用了NDB

    当前会话试用 RBR 模式,并且已打开了临时表

    如果binlog采用了 MIXED 模式,那么在以下几种情况下会自动将MySQL binlog的模式由 SBR 模式改成 RBR 模式。

    当DML语句更新一个NDB表时

    当函数中包含 UUID() 时

    2个及以上包含 AUTO_INCREMENT 字段的表被更新时

    行任何 INSERT DELAYED 语句时

    用 UDF 时

    视图中必须要求运用 RBR 时,例如建立视图是运用了 UUID() 函数

    设定主从复制模式:

    log-bin=MySQL-bin  #binlog_format="STATEMENT" #binlog_format="ROW" binlog_format="MIXED" 

    也可以在运行时动态修改binlog的格式。例如

    MySQL> SET SESSION binlog_format = 'STATEMENT';  MySQL> SET SESSION binlog_format = 'ROW';  MySQL> SET SESSION binlog_format = 'MIXED';  MySQL> SET GLOBAL binlog_format = 'STATEMENT';  MySQL> SET GLOBAL binlog_format = 'ROW';  MySQL> SET GLOBAL binlog_format = 'MIXED'; 

    两种模式各自的优缺点:

    SBR 的优点:

    历史悠久,技能成熟

    binlog文件较小

    binlog中包含了所有数据库修改信息,可以据此来审核数据库的安全等情况

    MySQL binlog可以用于实时的还原,而不仅仅用于复制

    主从版本可以不一样,从服务器版本可以比主服务器版本高

    SBR 的缺点:

    不是所有的UPDATE语句都能被复制,尤其是包含不确定操作的时候。

    调用具有不确定因素的 UDF 时复制也可能出疑问

    运用以下函数的语句也不能被复制:

    LOAD_FILE()

    UUID()

    USER()

    FOUND_ROWS()

    SYSDATE() (除非启动时启用了 –sysdate-is-now 选项)

    INSERT … SELECT 会产生比 RBR 更多的行级锁

    复制须要执行 全表扫描(WHERE 语句中没有运用到索引)的 UPDATE 时,须要比 RBR 请求更多的行级锁

    对于有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT 语句会阻塞其他 INSERT 语句

    对于一些复杂的语句,在从服务器上的耗资源情况会更严重,而 RBR 模式下,只会对那个发生变化的记录产生影响

    存储函数(不是存储流程 )在被调用的同时也会执行一次 NOW() 函数,这个可以说是坏事也可能是好事

    确定了的 UDF 也须要在从服务器上执行

    数据表必须几乎和主服务器保持一致才行,否则可能会导致复制出错

    执行复杂语句如果出错的话,会消耗更多资源

    RBR 的优点:

    任何情况都可以被复制,这对复制来说是最安全可靠的

    和其他大多数数据库系统的复制技能一样

    多数情况下,从服务器上的表如果有主键的话,复制就会快了很多

    复制以下几种语句时的行锁更少:

    INSERT … SELECT

    包含 AUTO_INCREMENT 字段的 INSERT

    没有附带条件或者并没有修改很多记录的 UPDATE 或 DELETE 语句

    执行 INSERT,UPDATE,DELETE 语句时锁更少

    从服务器上采用多线程来执行复制成为可能

    RBR 的缺点:

    binlog 大了很多

    复杂的回滚时 binlog 中会包含大量的数据

    主服务器上执行 UPDATE 语句时,所有发生变化的记录都会写到 binlog 中,而 SBR 只会写一次,这会导致频繁发生 binlog 的并发写疑问

    UDF 产生的大 BLOB 值会导致复制变慢

    不能从 binlog 中看到都复制了写什么语句(加密过的)

    当在非事务表上执行一段堆积的SQL语句时,最好采用 SBR 模式,否则很容易导致主从服务器的数据不一致情况发生

    另外,针对系统库 MySQL 里面的表发生变化时的处理准则如下:

    如果是采用 INSERT,UPDATE,DELETE 直接操作表的情况,则日志格式根据 MySQL binlog_format 的设定而记录

    如果是采用 GRANT,REVOKE,SET PASSWORD 等管理语句来做的话,那么无论如何 都采用 SBR 模式记录。

    注:采用 RBR 模式后,能处理很多原先出现的主键重复问题。实例:

    对于insert into db_allot_ids select from db_allot_ids 这个语句:

    在BINLOG_FORMAT=STATEMENT 模式下:

    BINLOG日志信息为:

    BEGIN  /*!*/;  # at 173  #090612 16:05:42 server id 1 end_log_pos 288 Query thread_id=4 exec_time=0 error_code=0 SET TIMESTAMP=1244793942/*!*/;  insert into db_allot_ids select * from db_allot_ids  /*!*/; 

    在BINLOG_FORMAT=ROW 模式下:

    BINLOG日志信息为:

    BINLOG '  hA0yShMBAAAAMwAAAOAAAAAAAA8AAAAAAAAAA1NOUwAMZGJfYWxsb3RfaWRzAAIBAwAA  hA0yShcBAAAANQAAABUBAAAQAA8AAAAAAAEAAv/8AQEAAAD8AQEAAAD8AQEAAAD8AQEAAAA=  '/*!*/; 

    上面说了这么多内容,是关于对设置自动清理MySQL binlog日志和手动删除的方法的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注ITJS,学习最新Mysql技术。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    如何从 Windows 11 中完全删除/卸载 OneNote?无解!

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术热点

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。