在我们的客户端位置中,我们有主人掌握多个从环境。在一个从Db主机中,我们遇到了bin-log的磁盘空间问题。首先,当mysql服务器使用rm -f binlog.0015、binlog.0016.binlog.0026运行时,我手动删除了bin-log文件。但后来,我发现这个程序是错误的,通过发出逗号:
mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name | File_size |
+---------------+-----------+
| 0 | |
| 0 | |
| 0 | |
| binlog.000027 | 724935 |
| binlog.000028 | 733481 |
+---------------+-----------+使用rm -rf删除的bin日志在从服务器中没有被清除。稍后,我发出命令:将二进制日志清除为“mysql-bin.0026”;并且可以看到bin日志被正确清除。
mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name | File_size |
+---------------+-----------+
| binlog.000027 | 724935 |
| binlog.000028 | 733481 |
+---------------+-----------+但这并不影响从复制和复制是好的。但是过了一段时间,我可以注意到mysql数据库的缺失。什么可能是根本原因。mysql是否因为错误地处理回收站日志而放弃。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| client_prod |
+--------------------+
2 rows in set (0.01 sec)====
因为另一个奴隶很好。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| client_prod |
+--------------------+
3 rows in set (0.00 sec)我们没有看到任何显示文件夹正在被删除或数据库在日志或历史记录中被删除的迹象。背后的谜团是什么。除了获取转储和恢复之外,如何恢复,我们能否只将mysql转储并在这个奴隶中恢复它呢?如果这样做,会导致任何复制问题。
发布于 2011-11-02 21:00:19
如果您的从站也不充当另一个从站的主站,那么您在删除二进制日志时就不会有任何问题。中继日志对奴隶很重要。
您需要进一步研究mysql模式消失的原因。mysql模式是否仍然存在于磁盘上,即使MySQL没有显示它?如果尚未停止从实例,则可以在MySQL运行的同一用户下运行:
lsof | grep '/path_to_mysql'您可能会在那里看到标记为已删除的mysql模式表:
(deleted)另一种可能是,您连接的用户权限有限,只是看不到mysql模式。运行SHOW GRANTS;以查看您当前拥有的特权。
正如Rolando所指出的,使用清除二进制日志作为清理二进制日志的最佳实践。如果MySQL关闭,您可以手动删除文件,但也必须从索引文件中删除相同的文件名。在主服务器上要小心,因为奴隶可能仍然需要二进制日志。
如果确实需要复制mysql模式,则只需在从服务器上执行以下步骤即可。不过,在执行这些步骤之前,我建议在主服务器上执行FLUSH TABLES;。
/etc/init.d/mysql stop
scp -rp master_server:/var/lib/mysql/mysql /var/lib/mysql/
/etc/init.d/mysql start发布于 2011-11-02 02:18:06
由于mysql模式中没有一个表是InnoDB,所以只需在从服务器上执行以下操作,而不是执行mysqldump
service mysql stopmkdir /var/lib/mysql/mysqlscp master-ip:/var/lib/mysql/mysql/* /var/lib/mysql/mysql/.chown -R mysql:mysql /var/lib/mysql/mysqlservice mysql start这不应影响复制,因为当您运行“更改主命令”时,复制用户的身份验证发生在主服务器上,而不是从服务器上。实际上,复制用户的凭据存储在从服务器上的master.info中。
顺便说一句,在mysqld运行时,不要使用rm -f删除二进制日志,因为mysql有一个从索引文件加载的内部内存映射。仅使用清除二进制日志、重置主日志和刷新日志来提升二进制日志的索引文件。
我突然明白了。你的问题是:
使用rm -rf删除的bin日志在从服务器中没有被清除。稍后,我发出命令:将二进制日志清除为“mysql-bin.0026”;并且可以看到bin日志被正确清除。
您可能运行了rm -rf mysql。这将扼杀mysql文件夹。检查您的Linux历史记录。
https://dba.stackexchange.com/questions/7490
复制相似问题