问题标签 [postgres-bdr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9520 浏览

postgresql - PostgreSQL & BDR:BDR真的是多主控吗,2019年1.x的开源和EOL吗?

我对 PostgreSQL BDR 感到困惑,我有几个问题:

问题 1:BDR 真的是 PostgreSQL 的多主机吗?

根据此处的文档,它说:

BDR(双向复制)项目在 PostgreSQL 9.4 中增加了多主复制

但如果我在 2ndQuadrant 上阅读,我会阅读以下内容:

在此处输入图像描述

如果我读了那部分,他们根本没有提到多主控。只是“二主,被动工作”,就说明它不是真正的主?

问题 2:BDR 是开源的吗?

在这里读到它是,至少它是:

BDR 是 PostgreSQL 的第一个开源多主复制系统

还在吗?因为当我查看时,我经常被引导到 2ndQuadrants 网页,这给我的印象是它不是开源的,当他们说:

你如何获得 Postgres-BDR?

只需填写下面的联系表,PostgreSQL 专家将很快与您联系!

听起来像卖给我=)

问题3:什么版本是什么?

读到 2ndQuadrant在今年 3 月发布了 1.0.5 版。我还在2ndQuadrants 网页上看到

在复制的复杂环境下,第3代BDR实现...

第三代?版本 1.0.5 是相同的第 3 代,还是其他版本?

此外,同一页面说:

当前 Postgres-BDR 用户注意事项:BDR 1.x 将于 2019 年 12 月达到 EOL。我们的 PostgreSQL 专家团队可以帮助您规划和执行升级,影响最小,停机时间几乎为零。立即联系我们,我们的专业服务团队成员将尽快与您联系。

那么,1.0.5 是在 3 月发布的,但在 2019 年 12 月就已经 EOL 了?2.x 不是开源的,所以会产生一些与之相关的许可成本,而 1.x 是 EOL 2019?

0 投票
1 回答
730 浏览

postgresql - Postgres - BDR 复制 - auto_increment 主键的问题

我有一个具有 2 个节点(多主复制)的 Postgres BDR 集群。我创建了一个具有自动增量主键的表,如下所示:

我从 node1 在该表上添加了一些值:

现在,当我尝试从 node2 向该表中添加另一个值时,我收到该错误:

0 投票
1 回答
136 浏览

postgresql - 是否可以重建 pg_depend?

我有一个受BDR中以下错误影响的 PostgreSQL 9.4 数据库:

https://github.com/2ndQuadrant/bdr/issues/309

简而言之,BDR 中的错​​误导致pg_depend系统目录中缺少依赖项。现在,当我使用 时pg_dump,对象被乱序转储,如果没有手动编辑,就无法使用转储。

有没有办法让 PostgreSQL 在pg_depend不从头开始重建数据库的情况下重建依赖关系?

0 投票
0 回答
165 浏览

postgresql - 从 postgresql 上损坏的外键剩余部分中恢复

我们有一个非常简单的一对多关系。siteresolver桌子。resolver有一个外键site_id

我们决定删除该resolver表,因为它不再有用了。所以我们只是简单地做了DROP TABLE resolver。但是,我们使用2ndQuadrant BDRv1进行异步多多复制,它有一个错误。当您这样做时,它不会正确清除约束。实际上,我们之前在另一个用例中注意到了这一点,并在删除表之前删除了外键和主键,效果很好。这次我们错过了,我们在现场遇到了这种腐败状态。

除非您尝试删除该站点(幸好这不是常见的情况),否则它不会造成太大的麻烦。

 

有一些解决方法,但我们需要在下一个版本中清理它。它是许多客户部署的产品,而不是我们自己的部署。所以它需要尽可能的平滑。因此,虽然“重新创建数据库或表”等是有效的答案(并且可能应该作为答案出现,最好带有命令或链接),但它们并不总是在客户部署中最可行的。

因此,删除约束不起作用,因为该表不再存在。

所以,我决定通过环顾四周来弄乱内部表格来完成它的工作。我知道,好主意..

在此之后,删除站点仍然失败

这可以通过重新启动不理想的 postgresql 来解决。

 

我想我的问题是:

  • 如何避免重启?应该有一种方法可以告诉缓存将其删除,就像DROP CONSTRAINT一样。回答:似乎重新启动应用程序(或者在我的情况下可能是 JDBC 连接)就足够了。
  • 我还应该清理什么?
  • 我可以使用哪些替代方法而不是弄乱内部表?