Database postgres,从外部服务器上的模板创建数据库

Database postgres,从外部服务器上的模板创建数据库,database,postgresql,backup,postgresql-9.4,Database,Postgresql,Backup,Postgresql 9.4,我有两台服务器使用相同版本的postgres(9.4)。 我想快速克隆数据库(备份和恢复)。 据我所知,“从模板创建数据库xxx”是制作数据库副本的最快方法 如何从一台服务器克隆到另一台服务器? 我可以使用dblink执行此任务吗?如何使用 我知道使用pg_转储和pg_恢复(psql)的解决方案,但我认为它对我来说太慢了。 例如,5gb数据库大约在12分钟内恢复(在pg_restore中使用-j选项),备份大约2分钟 另一种方法可能是,我可以将一些postgres文件(/var/lib/post

我有两台服务器使用相同版本的postgres(9.4)。 我想快速克隆数据库(备份和恢复)。 据我所知,“从模板创建数据库xxx”是制作数据库副本的最快方法

如何从一台服务器克隆到另一台服务器? 我可以使用dblink执行此任务吗?如何使用

我知道使用pg_转储和pg_恢复(psql)的解决方案,但我认为它对我来说太慢了。 例如,5gb数据库大约在12分钟内恢复(在pg_restore中使用-j选项),备份大约2分钟


另一种方法可能是,我可以将一些postgres文件(/var/lib/postgresql/*)复制到另一台服务器上,然后在那里运行postgres吗?如何查找此文件?

您不能使用来自不同数据库群集(在同一台或不同的计算机上)的数据库作为模板来创建新数据库,因此这是错误的

将数据库从一个集群复制到另一个集群的唯一现有方法是
pg\u dump
/
pg\u restore

物理拷贝是最快的方式,但不能将单个文件或数据库从一个数据库集群复制到另一个数据库集群

如果您不介意复制整个数据库群集,可以选择停止并删除目标数据库群集,执行
pg_basebackup-X stream
创建源数据库群集的物理备份,根据需要编辑配置并启动新副本

如果
pg_basebackup
对您来说太慢,您可以使用
pg_start_backup
pg_stop_backup
手动执行在线备份,并使用您拥有的最快技术复制中间的文件


如果停止源数据库集群没有问题,那么您就不必干扰恢复,而且速度会更快。

正如Laurenz所说,您不能复制模板。原因是它需要集成到postgres的共享目录中,如
pg_database
等,并且因为它共享数据库范围的资源,如事务日志(
pg_clog

理论上,如果所有元组都被真空冷冻冷冻,那么实际上可以从另一台机器复制模板。但是,您必须进行一些手动设置来集成复制的模板,这很容易出现错误,而且风险很大。你需要非常好的博士后内部知识

这真的不值得