MoeNetwork / Tieba-Cloud-Sign

百度贴吧云签到,在服务器上配置好就无需进行任何操作便可以实现贴吧的全自动签到。配合插件使用还可实现云灌水、点赞、封禁、删帖、审查等功能。注意:Gitee (原Git@osc) 仓库将不再维护,目前唯一指定的仓库为 Github。本项目没有官方交流群,如需交流可以直接使用Github的Discussions。没有商业版本,目前贴吧云签到由社区共同维护,不会停止更新(PR 通常在一天内处理)。
https://github.com/MoeNetwork/Tieba-Cloud-Sign/wiki
Other
1.82k stars 412 forks source link

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

Open 623524718 opened 1 year ago

623524718 commented 1 year ago

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

n0099 commented 1 year ago

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 commented 1 year ago

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

n0099 commented 1 year ago

直接删掉即可

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