AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 228764
Accepted
nbari
nbari
Asked: 2019-02-03 15:21:27 +0800 CST2019-02-03 15:21:27 +0800 CST 2019-02-03 15:21:27 +0800 CST

帮助理解 galera 一致性(基于认证的复制)

  • 772

Galera 使用基于认证的复制来实现强一致性。

在执行完其他节点后执行事务COMMIT时,其他节点将对其进行认证,如果没问题,它将成功提交。

但是,如果丢失了一个验证提交但仍在获取数据的节点,例如在写一个 big 时,会发生什么blob?

据我了解,认证过程是同步的,但数据传输是异步的,这意味着客户端/用户可能认为他的数据在成功运行后存储在所有节点上,COMMIT但实际上在后端发生的是数据可能仍然存在在节点之间同步,在网络中断的情况下,根据交易类型,节点可能会发生冲突,对吗?

如果是这种情况,如何将集群配置为从可能的冲突中自我修复,或者想知道是否有一种方法可以实现强一致性,即使它会影响每个的返回时间,COMMIT因为它应该只有在数据被删除后才能成功在所有节点上完全传输。

galera clustering
  • 1 1 个回答
  • 325 Views

1 个回答

  • Voted
  1. Best Answer
    dbdemon
    2019-02-04T04:02:23+08:002019-02-04T04:02:23+08:00

    但是,如果丢失了一个验证提交但仍在获取数据的节点,例如在写入一个大 blob 时,会发生什么情况?

    这与丢失任何其他节点没有什么不同。如果节点崩溃,它将在下次出现时尝试重新加入集群。将找到一个施主节点,最好使用 IST(增量状态传输)或 SST(状态快照传输)将节点带到正确的状态。

    据我了解,认证过程是同步的,但数据传输是异步的,这意味着客户端/用户可能认为他的数据在成功运行 COMMIT 后存储在所有节点上,但实际上在后端发生的是数据可能是仍在节点之间同步,在网络中断的情况下,根据交易类型,节点可能会发生冲突,对吗?

    你是对的,数据传输是异步的,并且有很短的时间节点状态不相同。这不完全是冲突,只是其他节点落后了。他们很快就会赶上来的。

    如果是这种情况,如何将集群配置为从可能的冲突中自我修复,或者想知道是否有一种方法可以实现强一致性,即使它会影响每个 COMMIT 的返回时间,因为它应该只在数据之后成功已在所有节点上完整传输。

    是的,它通过 IST 和 SST 进行自我修复。

    有两种方法可以确保您正在读取最新版本的数据:如果您总是只写入一个节点(例如,因为使用带有读写分离器的数据库代理),那么您可以确保也从同一个节点读取。另一个选项是设置会话变量wsrep_sync_wait =1 - 请参阅使用 Galera 实现先读后写语义。

    • 2

相关问题

  • 将 Sql 集群安装迁移到新驱动器

  • 哪些操作系统已通过 Oracle 11gr2 RAC 认证?

  • 如何?具有多个活动节点的 SQL 集群(非故障转移)

  • 我可以在 oracle 集群 (RAC) 的一个节点上安装额外的 oracle 数据库吗?

  • SQL 集群上的内部版本号有多重要

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve