最近我遇到了一个情况,我必须将备份数据库从Heroku恢复到我的本地设置,因为我做了一个配置错误。
这是Heroku帖子中的直截了当:
https://devcenter.heroku.com/articles/heroku-postgres-import-export:
$ heroku pgbackups:capture
$ curl -o latest.dump `heroku pgbackups:url`
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
问题变成了在恢复之后,一些旧的(恢复前的)索引数据仍在使用新恢复的数据。即,在恢复和数据库迁移之后,似乎仍然存在一些剩余索引数据。请注意,在恢复之前,我没有清除或删除或对我的旧数据库执行任何操作...所以很明显还有一些数据仍然存在于预恢复中......表格已经消失,但索引可能仍然存在。
我怀疑如果我对表进行了一些更改,那将导致我改变的部分重新索引,并且会对问题进行某种类型的部分修复。当然,当我通过控制台对记录进行更改时,剩余数据已更新(现在正确)。
所以我的问题是多部分......
为什么恢复不清除数据库中的所有内容和"从头开始"? (还有其他方法吗?)
是否有更好的编程方式通过rake或console重新索引表格?
对于searchkick,我使用:
rake searchkick:reindex CLASS=Blog
在模特中我使用的是:
blog.reindex
但是我没有找到一个命令/函数方法来做一个基本表重新索引(没有某种类型的黑客来触摸每个记录)。
答案 0 :(得分:1)
根据OP对我评论的回应,我认为这是将完整数据库备份应用到现有数据库的结果,导致恢复数据与现有数据(包括陈旧索引)之间存在一些交叉传播。
我建议的是,如果备份是整个数据库: