问题标签 [galera]

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 回答
1420 浏览

mysql - 如何从 MySQL 迁移到 Galera Cluster

我有一个 MySQL 数据库,里面有一些数据。现在我想从这个数据库创建集群。

我已经配置了 Galera,我只有这个单一的节点。现在,如何将数据复制到其他节点?

它会由 Galera 自动发生,还是我应该先转储当前数据,然后清理第一个节点上的数据库,启动所有其他节点并将数据加载到其中一个节点并等待它们复制。

以下问题是:如何在运行时添加/删除节点?

0 投票
1 回答
517 浏览

cluster-computing - Galera集群——在集群外启动一个节点

我有一个在两台服务器上运行的应用程序。每个都运行着一个 mariadb 和一个负责复制的 galera 集群。

升级应用程序时,我需要停止复制,所以我想要一些关于如何在集群外部为其中一台服务器启动数据库的指南,然后是重新连接它的最佳方法。

感谢所有想法在此先感谢

0 投票
1 回答
70 浏览

mysql - 关于 Galera 集群与传播工具包的混淆

我对 Galera 集群感兴趣。Galera 团队声称他们为各种 GCS 提供了基于适配器的灵活设计。

http://galeracluster.com/products/technology/他们的网站说“可以调整许多 gcs 实现,我们已经尝试了传播和我们的内部实现:vsbes 和双子座”但我几乎无法在网上找到任何关于实现的资源将spread(一个分布式工具包)与Galera集群相结合。

当我设置一个小型 galera 集群时,它可以正常工作。当我更新一个 Mysql 时,其他 mysqls 也得到了更新。我很困惑为什么 Galera 需要使用 spread 以及如何做到这一点。任何人都有如何使用 Galera 实现传播的经验?

非常感谢。

0 投票
2 回答
2672 浏览

mysql - MariaDB Galera 集群服务器以 100% CPU 运行且负载上升

我有一个 Drupal 应用程序,它已经在单个 MySQL 数据库服务器上运行了 12 个月,并且性能相对较好(除了峰值负载事件)。我们需要能够支持比当前数据库服务器允许的更高的峰值,并且在 32GB 时,简单地垂直扩展单个数据库服务器并没有太大的收益。

我们决定建立一个具有 2 个 32GB 实例的新 MariaDB Galera 集群。我们尽可能将配置与即将过时的数据库服务器匹配。

迁移到新的数据库服务器后,我们注意到这些实例上的 CPU 使用率一直保持在 100%,并且负载在稳步增加。在 1 小时内,平均负载从 0.1 变为 150。

最初我们认为这可能与服务器之间的同步有关,但即使关闭了 1 台服务器并且没有发生同步,只要 Web 应用程序向它发出请求,它仍然会耗尽 CPU。

经过大量实验后,我发现减少一些配置选项会对 CPU 使用率和负载产生深远影响。进行以下更改后,两个实例的平均负载稳定在 4 到 6 之间。

CPU 利用率和平均负载

问题

  • 尽管本质上是从旧服务器迁移配置,但新旧服务器之间的 CPU 使用率存在如此巨大差异的一些可能原因是什么?
  • 负载目前在 4 到 6 之间徘徊(这是我们网站的低流量时期)。我应该看什么来尝试降低这个值,并确保当网站受到一些真实流量的影响时它不会崩溃?

配置更改

innodb_buffer_pool_instances

  • 原值:500(所有数据库共498张表)
  • 新值:92

表缓存

  • 原值:8
  • 新值:4

最大连接数

  • 原值:1000
  • 新值:400

当前配置

这是其中一台服务器的完整配置文件/etc/mysql/my.cnf

0 投票
1 回答
70 浏览

cluster-computing - MARIADB GALERA 集群

我有一个工作集群,在 192.168.14 子网上有三个节点我想将外部机器添加到集群 ip 78.3.157.x 外部机器无法加入集群并出现“无法打开 gcom 后端连接 110”这样的配置实际上是否可行如果是这样的话

0 投票
1 回答
806 浏览

mysql - Mariadb galera 集群,无法添加另一个节点

我正在尝试使用 xtrabackup_v2 SST 将第三个节点添加到 galera 集群,但它一直失败错误:

当我查看二进制日志时,mariadb-bin.state 文件似乎是空的,这就是导致问题的原因。

如果我查看捐赠服务器上的 binlog 目录,它没有“mariadb-bin.state”文件。

0 投票
1 回答
3438 浏览

mysql - 大页面不适用于 mariadb

我们尝试为使用 galera 集群运行的 mariabdb 设置大页面。我们已经分配了足够高的大页面来容纳 innodb 缓冲区。

服务器配置文件

/etc/sysctl.conf

/etc/security/limits.conf

免费-m

mysqld.log 中的错误

cat /proc/meminfo |grep -i 巨大的

0 投票
0 回答
723 浏览

mysql - Mariadb Galera 集群中的节点意外关闭

我已经为我的应用程序设置了 3 节点 galera 集群,我的应用程序中有一个存储过程临时创建一个表(不是 TEMPORARY TABLE),该表是动态创建并执行的。一些 CRUD 操作在表上进行了多次,并且在其使用完成后,它在存储过程结束时被删除。问题是每次我运行这个特定的存储过程时,我的 3 个节点中的 2 个节点都会失败并自动关闭。这是来自失败节点的日志:-

有什么特别的我可以在不修改存储过程的内部结构的情况下解决这个问题。

的输出

0 投票
1 回答
2324 浏览

mysql - 使用多个数据库结果执行 MySQL 替换到选择以死锁

我检查了其他类似的问题,例如堆栈溢出中的“MySQL 死锁”,但没有任何解决方案。

情况:

  1. 所有的表都是InnoDB;db1.table1 =>排序规则:latin1_swedish_ci和 db2 =>排序规则:utf8_unicode_ci
  2. 查询在版本为 Server version: 10.0.15-MariaDB 的开发服务器中运行良好
  3. 假设我有5 个数据库服务器,它们使用 Galera cluster 共享多主复制
  4. 我在这 5 台服务器中的任何一台服务器中手动执行查询并收到错误。
  5. 该服务器的版本与查询执行成功的开发服务器相同,即 10.0.15-MariaDB

试过:

  1. 包括LOCK IN SHARE MODE例如 REPLACE INTO...(第一个选择查询(子查询)LOCK IN SHARE MODE);但它以同样的信息失败了。
  2. Insert / REPLACE ...(第一次选择查询(子查询LOCK IN SHARE MODE)LOCK IN SHARE MODE);它也因相同的消息而失败。
  3. 尝试在选择查询/子选择查询中按 id 排序。再次失败并显示相同的消息。
  4. db1.table1 和 db2.table1 都几乎只有 50k 条记录,所以我猜这不会引起任何问题。
  5. 所有表都有id 作为主键和自动增量。但我以某种方式明确使用它们 - 请注意查询。
  6. 显示引擎 INNODB 状态;对我没有任何有用的提示。

最可能的原因可能是由于galera 集群背后的多主复制的乐观锁定http://www.severalnines.com/blog/avoiding-deadlocks-galera-set-haproxy-single-node-writes-and -多节点读取)。但是在单个节点上执行查询时不应该失败吗?虽然成功后我必须在多主复制中执行相同的操作,但我想如果基本问题得到解决,那么复制的服务器将不再产生问题。

笔记:

我需要在没有任何临时表或将子查询的结果存储在代码中的情况下执行此操作。到目前为止,还有一些其他依赖项执行单个查询是最有利的方式。

0 投票
2 回答
9161 浏览

mariadb - '无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器'(111“连接被拒绝”)'

我正在尝试在 Debian Wheezy 7.5 上设置 mariadb galera 集群。我发现了许多不同的指令,都有点不同,但到目前为止没有一个有效。

我正在尝试设置一个两节点集群。

在主节点上,我使用默认的 my.cnf,在 conf.d/cluster.cnf 中有这些附加设置:

创建集群用户,为该用户提供所有必需的权限,成功启动服务器

集群启动,我可以看到cluster_size=1

在第二个节点上,我使用默认的 my.cnf,在 conf.d/cluster.cnf 中有这些附加设置:

根据以下建议,我还用主节点上的 debian.cnf 替换了辅助节点上的 debian.cnf:

http://docs.openstack.org/high-availability-guide/content/ha-aa-db-mysql-galera.html并授予适当的权限(这在其他地方也有建议,没有正确的链接现在)。

两个节点上的 debian.cnf 内容:

当我尝试使用以下命令启动第二个节点时:

service mysql start

它失败了,我在 /var/log/syslog 中得到了这个:

这个问题在互联网上有无数的线索。有些没有答案。一些确实有答案的人

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) - 我的磁盘空间未满

无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器- 没有答案。但根据评论, mysql.sock 确实存在并且拥有 mysql.mysql 所有权。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) - 服务器已安装,socket 再次出现在正确的位置

我还读到这可能是 /var/run/mysqld 上的权限问题,但我已经检查了这个并给了它 mysql.mysql 所有权。

如果不出意外,这是试图重振这个问题的尝试。任何方向都非常感谢。

谢谢,

更新: 两个节点的 my.cnf。它是默认的 my.cnf。唯一的变化是注释掉该bind-address=127.0.0.1行。

更新 另外,我测试了,如果我尝试自行定期启动节点,(没有集群,没有额外的设置,只是默认值)它可以工作。