首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Galera集群关注事项

Galera集群关注事项
EN

Stack Overflow用户
提问于 2017-09-25 20:32:11
回答 1查看 602关注 0票数 0

我想在我们的生产环境中使用Galera集群,但我有一些担心;

  1. 每个表必须至少定义一个显式主键。
  2. 每个表必须在InnoDB或XtraDB存储引擎下运行。
  3. 把你的大交易分批分批处理。例如,与其让一个事务插入100,000行,不如将其拆分为较小的块,例如,每个事务插入1000行。
  4. 您的应用程序可以容忍非顺序的自动增量值。
  5. 架构更改的处理方式不同。
  6. 通过向单个节点发送写操作来处理热点/Galera死锁。

我想要澄清所有前面提到的points.Also,我们有超过600个数据库正在生产,galera能在这个环境中工作吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-09-25 20:54:01

这是一个需要一次性处理的LOT。有两个问题:表创建(请参阅第5点)和使用这些表的应用程序。我试试看:

1)每个表必须至少定义一个显式主键。

当您创建一个表时,您不能拥有任何没有的表,没有主键。表由字段和索引创建。必须将其中一个索引声明为主键。

2)每个表必须在InnoDB或XtraDB存储引擎下运行。

创建表时,必须具有ENGINE=InnoDBENGINE=XtraDB。Galera不处理默认的MyISAM类型表。

3)把你的大交易分批分批处理。例如,与其让一个事务插入100,000行,不如将其拆分为较小的块,例如,每个事务插入1000行。

这与您的架构无关,而是与您的应用程序有关。尽量不要有一个INSERT在一个transaction中包含大量数据的应用程序。Note认为这是可行的,但风险很大。这不是的一个要求,而是一个建议。

4)应用程序可以容忍非顺序的自动增量值。

使用群集,您可以更新多个服务器。如果某个字段是自动递增的,则每个群集成员都可能尝试增加同一个字段.您的应用程序应该永远不会假设下一个ID与上一个ID相关。对于自动增量字段,不要强制一个值,让DB处理它。

5)模式更改的处理方式不同。

架构是表和索引的描述,而不是添加、删除或检索信息的事务。您有多个服务器,因此必须小心处理架构更改,以便所有服务器都能赶上。

6)通过向单个节点发送写操作来处理热点/Galera死锁。

这是与应用程序和DB相关的。死锁是一种情况,其中应用程序的两个不同部分试图获得一个值(ValueA),因为DB要锁定它,以便对其进行更改,然后尝试获取另一个值(ValueB),用于相同的用途。如果另一个部分试图首先锁定ValueB,然后是ValueA,那么我们就会陷入死锁,因为每个应用程序都锁定了另一个应用程序的下一个值。为了避免这种情况,最好只将tp写入集群中的一台服务器,并使用其他服务器进行读取。请注意,您仍然可以在应用程序中使用死锁。但你可以避免加雷拉制造这种局面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46413704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档