对于WordPress来说,我可以安全地忽略数据库中的内容吗?

时间:2019-10-16 作者:0xC0000022L

我正在探索最小化多个WordPress实例的数据库转储大小(用于自动备份WordPress内容)的可能性。

我最想知道的是,数据库中是否存储了任何生成的数据,我可以在备份期间安全地丢弃这些数据,因为这些数据将由WordPress重新生成(或者备份后可以手动执行的操作)。例如,对于phpBB3,丢弃搜索词等通常是安全的,因为您可以在灾难恢复后轻松地重新编制索引。。。

哦,我应该补充一下,我读过this 并且没有从中推断出任何最小化转储大小的方法(除了--compact--skip-comments 命令行切换到mysqldump).

我自己做了进一步的调查。之前我尝试过Git和Mercurial只存储两个快照之间的差异,但这些工具对于特定用途来说并不太好。我也试过了rdiff-backup, 但结果是。。。嗯,平庸。

无论如何,我想我可能已经找到了缩小单个(DB)快照大小的替代方法。我已经尝试过重新打包SQL转储文件。编号:

对于我使用它的其中一个博客,24小时(每小时)的备份总计约1500个MiB<单独压缩(gzip -9) 这些时钟总共约为540个MiB(每24小时一次)

  • 将24小时的备份重新打包到一个单独的归档中xz 我想出了以下数字:
    • xz -6: 仍然>300 MiBxz -7: 仍然>300 MiBxz -9: 取决于每天10到30个MiB。。。我发现这种差异令人惊讶,但这可能是由于垃圾邮件的评论,所以这需要更多的实验

      重新打包过去24小时内的备份添加过去24小时内的最新文件,我将查看这是否也适用于每月备份,或者是否需要在重新打包之前精简备份。

      在DB转储缩小前--where 命令行切换到mysqldump 看起来很有希望,但我还不能表达where comment_approved not in (\'spam\', \'trash\') 以一种适用于博客特定数据库中所有表的方式,这使得使用:

      mysqldump: Couldn\'t execute \'SELECT /*!40001 SQL_NO_CACHE */ * FROM `wp_commentmeta` WHERE comment_approved not in (\'spam\', \'trash\');\': Unknown column \'comment_approved\' in \'where clause\' (1054)
      
      (指列名,如wp_comments.comment_approved 也没有帮助)

1 个回复
SO网友:Tom J Nowell

您可以这样清除的唯一内容是数据库中的瞬态、临时选项。WP已经在cron作业中做到了这一点,它不太可能产生重大影响。如果您不介意数据丢失,修订可能会减少数据库大小,但这在很大程度上取决于您对数据库所做的操作。

WP使用的许多生成的数据都是实时生成的,例如,post类型的数据是在每个页面加载上注册的,因为它既便宜又快速。缓存的数据保存在内存中,并在页面加载完成后被擦除,或者它保存在对象缓存中,在对象缓存中它的寿命有限,但不接触数据库。

然而,这不是一种可以采取的方法,也是一条不值得探索的死胡同。通过压缩备份或研究增量备份,您将获得更多好处,但这是一个数据库问题,而不是WP问题。

相关推荐

Wordpress database connection

我的网站被黑了,我已经把所有东西都加载了,但是页面、帖子、图片等都没有显示在网站上。我注意到在我的数据库ameqt\\u wp507中有一个列表,上面写着wp\\u 507posts等,还有一个列表写着wp6t\\u posts等。其中包含wp6t的一个包含了所有内容。我如何让它看到这些信息?ThanksSarah公司