长期维护生产环境的数据库,恐怕很多人会犯这样的错误:
update tableA set field1value = VVVV (where …);
忘记了加括号中的约束条件,等反应过来,Shell 中显示已经更新了几万条数据。
如何挽救这样的失误呢?
- 每天进行数据备份,我们的方案是每天 dump 整库,保存在 S3 中,服务器上只保存昨天的数据
- 假如有前一天的备份数据,可以选择性恢复除了今天以外的数据。Shell 中命令行失误往往被损坏的数据都涉及一张表的一个字段或者几个字段。
- Drupal 中可以利用其支持多库的特性,新建一个旧数据的库,从旧数据库中读取数据,覆盖到新库上。以下是恢复数据的脚本例子
假如不是 Drupal 系统,也可以直接用 PHP 连接2个数据库,进行类似操作。
Subscribe in reader

