恢复数据库的一部分

时间:2016-07-07 05:19:39

标签: ruby-on-rails ruby-on-rails-3 activerecord

我们有一个带有摇摇欲坠的管理界面的遗留系统,其中一个用户设法消灭了一些记录。我们几天前有一个备份,但我们想要删除数据库并从备份中恢复 - 我只需要几种类型的对象(很多行,但只有一些相关的对象)。

如何只恢复一些记录?我认为以下内容可行:

  • ActiveRecord::Base.establish_connection连接到备份数据库
  • 抓取我想要恢复的记录(例如widgets = Widget.all
  • 更改与生产数据库的连接(再次使用establish_connection
  • 保存小部件(widgets.save) - 但它不起作用?

ActiveRecord对象中是否存在某些内在的东西,我可以更改它以使用相同的id和所有内容保存到production数据库,即使它最初来自backup数据库,所以它们是与之前的情况完全相同(除了created_at,当然,这没关系)

这可能不是最好的方法,但我无法确定最佳方法。数据库非常大,所以我无法真正获得原始的SQL或类似的东西。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

方法1

我认为最简单的方法是拍摄要恢复的几个表的快照,然后将该备份还原到目标数据库。

方法2

如果您无法进行备份,只需尝试将现有备份还原到新数据库,然后使用ActiveRecord :: Base.establish_connection连接到它,然后选择这几个表的记录并将其还原到目标数据库。 / p>

方法3

如果您正在使用mysql或任何其他RDBMS,那么只需将备份还原到新数据库,然后编写SQL以将表行从该数据库传输到目标数据库。