zoukankan      html  css  js  c++  java
  • 关于Relay Log无法自己主动删除的问题(Neither --relay-log nor --relay-log-index were used)

    今天查看mysql err日志。发现mysql重新启动时总会有例如以下日志出现:

    [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=liytest-relay-bin' to avoid this problem.


    这个警告提示本身的意思,作为slave,为防止由于主机名变更导致relay log文件名称无效的问题,最好设置'--relay-log=liytest-relay-bin'

    但问题时,我这机器根本就没有开启slave模式,并且数据文件夹下一直有liytest-relay-bin.000001,relay的出现并且堆积。上网搜索总结一下原因

    该实例原先是一个Slave   -------导致relay-log 和 relay-log.index的存在

    该实例眼下已经不是Slave  -------由于没有了IO-Thread,导致relay-log-purge 没有起作用( 这也是其它Slave实例没有这样的情况的原因。由于IO-thread会做自己主动rotate操作)。

    该实例每天会进行日常备份  -------Flush logs的存在,导致每天会生成一个relay-log

    该实例没有配置expire-logs-days ------导致flush logs时,也不会做relay-log清除

    简而言之就是: 一个实例假设之前是Slave,而之后停用了(stop slave),且没有配置expire-logs-days的情况下,会出现relay-log堆积的情况。


    顺带也和大家分享下MySQL 内部Logrotate的机制
    Binary Log rotate机制:
    Rotate:每一条binary log写入完毕后,都会推断当前文件是否超过 max_binlog_size,假设超过则自己主动生成一个binlog file
    Delete:expire-logs-days 仅仅在 实例启动时 和 flush logs 时推断,假设文件訪问时间早于设定值,则purge file
     
    Relay Log rotate 机制:
    Rotate:每从Master fetch一个events后,推断当前文件是否超过 max_relay_log_size 假设超过则自己主动生成一个新的relay-log-file
    Delete:purge-relay-log 在SQL Thread每运行完一个events时推断,假设该relay-log 已经不再须要则自己主动删除

    因此建议当slave不再使用时,一定要通过reset slave来取消relaylog,不然即使重新启动mysql,问题还是一样存在。


  • 相关阅读:
    oracle 11g如何完全卸载
    【Python】Django Model 怎么使用 UUID 作为主键?
    【云计算】K8S DaemonSet 每个node上都运行一个pod
    【Linux】为啥查某个进程的线程,查出来的所有线程的pid不一样啊
    【JavaScript】SVG vs Canvas vs WebGL
    【Python】使用 sphinx 制作简洁而又美观的文档
    【云计算】监控 告警 怎么做
    【Redis】Redis分布式集群几点说道
    【Hadoop】HIVE 小结概览
    【Hadoop】Hive HSQ 使用 && 自定义HQL函数
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5058076.html
Copyright © 2011-2022 走看看