是否可以清理mysql innodb存储引擎,以便它不存储已删除表中的数据?
或者我每次都要重建一个新的数据库?
因为我正在对我的整个debian系统进行完整备份,所以我在想是否有一个/var/lib/mysql目录副本是使用mysqldump转储表的可行替代方法.
我已经创建了一些非常大的数据库,并且已经删除了一些.我注意到我的磁盘空间没有像我预期的那样恢复.例如,我添加的最后一个数据库实际上耗尽了我所有的可用空间并中止了,所以我删除了该模式.在此之前,我有12.4 GB免费,现在我只有7.52 GB免费.
这里发生了什么?我如何获得~5 GB的回报?
我们的MySQL中有很多数据库,我们想缩小/清除MySQL中的ibdata1文件.
我们如何从MySQL information_schema和mysqld
数据库中删除所有数据库?
我查看了ibdata文件,它是128 GB.我拿出每张桌子的大小,一张桌子有500万的记录,它显示了90 GB.
我截断了那个表,因为没有必要,我查看了ibdata1的大小.它仍显示128 GB.然后我拿出每张桌子的大小,然后总和只有35-38 GB.
如何在Db服务器上恢复90 GB的空间.我在red-hat Linux服务器上使用mysql和php.
我猜 - 如果我们删除DB上的任何东西它只是删除复制,但分配给它的空间不会被释放,直到我们手动执行.是这样的吗?
我使用的标准mysqldump命令是
mysqldump --opt --databases $dbname --host=$dbhost --user=$dbuser --password=$dbpass | gzip > $filename
Run Code Online (Sandbox Code Playgroud)
转储多个数据库
mysqldump --opt --databases $dbname1 $dbname2 $dbname3 $dbname_etc --host=$dbhost --user=$dbuser --password=$dbpass | gzip > $filename
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将来自不同MySQL帐户的多个数据库转储到一个文件中?
更新:当我的意思是1个文件时,我的意思是1个gzip文件,其中包含不同网站的sql转储.
我刚刚观察到一些非常奇怪的事情,我希望有人可以向我解释。我在 Linux 虚拟服务器上有一个 MySQL 5.5.58 数据库,其中包含 InnoDB 表。其中一张表被调用stats_archive,并且在普通使用中是只写的:它永远不会被读取或删除。其内容纯粹出于法律合规目的而保留一定时间,并且每月的 cronjob 应该删除旧条目。不幸的是,cronjob 默默地失败了,结果导致表变得过大。今天早上我尝试删除数据:
master:~# du -sh /var/lib/mysql
6.3G /var/lib/mysql
master:~# mysql -u root -p
mysql> select count(*) from stats_archive;
+-----------+
| count(*) |
+-----------+
| 26339050 |
+-----------+
1 row in set (39.40 sec)
mysql> delete from stats_archive where archive_date < '2018-01-01';
Query OK, 24628026 rows affected (7 min 17.61 sec)
master:~# du -sh /var/lib/mysql
7.4G /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,MySQL 使用的存储增长了 1GB 多一点。当我执行此操作时,没有其他明显的数据库活动。删除不是在未提交的事务中完成的,因此数据库不应该仍然保留它以防我回滚。
额外的 1GB 空间(毫不奇怪)已被使用/var/lib/mysql/ibdata1,据我所知,该文件永远不会缩小,所以我一直坚持使用它,直到我可以做一些重大的事情,例如删除所有数据库,从备份恢复和设置innodb_file_per_table=1(它是目前不是)。我会在适当的时候这样做。 …
我的magento存储区正在占用巨大的磁盘空间,并且已超过7.5 GB磁盘空间。我有超过12k的产品。
我已经完成了以下操作,但是并没有产生明显的效果