Galera 集群:更新查询后所有节点速度变慢并出现连接过多错误

问题描述 投票:0回答:1

我在使用 galeracluser 时遇到了障碍,我有一个问题。

我正在使用 MariaDB 10.5.13 版本和 Galera Cluster。我面临的问题是所有节点由于查询而变慢,导致连接超时。

场景如下:

  1. 我有一个由节点 A、B 和 C 组成的 Galera 集群。(实例是 aws 的 t3.Medium。)
  2. 我使用默认的 DDL 复制设置(TOI)在节点 A 上创建了一个表。 查询如下: item 表有 220 万行。

创建表 item_temp AS SELECT COUNT(*) FROM item WHERE item_status = 1;

  1. 创建表后,我在节点 A 上执行更新查询。 (我知道我正在更改每一行。这是一个错误)
UPDATE item SET item_status = 3;
  1. 执行更新查询后,所有节点速度变慢,并且不断出现错误消息“Aborted connection 0 to db: 'unconnected' user: 'unauthenticated' host: 'connecting host' (Too Many Connections)”。
  2. 当我检查节点 B 和 C 上的进程列表时,我注意到创建查询仍然可见(出现在进程列表中)。 (注:出现在进程列表中表示创建查询仍在进行中。) enter image description here
  3. 为了解决速度下降的问题,我重新启动了所有节点。结果更新查询没有反映。

我怀疑是更新查询导致了问题,但我不确定为什么所有节点都变慢了。这是我的假设:

创建查询可能仍在进程列表中,导致所有写入事务被阻止,这可能会产生影响。 或者,更新查询可能已立即应用并同时复制到其他节点,从而导致许多节点更新并影响服务器。 任何有关所有节点速度变慢的原因的见解将不胜感激。

我想知道为什么不仅发生更新查询的节点变慢了,其他节点也变慢了

database mariadb crash replication galera
1个回答
0
投票

当 Galera 被修复以使

CREATE TABLE .. SELECT
工作时 (MDEV-7673),这会将集群置于 TOI 模式以便复制此语句。这个实现仍然存在。

因此建议 1,使用

CREATE TABLE
,然后使用
INSERT INTO .. SELECT
,特别是如果您有一个大型查询最终聚合为一个小型结果集。这个小结果集将在非 TOI 模式下快速复制。

3./4。由于 TOI 模式的结果,如(5.图像所示)中的进程列表所示,正在执行

CREATE TABLE .. SELECT
。缺乏数据库连接是现有的
UPDATE/INSERT
等待 TOI 结束的查询正在消耗所有连接。

5.

TOI 模式

CREATE TABLE ... SELECT
运行一个多小时很奇怪。即使是 2M 行,我也期望更快。您是否配置了更大的 innodb 缓冲池大小以匹配您的实例大小?这是一个行大小特别大的表吗?

6.

除非某些事情确实停滞,否则重新启动通常是一个错误。回滚可能会很长。

预计不会出现

UPDATE item SET item_status = 3;
,因为没有集群的认证结果,该事务从未提交。由于服务器关闭,这被认为是中止的事务,因此在重新启动时从撤消日志中回滚。

© www.soinside.com 2019 - 2024. All rights reserved.