MySQL数据库清理Relay

阅读: 评论:0

MySQL数据库清理Relay

MySQL数据库清理Relay

背景

“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 statusG;
*************************** 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 statusG;
*************************** 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实例。

结束

本文发布于:2024-01-31 02:16:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170663860724625.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:mysql relay log
标签:数据库   MySQL   Relay
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23