关闭 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技术。

    上一篇返回首页 下一篇

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

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

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

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