簡體   English   中英

Rails和Postgres-恢復后重新索引

[英]Rails & postgres - reindex after restore

最近,由於遇到配置錯誤,我不得不將備份數據庫從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

但是我還沒有找到一種執行基本表重新索引的命令/功能方法(沒有某種類型的技巧可以觸及每條記錄)。

根據OP對我的評論的回答,我認為這是將完整的數據庫備份應用於現有數據庫的結果,導致還原的數據與現有數據(包括陳舊索引)之間出現某種交叉授粉。

我建議的是,如果備份是整個數據庫:

  1. 在本地數據庫上,使用dropdb命令刪除整個內容
  2. 使用createdb重新創建一個空白數據庫
  3. 然后對空的數據庫運行pg_restore命令。 這將從備份中還原所有數據,並且假設索引是該備份的一部分(它們應該在整個數據庫的備份中),那么索引中也應填充新還原的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM