恢复数据库的一部分
Restore part of a database
我们有一个遗留系统,其管理界面不稳定,其中一位用户设法清除了一些记录。我们有几天前的备份,但我们不想只删除数据库并从备份中恢复 - 我只需要那里的几种类型的对象(很多行,但只有少数关联对象)。
如何只恢复部分记录?我认为以下方法可行:
ActiveRecord::Base.establish_connection
连接到备份数据库
- 获取我要恢复的记录(例如
widgets = Widget.all
)
- 更改与生产数据库的连接(再次使用
establish_connection
)
- 保存小部件 (
widgets.save
) - 但它不起作用?
我可以更改 ActiveRecord 对象中的某些固有内容以使其使用相同的 ID 和所有内容保存到 production
数据库,即使它最初来自 backup
数据库,所以它们与之前几乎完全相同(除了 created_at
,当然没关系)
这可能不是最好的方法,但我真的不能确定最好的方法是什么。数据库相当庞大,所以我无法真正获得原始 sql 或类似的东西。
感谢任何帮助!
方法一
我认为最简单的方法是为您想要恢复的几个 table 拍摄快照,然后将该备份恢复到您的目标数据库。
方法二
如果您无法进行备份,只需尝试将现有备份恢复到新数据库,然后使用 ActiveRecord::Base.establish_connection 连接到它,然后 select 记录那些几个 tables 并将其还原到您的目标数据库。
方法 3
如果您正在使用 mysql 或任何其他 RDBMS,则只需将备份恢复到新数据库,然后写入 SQL 以将 table 行从该数据库传输到你的目标数据库。
我们有一个遗留系统,其管理界面不稳定,其中一位用户设法清除了一些记录。我们有几天前的备份,但我们不想只删除数据库并从备份中恢复 - 我只需要那里的几种类型的对象(很多行,但只有少数关联对象)。
如何只恢复部分记录?我认为以下方法可行:
ActiveRecord::Base.establish_connection
连接到备份数据库- 获取我要恢复的记录(例如
widgets = Widget.all
) - 更改与生产数据库的连接(再次使用
establish_connection
) - 保存小部件 (
widgets.save
) - 但它不起作用?
我可以更改 ActiveRecord 对象中的某些固有内容以使其使用相同的 ID 和所有内容保存到 production
数据库,即使它最初来自 backup
数据库,所以它们与之前几乎完全相同(除了 created_at
,当然没关系)
这可能不是最好的方法,但我真的不能确定最好的方法是什么。数据库相当庞大,所以我无法真正获得原始 sql 或类似的东西。
感谢任何帮助!
方法一
我认为最简单的方法是为您想要恢复的几个 table 拍摄快照,然后将该备份恢复到您的目标数据库。
方法二
如果您无法进行备份,只需尝试将现有备份恢复到新数据库,然后使用 ActiveRecord::Base.establish_connection 连接到它,然后 select 记录那些几个 tables 并将其还原到您的目标数据库。
方法 3
如果您正在使用 mysql 或任何其他 RDBMS,则只需将备份恢复到新数据库,然后写入 SQL 以将 table 行从该数据库传输到你的目标数据库。