MySQL数据库清理Relay_Log_File日志

2024-01-05 09:50

本文主要是介绍MySQL数据库清理Relay_Log_File日志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

“Relay_Log_File” 是 MySQL 中用于复制的参数之一。在 MySQL 复制中,当一个服务器作为主服务器(master)时,它会将其更改写入二进制日志文件(binary log file)。而另一个服务器作为从服务器(slave)时,则会从主服务器复制这些更改,并将它们写入中继日志文件(relay log file)。

需求:

  • 搭建的主从复制数据库出现了故障,导致slave异常,同步已经失效。
  • 再次重建主从关系时,发现硬盘被大量的Relay_Log_File文件占满,需要清理并释放空间。
  • Relay_Log_File文件名称如下图:
    在这里插入图片描述
    数据目录/data硬盘空间已经被占用73%
[ptmauser@mysql-0002 data]$ df -h
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                       31G     0   31G   0% /dev
tmpfs                          31G   12K   31G   1% /dev/shm
tmpfs                          31G  2.3G   29G   8% /run
tmpfs                          31G     0   31G   0% /sys/fs/cgroup
/dev/mapper/klas-root          93G   54G   40G  58% /
tmpfs                          31G   56K   31G   1% /tmp
/dev/vda1                     2.0G  219M  1.8G  11% /boot
/dev/vda2                    1022M   20K 1022M   1% /boot/efi
tmpfs                         6.2G     0  6.2G   0% /run/user/993
/dev/mapper/datavg-data_lv01  200G  145G   56G  73% /data
tmpfs                         6.2G     0  6.2G   0% /run/user/1000
tmpfs                          60M     0   60M   0% /var/log/rtlog
tmpfs                         6.2G     0  6.2G   0% /run/user/1001

解决:

  • 登录mysql-cli,关闭slave实例,通过reset slave实例清除Relay_Log_File文件。

实际操作

登录MySQL-cli

[ptmauser@mysql-0002 data]$ mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.7.42-log MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

检查slave状态

MySQL [(none)]> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Master_Host: 172.22.88.15Master_User: replMaster_Port: 5575Connect_Retry: 60Master_Log_File: binlog.000097Read_Master_Log_Pos: 911621900Relay_Log_File: mysql-0002-relay-bin.000002Relay_Log_Pos: 148188Relay_Master_Log_File: binlog.000005Slave_IO_Running: NoSlave_SQL_Running: NoReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 148680Relay_Log_Space: 152830684793Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 0Master_UUID: a90b3d6a-419c-11ee-ab08-fa163e5b8157Master_Info_File: /data/data/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Master_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: a90b3d6a-419c-11ee-ab08-fa163e5b8157:8-2042286Executed_Gtid_Set: 9553cced-419c-11ee-8f4c-fa163e7c44c3:1-4,
a90b3d6a-419c-11ee-ab08-fa163e5b8157:8-154Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 
1 row in set (0.000 sec)ERROR: No query specified

尝试重启slave实例,并检查状态

MySQL [(none)]> start slave;
Query OK, 0 rows affected (0.002 sec)MySQL [(none)]> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Queueing master event to the relay logMaster_Host: 172.22.88.15Master_User: replMaster_Port: 5575Connect_Retry: 60Master_Log_File: binlog.000101Read_Master_Log_Pos: 422443924Relay_Log_File: mysql-0002-relay-bin.000002Relay_Log_Pos: 148188Relay_Master_Log_File: binlog.000005Slave_IO_Running: YesSlave_SQL_Running: NoReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1008Last_Error: Error 'Can't drop database 'db_api_data_manager_yw'; database doesn't exist' on query. Default database: 'db_api_data_manager_yw'. Query: 'DROP DATABASE `db_api_data_manager_yw`'Skip_Counter: 0Exec_Master_Log_Pos: 148680Relay_Log_Space: 153306313854Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 1008Last_SQL_Error: Error 'Can't drop database 'db_api_data_manager_yw'; database doesn't exist' on query. Default database: 'db_api_data_manager_yw'. Query: 'DROP DATABASE `db_api_data_manager_yw`'Replicate_Ignore_Server_Ids: Master_Server_Id: 8815Master_UUID: a90b3d6a-419c-11ee-ab08-fa163e5b8157Master_Info_File: /data/data/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Master_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: 231115 13:59:38Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: a90b3d6a-419c-11ee-ab08-fa163e5b8157:8-2063342Executed_Gtid_Set: 9553cced-419c-11ee-8f4c-fa163e7c44c3:1-4,
a90b3d6a-419c-11ee-ab08-fa163e5b8157:8-154Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 
1 row in set (0.000 sec)ERROR: No query specified

确认主从关系丢失,已出现了具体的同步报错:

 Last_SQL_Error: Error 'Can't drop database 'db_api_data_manager_yw'; database doesn't exist' on query. Default database: 'db_api_data_manager_yw'. Query: 'DROP DATABASE `db_api_data_manager_yw`'

之后再想办法重建主从关系,本文先清理Relay_Log_File文件。

重置slave实例

在MySQL-cli中关闭slave实例,重置slave实例,MySQL将自动清理硬盘上产生的Relay_Log_File文件。

MySQL [(none)]> stop slave;
Query OK, 0 rows affected (0.001 sec)MySQL [(none)]> reset slave;
Query OK, 0 rows affected (2.699 sec)MySQL [(none)]> exit

退出MySQL-cli,验证数据目录及relay_log_file文件。

检查硬盘空间及Relay_Log_File

大量堆积的relay-bin-log被成功自动清除。
在这里插入图片描述

数据目录/data/硬盘空间已经自动清理,使用率重新回到正常数值2%。

[ptmauser@mysql-0002 data]$ df -h
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                       31G     0   31G   0% /dev
tmpfs                          31G   12K   31G   1% /dev/shm
tmpfs                          31G  2.3G   29G   8% /run
tmpfs                          31G     0   31G   0% /sys/fs/cgroup
/dev/mapper/klas-root          93G   54G   40G  58% /
tmpfs                          31G   56K   31G   1% /tmp
/dev/vda1                     2.0G  219M  1.8G  11% /boot
/dev/vda2                    1022M   20K 1022M   1% /boot/efi
tmpfs                         6.2G     0  6.2G   0% /run/user/993
/dev/mapper/datavg-data_lv01  200G  2.3G  198G   2% /data
tmpfs                         6.2G     0  6.2G   0% /run/user/1000
tmpfs                          60M     0   60M   0% /var/log/rtlog
tmpfs                         6.2G     0  6.2G   0% /run/user/1001
[ptmauser@mysql-0002 data]$ 

注意:

  1. 避免手动直接删除relay-bin-log文件。
  2. 重置slave实例前,先关闭slave实例。

结束

这篇关于MySQL数据库清理Relay_Log_File日志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572473

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID