【问题标题】:Mariadb Galera Cluster | Table Update IssueMariadb Galera 集群 |表更新问题
【发布时间】:2021-09-23 17:34:12
【问题描述】:

我们在系统中创建了一个 3 节点 galera 集群,然后从现有的单节点独立 mariadb 中移动了我们现有的数据库/表。然后,当我们在这个 3 节点集群上启动我们的应用程序时,它运行良好,可以更新少量记录,但之后我们的更新被无限期触发(锁定),然后我们无法对表进行任何写入或更新。我们不断面对这个问题,我们多次尝试再次重建我们的集群,但同样的问题一次又一次地发生。请帮助为这个问题提供一些方向。 在这种特殊情况下,我(应用程序)只是一个接一个地对记录运行更新命令。它一次更新的记录总数约为 250 条(一个接一个)。表中的总记录为 40 万条。此特定表没有任何主键。更新此 java 应用程序中使用的查询示例 -

"update dost_master_prod set  a2d_api_request = ?,
a2d_api_response = ?, a2d_api_status = ?, a2d_api_description = ?, d2r_api_request = ?, 
d2r_api_response = ?, d2r_api_status = ?, d2r_api_description = ?, updated_date_time = ?, 
update_description = ? 
where initiator_agent = ? and report_date = ?;"

以这种方式通过应用程序连接到集群 - jdbc:mariadb:sequential。

错误日志 -

SHOW ENGINE INNODB STATUS
------------
TRANSACTIONS
------------
Trx id counter 11316748
Purge done for trx's n:o < 11316747 undo n:o < 0 state: running
History list length 29
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 421357846471208, not started
0 lock struct(s), heap size 1128, 0 row lock(s)
---TRANSACTION 421357846466944, not started
0 lock struct(s), heap size 1128, 0 row lock(s)
---TRANSACTION 11316747, ACTIVE 1785 sec
mysql tables in use 1, locked 1
51495 lock struct(s), heap size 5726328, 3641448 row lock(s), undo log entries 1
MySQL thread id 9627, OS thread handle 139882031507200, query id 5693745 injiffyan01.india.airtel.itm 10.92.228.55 root Commit
update dost_master_prod set  a2d_api_request = '{
  \"amount\" : \"3823.75\",
  \"currency\" : \"XXX\",
  \"subType\" : \"commission_otf\",
  \"type\" : \"adjustment\",
  \"requestDate\" : \"2021-05-13T11:15:44.011+05:30\",
  \"debitParty\" : [ {
    \"key\" : \"accountid\",
    \"value\" : \"994\"
  } ],
  \"creditParty\" : [ {
    \"key\" : \"accountid\",
    \"value\" : \"09944890425\"
  } ],
  \"metadata\" : [ {
    \"key\" : \"slab_next\",
    \"value\" : \"Slab for next OTF payout is 61-80 GA\"
  }, {
    \"key\" : \"slab_achieved\",
    \"value\" : \"41-60 GA\"
  }, {
    \"key\" : \"de
---TRANSACTION 421357846475472, not started
0 lock struct(s), heap size 1128, 0 row lock(s)
---TRANSACTION 421357846462680, not started
0 lock struct(s), heap size 1128, 0 row lock(s)
--------

问题 1) 这个问题是因为我们的表中没有主键吗? 问题 2) Galera 集群的限制是什么?将 10 多个高影响应用程序从单节点 mariadb 移动到 3 节点 galera 集群是否可行?如果是,需要采取哪些预防措施? 问题 3) 为什么由于一张表(在一个数据库上)问题导致整个集群被击中/挂起/锁定? 问题 4) 我们应该使用顺序、复制或负载平衡哪种模式?

【问题讨论】:

    标签: java mysql mariadb replication galera


    【解决方案1】:

    添加一个PRIMARY KEY,即使它只是一个简单的AUTO_INCREMENT

    添加INDEX(initiator_agent, report_date)

    那我们看看还有什么需要修复的。

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2016-07-22
      • 1970-01-01
      • 2017-02-06
      相关资源
      最近更新 更多