【问题标题】:Restore part of a database恢复部分数据库
【发布时间】:2016-07-07 05:19:38
【问题描述】:

我们的旧系统具有不稳定的管理界面,其中一位用户设法清除了一些记录。我们有几天前的备份,但我们只想删除数据库并从备份中恢复 - 我只需要那里的几种类型的对象(很多行,但只有一些相关的对象)。

我怎样才能只恢复一些记录?我认为以下方法会起作用:

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

ActiveRecord 对象中是否有一些内在的东西,我可以更改它以使其使用相同的 id 和所有内容保存到 production 数据库中,即使它最初来自 backup 数据库,所以它们几乎相同他们以前的样子(当然,除了created_at,这还可以)

这可能不是最好的方法,但我无法确定最好的方法是什么。数据库相当庞大,所以我无法真正获得原始 sql 或类似的东西。

任何帮助表示赞赏!

【问题讨论】:

  • "数据库相当庞大,所以我无法真正获得原始 sql 或类似的东西。"什么意思?
  • 您可以通过管道将 db 连接到包含 db 中数据的巨型 sql 语句,该语句执行恢复数据所需的命令。但是数据库太大了,无法爬过所有这些。 :)

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


【解决方案1】:

方法 1

我相信最简单的方法是拍摄您要恢复的少数表的快照,然后将该备份恢复到您的目标数据库。

方法 2

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

方法 3

如果您使用 mysql 或任何其他 RDBMS,则只需将备份恢复到新数据库,然后编写 SQL 将表行从该数据库传输到目标数据库。

【讨论】:

  • 谢谢,最后做了#1。一切都很好! (我们正在更改该接口 STAT)
猜你喜欢
  • 2019-10-07
  • 1970-01-01
  • 2019-03-22
  • 2010-12-04
  • 2010-12-04
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多