BruceOuyang / issuelist

用于记录日常碰到的各种问题和经验总结 (请看Issues)
4 stars 2 forks source link

mysql 常规数据清理 #99

Open BruceOuyang opened 2 years ago

BruceOuyang commented 2 years ago

0x01.清理 binlog 文件

a. 清理到指定 binlog 名称(序号小于指定名称的binlogs会被清理掉)

# 登录 mysql 执行命令进行试验
mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |      1031 |
| mysql-bin.000002 |      1861 |
| mysql-bin.000003 |       154 |
+------------------+-----------+
3 rows in set (0.00 sec)

mysql> purge master logs to 'mysql-bin.000002';
Query OK, 0 rows affected (0.00 sec)

mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000002 |      1861 |
| mysql-bin.000003 |      2644 |
+------------------+-----------+
2 rows in set (0.00 sec)

b. 清理指定时间之前的 binlog

# 查看 mysql 的 data 目录下的 binlogs,可以看到日期
[root@localhost data]# ll -h mysql-*
-rw-r----- 1 mysql mysql 1.9K 3月   9 15:50 mysql-bin.000002
-rw-r----- 1 mysql mysql 7.5K 3月   9 15:51 mysql-bin.000003
-rw-r----- 1 mysql mysql  984 3月   9 15:51 mysql-bin.000004
-rw-r----- 1 mysql mysql   57 3月   9 15:51 mysql-bin.index
-rw-r----- 1 mysql mysql  18K 3月   9 15:51 mysql-slow.log

# 登录 mysql  执行命令进行试验
mysql> purge master logs before '2022-03-09 15:51:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000003 |      7671 |
| mysql-bin.000004 |     14264 |
+------------------+-----------+
2 rows in set (0.00 sec)

c.清理几天前的binlogs

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
BruceOuyang commented 2 years ago

0x02.清理 schema 文件

schema 文件对应 数据库,如果有弃用的数据库,可直接执行 drop 命令清理

drop database your_dbName;
BruceOuyang commented 2 years ago

0x03.general_log 文件

general log 一般是不会开启的,会记录数据库操作的所有内容,文件会很大,如果开启了,想要清理,可进行如下操作

  1. 登录 mysql, 关闭 general_log

    mysql>SET GLOBAL general_log = 'OFF';
  2. 进入 mysql 的 data 目录,执行命令清空文件

    cat /dev/null > general_log.CSV