问题标签 [mysql-innodb-cluster]

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 投票
1 回答
541 浏览

mysql - HAProxy 中的 2 个 mySQL 集群

我们使用 HAProxy (1.5) 将 mysql 代理到 4 个 Galera 节点。我们使用roundrobin,适用于高可用性和负载平衡。

请参阅 /etc/haproxy/haproxy.cfg

这很好用,但我们担心有一天集群会失败,如果上述 4 个 galera 节点都不可用,我们希望 haproxy 切换到另一个 mysql 服务器。我们只希望最后一台服务器用作末日场景,因为它的数据比生产集群晚一小时,更重要的是,它是一个不同的数据集。我们的想法是我们从一小时后自动滚动到我们的非集群 mysql 数据并保持我们的客户正常运行。

有人知道HAProxy是否可以做到这一点?因此,轮询中的前 4 个服务器,如果它们不可用,则选择非集群单数据库服务器作为最后的手段。

0 投票
1 回答
697 浏览

mysql - 导致死锁的 MySQL 触发器已通过 Lock Tables 解决

一段时间以来,我一直在与 MySQL 死锁问题作斗争。我们有很多表记录数据,然后有插入后触发器,将每分钟的统计信息/汇总数据提取到另一个汇总表中。显然,这会导致多个插入影响汇总表中的同一行。但是由于没有任何东西在等待插入的结果继续,这不应该导致死锁。插入是分批完成的——每隔几毫秒使用一次批量插入。它们可以同时从不同的应用程序中完成。由于这些批量插入语句从来都不是较大事务的一部分,所以我不太明白为什么会导致死锁。如果有人可以解释为什么会发生这种情况,将不胜感激!从错误日志中,我只看到多行:

现在,似乎我终于设法摆脱了死锁,方法是在执行批量插入之前手动使用“锁定表”语句执行 mysql 表锁定。我知道在 innodb 表上执行表级锁是非常不受欢迎的,但是自从我添加了这个表锁之后,我还没有看到死锁发生。

表级锁解决这样的死锁问题有意义吗?这是解决此类问题的一种可接受的方法,还是在使用 innodb 表时不惜一切代价避免表锁?

编辑:汇总表如下所示:

触发器会这样做:

以下是相关的死锁信息:

0 投票
0 回答
82 浏览

innodb - 一个 galera 节点出现故障并开始将错误 innodb 报告为未知或不受支持的引擎

我的一个节点已关闭,它也是节点 A 的捐赠者,因此我从节点 A 配置中删除了关闭节点作为捐赠者。这样节点 A 就不必等待节点出现。

由于最初出现故障的节点存储速度慢且网络连接速度慢,我决定将其删除。当我删除它并重新启动集群时,即使节点 A 没有出现,在重新启动时它开始报告错误:

为什么它一直在工作时现在开始报告未知/不受支持的存储引擎 innodb?

顺便说一句,我使用了另一个第三个节点来引导(启动 Galera_new_cluster)。

0 投票
0 回答
82 浏览

mysql - MySQL 挂起 SELECT 来自带有 blob 字段的表

此问题已移至dba.stackexchange.com

我设法创建了一个具有三个节点和一个路由器的 mysql InnoDB 集群,一切正常,但是当我尝试从另一台服务器运行下表中的选择查询时,它会冻结,但是当我将结果限制在 26 以下时它可以工作

例如 :

顺便说一句,如果从 R/W 节点(托管主模式的服务器)尝试时没有冻结。

0 投票
1 回答
901 浏览

mysql - 设置 InnoDB Cluster - 打开连接时出错

我正在使用以下教程(https://www.sqlshack.com/deploy-mysql-innodb-clusters-for-high-availability/)设置 InnoDB 集群。到目前为止一切正常:

  • MySQL 服务器安装
  • dba.configureLocalInstance()
  • dba.createCluster() - 在主节点上

但现在我到了最后一步,即向集群添加一个实例。但这不起作用,因为第二个实例似乎无法通过端口 33061 访问主节点。

防火墙未激活 - 通过端口 33061(通过 Telnet)从 Node2 到 Node1 的连接也有效。所有三台服务器都位于专用网络中。

发出命令“cluster.addInstance("");”时收到以下错误消息:

cluster.status() 返回以下内容:

所有节点 (3) 都运行带有 MySQL 8 的 Ubuntu 20。所有节点上的配置属性“bind-address”设置为“0.0.0.0”。也可以建立从 node1 到 node2 的 mysql 连接,反之亦然。

我已经花了几个小时试图找出错误的原因,但不幸的是还没有找到。

提前致谢!

0 投票
0 回答
48 浏览

mysql - MySQL 5.7 innodb 集群节点因大更新而失败

使用 3 服务器 mysql innodb 集群。所有服务器之间都有一个网络交换机。我注意到,当我运行大型更新(连接两个具有数百万行的表)时,有时集群的一部分会出现故障。MySQL 会指出网络问题。

[错误] 插件 group_replication 报告:“由于网络故障,成员被驱逐出组,将成员状态更改为错误。”

在此服务器上,正在进行 ping 测试,它每秒两次记录 R/W 和 R/O 服务器之间的 ping。在“网络故障”时,ping 结果在 20 毫秒内返回。ping 测试显示的最长时间是 40 毫秒。Innodb 集群允许 1000 毫秒从集群中移除自身。这似乎取出了集群的只读成员,而不是通常的读/写。

知道为什么,或者建议我如何以更好的方式完成对 MySQL 的大型更新?

当我同时删除 100 个表时,也发生了类似的事情。集群跟不上,但读/写处理了这一切。

0 投票
1 回答
109 浏览

mysql - InnoDB 集群内存问题与 LOAD DATA

我需要创建一个大约 8M 行的新表,而不会对使用集群的其他服务造成太多噪音。我将数据分成 100k 行的块并使用LOAD DATA LOCAL FILE, sleep 5s 并重复。Mysql 开始消耗所有内存,直到 OOM 杀死集群节点上的 mysqld。

我究竟做错了什么??

欢迎任何关于如何进步的帮助或想法,谢谢!

InnoDB Cluster 8.0.24,三个虚拟主机上的 Ubuntu 20.04(8.0.23 的行为相同)。6 个 CPU 内核,每个 12GB 内存。与默认配置相比,唯​​一的配置更改是local_infile = ON.

@Wilson 请求的附加信息(链接到 pastebin):

  1. 主要,没有内存问题
  2. 次要,有内存问题

我正在将数据加载到我的表中:

我如何加载数据:

一些内存相关信息:

0 投票
0 回答
49 浏览

spring-boot - mysql-innodb-cluster如何在Springboot中使用单个数据源进行读写

我正在使用具有“单主”拓扑的三个实例的 Innodb-cluster。现在,当我配置 MysqlRouter 时,它为我提供了以下两个用于读取和写入的端口:

然而,在我的 Spring Boot 应用程序中,我不想保持读写分离,因为它迫使我保留两个数据源。

有什么方法可以让我只使用一个连接/数据源进行读写?

0 投票
0 回答
89 浏览

kubernetes - MySQL Kubernetes Pod 进入 CrashLoopBackOff 并且无法解密具有静态加密的 .ibd。MySQL pod 不会回到运行状态

当 MySQL pod 重新启动时,由于表空间损坏或无法解密某些表空间 .ibd 文件,pod 不会恢复运行状态。当表通过 TDE 加密进行静态加密时,会特别观察到这种情况。

这是进入 CrashLoopBackOff 状态的 pod 的日志

请帮助我们找出 MySQL 无法恢复运行状态的原因?即使在初始化时 MySQL 可以使用密钥环路径和密钥环文件,也不解密加密表空间的确切原因是什么。

0 投票
1 回答
20 浏览

mysql-8.0 - 在 innodb 集群中获取 ipallowlist

我是 innodb 集群的新手,在设置 innodb 集群时,有一个步骤来设置ipAllowlist

您如何检索当前的 ipAllowlist?