我正在尝试释放MySQL
实例使用的一些空间,但我对MySQL
.
我注意到mysql\data
文件夹中有很多localhost-bin.0001**
文件,如下面的屏幕截图所示:
这些是什么?它们可以备份/移动/删除吗?
编辑
从这里看,这些文件是日志文件,可以删除。
帖子提到:
As long as you do not have mysql replication installed, then [you can delete the files].
Run Code Online (Sandbox Code Playgroud)
我如何检查这个?
首先,您应该运行以下命令:
SELECT COUNT(1) ReplicationUserCount
FROM mysql.user WHERE Repl_slave_priv = 'Y';
Run Code Online (Sandbox Code Playgroud)
如果ReplicationUserCount
> 0,则 DB Server 可以用作 Master。询问您的系统管理员或 DBA 是否有任何活动或休眠的 Slave。
如果ReplicationUserCount
= 0,则 DB 服务器是独立的。然后,您可以使用以下方法删除全部或部分二进制日志:
RESET MASTER;
Run Code Online (Sandbox Code Playgroud)
运行此命令时,所有二进制日志都将被删除并localhost-bin.000001
创建。
替代方法:关闭 mysql,删除localhost-bin.*
,然后启动 mysql。
PURGE BINARY LOGS TO 'localhost-bin.000190';
Run Code Online (Sandbox Code Playgroud)
运行此命令时,之前的所有二进制日志localhost-bin.000190
都将被删除。
PURGE BINARY LOGS BEFORE DATE(NOW());
PURGE BINARY LOGS BEFORE DATE(NOW()) + INTERVAL 0 SECOND - INTERVAL 3 DAY;
PURGE BINARY LOGS BEFORE '2014-03-26 15:30:00';
Run Code Online (Sandbox Code Playgroud)
当你运行这些时,这就是他们所做的
如果方法 2 或 3 失败,则表明文件localhost-bin.index
. 它保留一个带有 bin 日志列表的文本文件。如果文件不同步,请使用METHOD #1
. 它将重新创建localhost-bin.index
.
不要使用rm
Windows 资源管理器或从 Windows 资源管理器从 Linux 命令行擦除二进制日志。这样做会导致localhost-bin.index
不同步。如果这样做,只需执行方法 #1,mysqld 就会将其全部清理干净。
如果你expire_logs_days = 7
在你的my.cnf
(或my.ini
) 中设置,它会自动运行这个
PURGE BINARY LOGS BEFORE DATE(NOW()) - INTERVAL 7 DAY;
Run Code Online (Sandbox Code Playgroud)
在每次日志轮换或 mysql 重启时。
由于您对恢复空间感兴趣,请选择三种方法之一。如果需要expire_logs_days = 7
,您可以放置在您的my.cnf
(或my.ini
) 中。如果您不希望它增长过去 2 或 3 个 binlog,请在您的配置文件中进行设置:
[mysqld]
expire_logs_days=1
Run Code Online (Sandbox Code Playgroud)
并运行
SET GLOBAL expire_logs_days=1;
Run Code Online (Sandbox Code Playgroud)
将二进制日志的数量限制为一天。
请记住,如果不同步,设置expire_logs_days 将不起作用localhost-bin.index
。
归档时间: |
|
查看次数: |
12328 次 |
最近记录: |