Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问如何快速清除无用数据库数据 #243

Open
623524718 opened this issue May 31, 2023 · 3 comments
Open

请问如何快速清除无用数据库数据 #243

623524718 opened this issue May 31, 2023 · 3 comments

Comments

@623524718
Copy link

程序运行了比较久了,mysql-bin.000021这个文件已经达到了700MB,还有几个100MB多的,该如何去除其中的无用数据
工具箱页面中的“优化所有的数据库”这个功能点击后会跳转到首页,而后检查文件,并没有任何改变,感觉应该不是在这进行的

@n0099
Copy link
Collaborator

n0099 commented May 31, 2023

https://dev.mysql.com/doc/refman/8.0/en/binary-log.html

https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_expire_logs_seconds

默认的二进制日志有效期为 2592000 秒,即 30 天(30*24*60*60秒)。如果 binlog_expire_logs_seconds 和已弃用的系统变量 expire_logs_days 都没有在启动时设置值,则应用默认值。如果在启动时为变量 binlog_expire_logs_seconds 或 expire_logs_days 之一设置了非零值,则该值将用作二进制日志有效期。如果在启动时为这两个变量设置了非零值, binlog_expire_logs_seconds 的值将用作二进制日志有效期, expire_logs_days 的值将被忽略并显示一条警告消息。
要手动删除二进制日志文件,请使用 PURGE BINARY LOGS 语句。请参阅第 13.4.1.1 节,“PURGE BINARY LOGS 语句”

https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#option_mysqld_log-bin

在早期的 MySQL 版本中,二进制日志记录在默认情况下是禁用的,如果您指定了 --log-bin 选项,则会启用。从 MySQL 8.0 开始,二进制日志默认启用,无论您是否指定 --log-bin 选项。例外情况是,如果您使用 mysqld 通过使用 --initialize 或 --initialize-insecure 选项调用它来手动初始化数据目录,则默认情况下禁用二进制日志记录。在这种情况下,可以通过指定 --log-bin 选项来启用二进制日志记录。启用二进制日志记录后,显示服务器上二进制日志记录状态的 log_bin 系统变量将设置为 ON。
要禁用二进制日志记录,您可以在启动时指定 --skip-log-bin 或 --disable-log-bin 选项。如果指定了这些选项中的任何一个并且还指定了 --log-bin ,则以后指定的选项优先。禁用二进制日志记录时, log_bin 系统变量设置为 OFF。

@BANKA2017
Copy link
Collaborator

这些 mysql-bin.一串数字 都是 binlog 文件,直接删掉即可,如果需要更安全的删除手法或者一劳永逸彻底关闭binlog请参考楼上

@n0099
Copy link
Collaborator

n0099 commented May 31, 2023

直接删掉即可

然后他发现需要重启mysqlddf -h才会显示磁盘空间被释放,这正是linux特色之rm一个fd只是从fs管理的目录表中移除了inode,如果有任何进程仍然通过fd持有对该inode的引用那么必须在该进程释放(比如进程退出)inode后kernel才会让fs去discard该inode所占用的block

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants