我在一个很大的桌子上删除了一些索引,并意识到我需要它们。不需要很长时间并发地将它们添加回去,我想知道是否可以使用删除索引之前获取的数据库副本进行恢复?
发布于 2019-03-01 02:56:13
如果您所说的“数据库副本”是指文件级别的 Postgres DB目录的副本(因为Postgres没有运行以获得一致的状态),那么yes,这样的快照也包含所有内容和索引。您可以将其复制回文件级别,然后启动Postgres --当然,返回到以前的状态。
如果OTOH是指使用标准Postgres工具pg_dump或pg_dumpall进行备份,则no物理上不包括索引。只是建造它们的指令。包含大量功能依赖价值的垃圾是没有意义的。从恢复的数据构建它们的速度可能同样快。
无论哪种方式,在对表进行更改之后,您都无法将索引从旧的快照添加回活动数据库。这在逻辑上是不可能的。那么,除了以这样或那样的方式重建索引之外,别无选择。
发布于 2019-02-28 22:32:26
我会为MySQL负责。你用mysql和postgresql标记了你的问题,所以我不知道你真正使用的是哪一个。
如果您的备份是使用Percona XtraBackup或MySQL Enterprise之类的备份解决方案进行的物理备份,那么它将包括索引,因此恢复它会更快。
如果您的备份是用mysqldump或mydumper进行的逻辑备份,那么备份只包括数据。无论如何,恢复它都必须重建索引。这不会节省任何时间。
如果您只通过从数据目录复制文件而犯了“备份”的错误,那么这些备份有点像物理备份,但是除非您在关闭MySQL服务器时复制这些文件,否则备份可能是不可行的。
https://stackoverflow.com/questions/54935159
复制相似问题