windows MySQL的“数据”文件夹不断增长,即使在DROP TABLE之后

ffdz8vbo  于 2023-04-22  发布在  Windows
关注(0)|答案(2)|浏览(137)

我正在使用MySQL(8.0.33-winx 64,for Windows)和Python 3以及mysql.connector包。
最初我的mysql-8.0.33-winx64\data文件夹相当小:〈100 MB。
然后,在对CREATE TABLE...INSERT...DROP TABLE...进行了几次测试之后,我注意到即使在我完全删除表之后,data文件夹仍在继续增长:

  • #innodb_redo文件夹似乎保持在最大100 MB
  • #innodb_temp似乎很小
  • binlog.000001:这一个似乎是罪魁祸首:即使我把table掉了它也会继续变大!
    删除表后如何清理此数据存储,避免MySQL使用未使用的磁盘空间?

是否可以直接从Python3 mysql.connector API?或者从要执行的SQL命令(我已经尝试了“OPTIMIZE”但没有成功)?或者我需要手动使用OS函数(os.remove(...))?
注意:配置文件似乎在可移植Windows版本的mysql-8.0.33-winx64\data\auto.cnf中(未用作服务,但以mysqld --console启动)(第一次运行服务器后不会创建默认配置文件,我们可以在mysql-8.0.33-winx64\my.cnf中创建它)

ngynwnxp

ngynwnxp1#

您可以禁用二进制日志,但只能通过在my.cnf文件中设置disable_log_bin并重新启动MySQL服务器。(请参阅Disable MySQL binary logging with log_bin variable)您不能动态更改二进制日志。请参阅https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_log_bin
您可以使二进制日志在滚动到新的binlog文件时自动使旧日志过期。这有助于限制总存储空间。请参阅https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_expire_logs_seconds
在决定禁用二进制日志之前,您确实需要了解它的用途。您可能需要它!
二进制日志通常用于三或四件事:

  • 复制
  • 时间点恢复
  • 变更数据捕获(CDC)工具
  • 一种糟糕的变更审核形式。真实的的审核日志更好,但有些网站没有安装审核日志插件。

你能编辑以澄清撤销日志与bin日志之间的区别吗?
二进制日志用于记录对数据的逻辑更改。在COMMIT事务之前,不会向二进制日志中写入任何内容。它不用于回滚,因为根据定义,二进制日志中的任何内容都已提交。二进制日志适用于MySQL中的所有存储引擎。
Undo日志仅适用于InnoDB存储引擎。当您在事务期间对数据进行更改时,旧版本的数据会添加到Undo日志(在某些文档中也称为回滚段)。因此,如果您ROLLBACK,InnoDB可以恢复原始数据。如果您COMMIT,则该事务的Undo日志内容将被丢弃。
备注:

  • my.cf中设置disable_log_bin并重新启动MySQL服务器不会删除旧的binlog。
  • 如果您设置disable_log_bin并 * 首先 * 重新启动服务器,* 然后 * 执行FLUSH LOGS; PURGE BINARY LOGS BEFORE NOW();,则不会删除旧的binlog
  • 你必须先做FLUSH LOGS; PURGE BINARY LOGS BEFORE NOW();,然后才编辑配置mysql-8.0.33-winx64\my.cnf,包括:
[mysqld]
disable_log_bin

然后删除旧的日志,并且不会创建新的binlog。

6jjcrrmo

6jjcrrmo2#

binlog用于存储写入更改。它只存储完整事务,因此不包含部分写入。如果发生意外情况(例如删除表),则binlog将非常有用,以便您能够恢复这些表。它还可用于复制目的。请参阅https://dev.mysql.com/doc/refman/8.0/en/binary-log.html
现在,如果您完全确定不再需要binlog,那么可以清除它们,如

FLUSH LOGS;
PURGE BINARY LOGS BEFORE NOW();

参见https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html

相关问题