zoukankan      html  css  js  c++  java
  • Mysql 删除从数据库的relay logs最佳方式、最安全方式

    情景
    MySQL数据库主从复制在默认情况下从库的relay logs会在SQL线程执行完毕后被自动删除。但是:在relay_log_purge = 0和MHA集群下,不会被自动删除,需要手动删除。如何安全的删除relay logs就比较关键了!

    主要有两种方式:

    方式一:
    通过MHA中自带的工具 purge_relay_logs 工具来删除。

    步骤:

    1. 创建工作目录

    目的为了提高性能,这个工作目录必须跟mysql在同一个磁盘分区

    mkdir -p /data/mha_tmp
    1. purge relay logs
    /usr/bin/purge_relay_logs --user=USERNAME --password=PASSWORD --host=Mysql_IP --disable_relay_log_purge --workdir=/data/mha_tmp 2>&1  
    1. 加入到crontab中
    0 4 * * * /usr/bin/purge_relay_logs --user=USERNAME --password=PASSWORD --host=Mysql_IP --disable_relay_log_purge --workdir=/data/mha_tmp 2>&1

    说明:
    –disable_relay_log_purge:自动设置 "relay_log_purge = 1"

    方式二:
    手动删除 relay log

    1. 设置relay_log_purge = 1
    SET GLOBAL relay_log_purge = 1
    1. flush logs
      通过管理员用户登陆从数据库,然后执行下面命令:
    flush logs;

    可以执行多次!
    注意
    观察堆积的relay logs日志是否已经删除,如果删除,直接执行下面第6步“恢复relay_log_purge = 0“;如果未删除,继续从下面第3步”停止slave“往下操作!!!

    1. 停止slave
      通过管理员用户登陆从数据库,然后执行下面命令:
    stop slave;
    1. 删除relay logs
      可以通过rm直接删除relay logs
      通使用下面方式安全删除:

    (1) 统计所有关于relay的文件(包括 relay_log_name.index)总个数

    ls -A1 |grep relay | sort -rn | wc -l

    (2) 列出要删除所有有关relay的文件:

    ls -A1 |grep relay | sort -rn | tail -n 100

    说明: 100 为要删除的relay logs 数量

    (3) 确定没有问题,删除relay logs:

    ls -A1 |grep relay | sort -rn | tail -n 100 | xargs rm -rf {}

    注意:
    要保留最新的两个relay log
    要保留relay log的index文件
    relay log的index一般命名为: relay_log_name.index
    例如: relay-bin.index
    5. 启动slave
    通过管理员用户登陆从数据库,然后执行下面命令:

    start slave;

    6 . 恢复relay_log_purge = 0
    通过管理员用户登陆从数据库,然后执行下面命令:

    SET GLOBAL relay_log_purge=0;

    扩展
    如果你对从数据库要求不高,可以将relay_log_purge = 1

  • 相关阅读:
    Spring 中的事务操作、注解、以及 XML 配置
    ..OBJLED.axf: Error: L6218E: Undefined symbol EXTI_Init (referred from exti.o). 错误修改
    ADC分辨率
    单片机ADC检测4-20mA电路,以及计算方法
    STM32速度---网页讲解
    转载电子发烧友网---STM32的IO口灌入电流和输出驱动电流
    精密电阻性能
    ..OBJCAN.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.
    asp.net---jquery--ajax 实现滚动条滚动到底部分页显示
    柱状图dataLabels 文字格式 以及如何获取柱子的name(名称)属性
  • 原文地址:https://www.cnblogs.com/kcxg/p/11128181.html
Copyright © 2011-2022 走看看