Zenoss MySQL数据库备份在多版本升级后是巨大的

上下文:

我们跑了太久的Zenoss 2.2,并决定升级到当前版本3.2。 我按照这里的升级步骤进行了检查,并在每次增量版本升级之后确保一切正常。 我确定在不确定时重新启动,并validation所有数据库迁移(和preupgrade ZenPack)都正确应用。 一切正常,除了几个过时的ZenPacks,我们没有太多使用。 我们运行CentOS 5,所以我使用了sourceforge上的旧rpm版本进行中间升级,然后使用yum将最后一个“跳跃”设置为3.2。 由于某些原因yum没有安装3.2的核心zenpacks,所以我手动做了,然后一切都很好:zenoss工作得很好,没有问题。 那么…除了一个。

问题:

我们使用Zenoss事件数据库的cron / mysqldump安排备份。 这些备份每天都会closures,通常占用7-800MB的空间。 在Zenoss升级之后,这些备份占用了200GB以上的空间(尽pipe我还没有看到完成)。 要运行备份,我们正在使用

mysqldump -A | gzip > dump-12-28-2011.sql.gz 

我们有MySQL 5,所以–extended-insert是mysqldump的默认参数。 Zenoss是使用数据库的唯一的东西(除了mysql之外,“事件”数据库是唯一存在的),并且在转储过程中我已经closures了Zenoss。 我ibdata1(我们只有1)文件现在是13GB左右。 我不知道升级之前有多大。 我已经试过这个解决scheme来删除旧的事件细节条目。 查询一直运行,但之后的转储就像以前一样。 为什么发生这种情况? 我有升级之前的备份,我应该恢复吗?

TL; DR:

为什么我的Zenoss“事件”数据库在多版本升级后转储量增加了1000倍?

经过几天的挖掘,我发现了这个问题:InnoDB腐败。 Out事件数据库真的很大(我们保留了一年的旧事件,并且有大量的Windows计算机报告一些小事情,所以我们有很多数据),但这不是问题。 我开始运行$ZENHOME\Products\ZenUtils\ZenDeleteEvents.py -n 60将我们的事件历史logging重新调整为60天,MySQL在完成一半后崩溃。 我查看了MySQL日志,并发现了大量的InnoDB损坏错误。 这是最终的解决scheme:

  1. 停止Zenoss
  2. 停止MySQL
  3. 把MySQL放在InnoDB恢复模式2
  4. 启动MySQL
  5. 通过mysqldump -uzenoss -pzenoss events > dump.sql转储事件数据库出于某种原因,在通过ZenDeleteEvents.py进行修剪之后,转储工作,并且不会变得难以忍受。
  6. 停止MySQL
  7. 将ibdata / innodb日志文件/事件模式定义从/ var / lib / mysql中取出,并放在某个地方以便妥善保pipe(以防后续步骤不起作用)
  8. 使MySQL退出恢复模式
  9. 启动MySQL
  10. 作为zenoss用户,运行zeneventbuild localhost zenoss zenoss events (这些参数对于其他的可能是不同的:语法是zeneventbuild <dbhost> <dbuser> <dbpassword> <dbname>
  11. grant super on *.* to 'zenoss'@'localhost' identified by 'zenoss';运行mysql ,然后将grant super on *.* to 'zenoss'@'localhost' identified by 'zenoss';
  12. 重新启动MySQL
  13. 通过mysql -uzenoss -pzenoss events < dump.sql恢复事件数据库转储
  14. 重新启动MySQL(可能不必要,但我偏执狂)
  15. 启动Zenoss

之后,一切正常,虽然我没有很多的历史事件(我没有使用)。 这个在zenoss论坛的主题是帮助我弄清楚发生了什么。