如何在 Bucardo Postgresql multi master 中处理序列

2024-01-26

我们正在三个不同的 Postgresql 服务器上设置一个数据库(将来可能会在更多服务器上),目前使用 bucardo 多主组同步所有表。

我们不同步序列;我们尝试过,我们注意到当同时写入发生在不同服务器上的同一个表中时,布卡多会让我们丢失数据。由于它们使用相同的密钥,因此在同步时 bucardo 选择删除重复行之一。

我们当前的方法是手动为数据库的每个实例上的序列命名空间。例如。实例1保持原样,所有实例2表序列更新为从2^31/10开始,实例3表序列将更改为从2^31/10*2开始..实例10序列从2^31/开始10*9。

您对这种方法有何看法?对于布卡多多主机设置您还有什么其他建议? Postgresql BDR 不是一个选项,因为它尚未被视为稳定版本。


不得在 Bucardo 的多源设置中复制序列,因为会出现冲突。

以不同的大数字开始序列是一种常见、有效的方法。对我来说有一个问题:

  • 如果对自增主键应用“语义”,比如“插入顺序”
  • 你如何推理数据
  • 每个数据库中将生成的预期行数。例如,如果大多数行仅从其中一个源生成,那么在所有源中放置相同数量的可用自动增量可能不是最佳策略。

如果同步中只涉及两个源,我的首选策略是一个使用奇数,另一个使用偶数。

如果最多有 9 个源,对我来说很容易推断数据将自动增量值设置为 10,并以不同的数字 1、2、... 启动每个数据库,因此“第一个数据库”将生成 1 , 11, 21, ... 第二个 2, 12, 22, ... 这种方法的一个好处是,如果您从四个源开始并需要另一个源,则无需更改任何内容。在您建议的策略中,如果您将所有可用空间拆分为 4 个数据库,并且需要再次拆分另一个数据库,则空间会更加困难。

如果您不限于使用自动增量主键,其他不错的选择是使用 UUID,但可以肯定它有警告 https://www.depesz.com/2020/02/19/why-im-not-fan-of-uuid-datatype/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Bucardo Postgresql multi master 中处理序列 的相关文章

随机推荐

  • iOS5 ARC 从后台选择器调度 NSTimers 安全吗?

    我正在尝试调试我的应用程序 我一直在我的非弧代码中使用一些 NSTimer 实例 如下所示 来自主线程 NSTimer scheduledTimerWithTimeInterval 5 target musicPlayer selector
  • ResXFileCodeGenerator - 覆盖输出(想要使用自定义资源管理器)

    我创建了一个继承自 ResourceManager 的类 我的问题是 如果我更改 Resources Designer cs 来使用它 e g private static global System Resources ResourceM
  • 检索最后(最新)不同的最高值

    我想检索最新的requestid来自表 tbl 的报价提案 此处为特定客户 ID 3 在此示例中为 ID 2 和 ID 4 表 tbl 请求 请求 ID 客户 ID 6 2 7 4 8 3 9 3 Table tblquoteproposa
  • 读取整个文件并在lua中打印

    我是 Lua 的初学者 只有一点 C 经验 目前我正在使用 ZeroBrane Studio 作为 IDE 我正在尝试读取一个文件并将整个文件打印到控制台 如下所示 function readAll file local f io open
  • 在Spring Boot 2中,是否可以自动生成具有唯一约束的JoinTable?

    我正在使用 Spring Boot 2 和 PostGres 10 我创建了以下实体 角色和权限 Data Entity Table name Roles public class Role public enum Name USER AD
  • __NSArrayM insertObject:atIndex:];对象不能为零

    我是一个iOS开发新手 我想做加密和解密 我的问题如下 当我运行代码时 解密在模拟器中工作正常 但它无法在 iPhone 设备上运行 我收到如下错误消息 NSArrayM insertObject atIndex object cannot
  • 根据其他值添加列

    我有一个数据框 其中有数百万行和三列 标记为 关键字 展示次数 点击次数 我想添加一列 其中的值取决于此函数的评估 isType lt function Impressions Clicks if Impressions gt 1 Clic
  • 强制 Psych 将 YAML 映射读取为给定类的对象

    我有课Foo应该以最人性化的方式序列化为文本文件 我使用 Ruby 的默认 YAML Psych 和自定义encode with 我的问题是 如果我删除 ruby object Foo像这样 def encode with coder co
  • Azure Verizon CDN - 100% 缓存 CONFIG_NOCACHE

    几天前 我设置了 Azure Verizon Premium CDN 如下所示 Origin Azure Web 应用程序 NET MVC 5 网站 Settings 自定义域 无地理过滤 缓存规则 标准缓存 不关心参数 压缩 启用 优化用
  • 动态赋值给宏函数.pch文件和检查条件.pch文件

    pch 正如其名称所示 显示了预编译器标头 我在文件中定义了一个宏 以便应用程序可以在应用程序编译的一开始就决定 我需要的是 可以通过动态分配值来加载任何宏 例如NSUserDefaults并检查条件 pch文件本身 如果用户从屏幕 开关
  • Spring在运行时动态声明bean

    我想知道以下是否可能 出于测试目的 我希望在应用程序上下文中为不同的测试声明不同的模拟类 这些是使用 Jersey REST 客户端的验收测试 有没有办法在运行时动态声明bean Spring 是否有 API 允许在加载上下文后更改应用程序
  • Scala 异步/回调代码重写

    简单的代码应该通过检查用户 用户是否处于活动状态 然后更新上次登录日期时间 def authenticate Action async implicit request gt loginForm bindFromRequest fold e
  • C++ proc_open 模拟

    PHP 中有一个方便的函数 叫做proc open http php net manual ru function proc open php 它可用于调用可执行文件 打开其stdin stdout and stderr作为管道 这个函数在
  • 如何使用母版页在活动菜单项上设置 css 类?

    当我单击 ASP NET 母版页中的子菜单项或主项时 如何设置活动菜单项颜色 我的代码是 母版页源代码 ul class art menu li a href class span class l span span class r spa
  • GEKKO - 使用自定义目标函数进行参数估计 - 错误代码 -13

    我已经使用 Gekko 教程 线性和非线性回归 中介绍的相同技术成功地执行了稳态参数估计 下面是代码 coding utf 8 Spyder Editor This is a temporary script file from io im
  • WordPress:如何计算标签上的帖子数量

    我有个问题 如何计算某个标签的帖子数量 例子 标记照片 67 Thanks 使用下面的代码 taxonomy category can be category post tag or custom taxonomy name Using T
  • 单例类如何使用接口?

    我在很多地方读到单例可以使用接口 有些我无法理解这一点 每个类都可以实现一个接口 而 Singleton 只是一个 普通 类 它确保除了它可能实现的其他业务逻辑之外 在任何时间点都只存在它的一个实例 这也意味着 Singleton 至少有
  • 在 ColdFusion 中将文件保存到服务器

    经过一些研究后 我觉得这应该可行 但是它没有将文件保存到我的图像目录中
  • 消除 Ref# 参考不存在问题

    In the UpdateDemogInfoDA脚本中 我允许用户输入新信息 在另一个工作表 JBD 中捕获该信息 然后使用 示例数据 选项卡中的新信息覆盖旧信息 然后 当按下新的查找按钮时 将根据以下公式查找CustID填充 由于某种原因
  • 如何在 Bucardo Postgresql multi master 中处理序列

    我们正在三个不同的 Postgresql 服务器上设置一个数据库 将来可能会在更多服务器上 目前使用 bucardo 多主组同步所有表 我们不同步序列 我们尝试过 我们注意到当同时写入发生在不同服务器上的同一个表中时 布卡多会让我们丢失数据