是否可以在两台PostgreSQL服务器之间直接传输PostgreSQL数据库?
我目前正在使用pg_dump将整个数据库序列化到文件,下载文件,然后使用pg_restore将数据库加载到开发服务器上,从而设置了我的生产数据库的“开发”版本。 但是,随着数据库的不断增长,这个过程现在需要数小时。 有没有办法简单地“连接”两台服务器,并直接传输数据库,而不是这个冗长的转储/下载/恢复过程?
请注意,我只使用MySQL,但PostegreSQL不应该是不同的。
如果pg_dump是我的mysqldump的东西,那么你不能只是将输出pipe道到pg_restore? 这是我能想到的最直接,最快速的方式。 其他的只是更多的开销
有一件事你可能会考虑的是有两个开发数据库,所以你有一个正在使用,而另一个正在经历pg_dump | pg_restore周期。 虽然我从来没有一个数据库花了几分钟的时间,所以我从来没有调查过,看 – 格式--format tar可能比默认格式更快。
在PostgreSQL中,基本上有两种types的备份加复制来实现你的目标。 现在您正在使用逻辑备份,请尝试物理备份:
物理冷备份意味着将文件(如果需要的话还包括rdbms二进制文件)复制到可以在出现问题时将其恢复的位置。
优点:物理冷备份通常比逻辑热备份快得多。
缺点:数据库集群在备份过程中必须closures。 您不能使用冷备份来升级PostgreSQL数据库群集。
那么为了做一个冷的物理备份,你需要:
如果你不能停止集群,那么最好使用新版本的postgreSQL设置一个asynchronous复制。
如果两台服务器具有相同的体系结构,则可以复制数据目录。 通常情况下,您必须closures服务器才能执行此操作或设置WAL归档。 但是对于创build一个testing数据库来说,无论如何都可以做到这一点,然后用pg_resetxlog清理你的副本。
您可以使用rsync来减less后续运行中要复制的数据量。
如果两台服务器有不同的架构,那么pg_dump是唯一的路由。