我无缘无故继承了一个客户端站点,该站点具有非常大的数据库。内容量适中,启用的模块很少。但是,数据库太大,无法轻松移动,因此我想清除它。
我已经清除了标准的缓存表,系统日志和访问日志。
我可以在标准Drupal站点中安全截断其他表格吗?
{cache_form}
并不是真正正确的。这不是真正的缓存表。它包含正在进行的表单提交。如果删除此表中的所有数据,则用户可能会丢失数据。使用此表的正确方法是使条目过期。
我无缘无故继承了一个客户端站点,该站点具有非常大的数据库。内容量适中,启用的模块很少。但是,数据库太大,无法轻松移动,因此我想清除它。
我已经清除了标准的缓存表,系统日志和访问日志。
我可以在标准Drupal站点中安全截断其他表格吗?
{cache_form}
并不是真正正确的。这不是真正的缓存表。它包含正在进行的表单提交。如果删除此表中的所有数据,则用户可能会丢失数据。使用此表的正确方法是使条目过期。
Answers:
使用备份和迁移模块,它具有良好的默认设置,可跳过不必要的数据。默认情况下,它将生成没有缓存,看门狗和其他一些表的数据库备份。
如果这样做没有帮助,请查看phpMyAdmin并告诉我们哪些表有很多条目。
这是Drupal 7中的表列表,您可以清除这些表(以减小数据库大小)或安全地排除以进行迁移(如有关如何减小本地导出的数据库大小以解决服务器导入限制的问题)?):
通常,诸如search_index
和的表会watchdog
使用大量的数据库空间,因此仅消除这两个表可能已经产生了很大的不同。
检查剩余表的大小,并确定其中最大的一个。
通常,您可能会找到没有适当清理程序的会话表。您可能还可以排除此类表。
要进一步减少“ 如何减少本地导出的数据库大小以解决我的服务器导入限制? ”中详细说明的挑战,请同时查看“ 备份和迁移”模块。这是其项目页面的报价(在此处添加了粗体标记):
备份和还原您的Drupal MySQL数据库,代码和文件,或者在环境之间迁移站点。备份和迁移支持gzip,bzip和zip压缩以及自动计划的备份。
使用“备份和迁移”,您可以将部分或全部数据库表转储到文件下载中,或保存到服务器或异地的文件中,并从上载或先前保存的数据库转储中还原。您可以选择默认排除哪些表以及要备份和缓存哪些数据。
甚至还有更多:如果您的本地环境(例如Win或Mac)与托管网站的服务器所运行的操作系统(例如Linux)不同,则这些操作系统之间的差异意味着潜在的额外挑战。我在不同操作系统之间使用“备份和迁移”模块有很好的经验,在以前典型的MySql导出/导入失败的情况下,这不会引起任何问题(工作正常)。
cache_
前置或_cache
附加安全截断为好,如features_cache
或views_data_object_export_cache
等
_drupal_session_garbage_collection
将根据系统设置使该表保持整洁。
根据我的经验,我清除了所有“ cache_ *”表。
使用mySQL,您可以使用mysqldump程序做一些有趣的事情,以全部或部分导出数据库。例如,这仅导出结构:
mysqldump -u root -pBatteryHorseStapleObviously -h some_host --no-data dbname > ~/dbname.sql
然后,您可以使用“忽略表”选项进一步导出数据,例如
mysqldump -u root -pBatteryHorseStapleObviously -h some_host --ignore-table=dbname.huge_table --ignore-table=dbname.massive_table --ignore-table=dbname.useless_table some_host >> ~/dbname.sql
这会将数据放在早期文件的末尾,而忽略了一些大表。
如果随后需要大量表,则可以使用上述方法将它们导出到其他文件,然后可以成块导入它们(尽管可能需要fk选中)。
您在上传文件之前对文件进行了gzip压缩,或者这是一个愚蠢的问题?
检查以下example.drushrc.php
列表:
$options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
$options['skip-tables']['common'] = array('migration_*');
就在不同环境之间移动数据库而言,清除它们是安全的(尤其是在使用大型数据库时)。但是,您仍然需要了解要清除的内容。