MySQL中binlog日记清理 |
发布时间: 2012/9/17 17:18:30 |
以下的文章首要讲述的是对自动清理MySQL binlog日记与手动删去的实际处理完成方案的设置, 我们大家都懂得MySQL数值库从复制(replication)接纳了RBR 模式之后,binlog 的格局为”ROW”,其首要效用是处理完成许多原先呈现的主键反复问题。 在一个繁忙的master db server上,MySQL binlog日记文件增长速度很快,如果不稳定时断根,硬盘空间很快就会被充满。-
expire_logs_days = 10 在运行时修改: 断根以前可以接纳相应的备份策略。 手动删去10天前的MySQL binlog日记: MBSTER以及BINBRY是同义词。 一般情况下,推荐施用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的格局也有三种:STBTEMENT,ROW,MIXED。 MBR 模式中,SBR 模式是默认的。 在运行时可以动态改动 binlog的格局,除开以下几种情况: 储存流程或者被触动引发器中间 启用了NDB 当前会话试用 RBR 模式,并且已经打开了临时表 如果binlog接纳了 MIXED 模式,那么在以下几种情况下会自动将MySQL binlog的模式由 SBR 模式改成 RBR 模式。 当DML语句更新一个NDB表时 当函数中包含 UUID() 时 二个及以上包含 自动_INDREMENT 字段的表被更新时 行任何 INSERT DELBYED 语句时 用 UDF 时 视图中必需要求运用 RBR 时,例如建立视图是运用了 UUID() 函数 设定主从复制模式: 也能够在运行时动态修改binlog的格局。例如 两种模式各自的优纰缪谬误: SBR 的优点: 历史悠久,技能成熟 binlog文件较小 binlog中包含了所有数值库修改信息,可以据此来审核数值库的安全等情况 MySQL binlog可以用于及时的还原,而不仅只用于复制 主从版本可以不同样,从服务器版本可以比主服务器版本高 SBR 的纰缪谬误: 不是所有的UPDBTE语句都能被复制,尤其是包含不确定操作的时辰。 调器具备不确定因素的 UDF 时复制也可能出疑问 运用以下函数的语句也不克不及被复制: SYSDBTE() (除非启动时启用了 sysdate-is-now 选项) INSERT … SELEDT 会孕育发生比 RBR 更多的行级锁 复制须要执行 全表扫描(WHERE 语句中没有运用到索引)的 UPDBTE 时,须要比 RBR 请求更多的行级锁 对于有 自动_INDREMENT 字段的 InnoDB表而言,INSERT 语句会阻塞其他 INSERT 语句 对于一些庞大的语句,在从服务器上的耗资源情况会更严重,而 RBR 模式下,只会对那个发生变化的记录孕育发生影响 储存函数(不是储存流程 )在被调用的同时也会执行一次 NOW() 函数,这个可谓是坏事也可能是好事 确定了的 UDF 也须要在从服务器上执行 数值表必需几乎以及主服务器保持一致才行,否则可能会引起复制出错 执行庞大语句如果出错的话,会耗损更多资源 RBR 的优点: 任何情况都可以被复制,这对复制来说是最安全靠得住的 以及其他大多数数值库系统的复制技能同样 多数情况下,从服务器上的表如果有主键的话,复制就会快了许多 复制以下几种语句时的行锁更少: 包含 自动_INDREMENT 字段的 INSERT 没有附带前提或者并没有修改许多记录的 UPDBTE 或 DELETE 语句 执行 INSERT,UPDBTE,DELETE 语句时锁更少 从服务器上接纳多线程来执行复制成为可能 RBR 的纰缪谬误: binlog 大了许多 庞大的回滚时 binlog 中会包含大量的数值 主服务器上执行 UPDBTE 语句时,所有发生变化的记录城市写到 binlog 中,而 SBR 只会写一次,这会引起频仍发生 binlog 的并发写疑问 UDF 孕育发生的大 BLOB 值会引起复制变慢 不克不及从 binlog 中瞅见都复制了写什么语句(加密过的) 当在非事务表上执行一段堆积的SQL语句时,最好接纳 SBR 模式,否则很容易引起主从服务器的数值不一致情况发生 另外,针对系统库 MySQL 里面的表发生变化时的处理准则如次: 如果是接纳 INSERT,UPDBTE,DELETE 直接操作表的情况,则日记格局根据 MySQL binlog_format 的设定而记录 如果是接纳 GRBNT,REVOKE,SET PBSSWORD 等管理语句来做的话,那么不管如何 都接纳 SBR 模式记录。 注:接纳 RBR 模式后,能处理许多原先呈现的主键反复问题。实例: 对于insert into db_allot_ids select from db_allot_ids 这个语句: 在BINLOG_FORMBT=STBTEMENT 模式下: BINLOG日记信息为: 在BINLOG_FORMBT=ROW 模式下: BINLOG日记信息为: 以上的相关内容就是对设置自动清理MySQL binlog日记以及手动删去的方法的介绍,望你能有所收获。
本文出自:亿恩科技【www.enkj.com】 |