Drupal数据库开发版

生成策略

挑战

  • 几十G的线上数据
  • 800+表

我们想自动化获得最小开发版数据库

其实就是怎么删的问题

总体策略

  • 从线上每周备份一份数据
  • 每周备份时某些表只导结构
  • 将备份表导入测试数据库
  • 执行一个自定义的数据删减脚本
  • 对处理后的数据再次备份

删除策略

  • 删除用户
  • 删除用户关联数据
  • 删除Node
  • 删除Node关联数据
  • 清空某些表
  • 删除其他无效数据
  • 切换到开发环境

删除用户

  • 保留必要的角色
  • 保留特定的用户
  • 分步删除

删除用户关联数据

  • 先找出哪些表里包含uid
  • 并且uid的含义确实是Drupal UID
  • 删除保留用户之外的关联数据
  • 分步删除

删除node

  • 删除无效用户的node
  • 删除不需要的内容类型的node
  • 删除明显的无效数据,时间长了确实会有
  • 分步删除

删除node相关数据

  • 找出包含nid的表
  • 确定这些表的nid确实是node nid
  • 删除无效nids的数据
  • 分步删除

清空某些表

  • 临时表
  • 日志表
  • 统计表
  • 备份表
  • 缓存表
  • 一些占地方但很少使用的表

删除其他无效数据

  • 删除node revisions里的历史revisions
  • 删除locales_source里的未翻译字符串
  • 删除location表里的无效location

切换到开发环境

  • 开发环境和生产环境链接的远程服务可能是分开的
  • 比如Solr
  • 比如邮件服务器

最小开发版数据库的用途

  • 更新测试服务器数据库
  • 更新本地开发环境数据库
  • 结合Docker实现开发环境镜像
Made with Slides.com