首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Postgres和多个数据存储位置

Postgres和多个数据存储位置
EN

Stack Overflow用户
提问于 2019-11-11 12:12:57
回答 2查看 490关注 0票数 1

Postgres,默认的存储位置是我的C盘。我想将备份恢复到另一个数据库,但要通过相同的Postgres服务器实例访问它-问题是数据库太大而无法在同一个c盘...would上恢复。是否可以告诉Postgres应该恢复第二个数据库并将其放在另一个位置/驱动器(同时仍然保留第一个)?就像我的C盘上的database1和D盘上的database2?

否则,第二个最好的解决方案是安装两个独立的Postgres实例--但这似乎也有点过头了?

EN

回答 2

Stack Overflow用户

发布于 2019-11-11 13:04:35

如果您使用postgres pg_dump命令,这应该是完全可以实现的。

pg_dump命令不创建数据库,因此您首先自己创建它。使用CREATE TABLESPACE指定位置。

代码语言:javascript
运行
复制
CREATE TABLESPACE secondspace LOCATION 'D:\postgresdata';

CREATE DATABASE seconddb TABLESPACE secondspace;

这将在D:驱动器上创建一个空数据库。

然后,从pg_dump执行的标准恢复应该可以工作:

代码语言:javascript
运行
复制
psql seconddb < dumpfile
票数 4
EN

Stack Overflow用户

发布于 2019-11-11 12:25:01

复制

听起来你需要database replication

several ways to do this with Postgres、一个内置的和其他使用附加库的方法。

内置复制功能

内置的复制功能可能会满足您的需求。参见the manual。在这种方法中,您有一个Postgres实例运行在主服务器上,执行数据的读取和写入。在第二台服务器(完全独立的计算机)上,运行Postgres的另一个实例,称为副本。首先在第一台服务器上对数据库执行完整备份,然后恢复到第二台服务器,从而设置复制副本。

接下来,配置复制功能。副本需要知道它扮演的是副本而不是常规数据库服务器的角色。并且主服务器需要知道副本的存在,以便每次数据库更改、每次插入、修改和删除都可以被传达。

瓦尔

这种通信是通过WAL文件实现的。

Postgres中的Write-Ahead Log (WAL)功能是数据库首先将所有更改写入WAL,只有在完成后,才写入实际数据库。在崩溃、断电或其他故障的情况下,数据库在重新启动时可以检测到未完成的事务。如果未完成,事务将回滚,数据库服务器可以通过查看WAL中列出的"To-Do“工作列表来重试。

每隔一段时间,当前的WAL就会关闭,并创建一个新的WAL文件来接管工作。启用复制后,关闭的WAL文件将复制到副本。然后,副本将包含该WAL文件,以遵循与该WAL文件中写入的更改相同的“待办事项”列表。因此,对复制副本数据库所做的所有更改与对主数据库所做的更改完全相同。您的复制副本与主复制副本完全匹配,只是在时间上稍有延迟。副本服务器始终只比主服务器的进度慢一个WAL文件。

在遇到麻烦的时候,这个复制品可以作为温暖的备用设备。您可以关闭主服务器,然后告诉复制副本它现在是主服务器。您甚至可以将复制副本配置为热备用,这意味着当主服务器似乎出现故障时,它将自动接管。热备用有其优点和缺点。

卸载只读查询

作为一个额外的功能,副本可以用于只读查询。如果您的数据库使用率很高,您可以将一些工作负担从主服务器卸载到副本服务器。任何不需要绝对最新信息的查询都可以通过连接到副本而不是原始来转移。例如,季度销售报告可能不需要存储在活动WAL文件中的尚未到达副本的最新数据。

物理复制意味着复制所有数据库

注意:此内置复制功能是物理复制。这意味着对整个Postgres安装(正式称为,不要与hardware cluster混淆)的所有更改都会复制到副本中。如果您使用一台Postgres服务器为多个数据库提供服务,则必须复制所有这些数据库-您无法选择要复制的数据库。未来可能会有与逻辑复制相关的替代复制功能。

了解更多信息

我在这里很简短。复制、高可用性和灾难恢复的主题既广泛又复杂,在Stack Overflow上无法回答。

提示:这类问题最好在姊妹网站DBA.StackExchange.com上提出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58795461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档