首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL集群数据节点在其孪生节点失败时重新启动

MySQL集群数据节点在其孪生节点失败时重新启动
EN

Stack Overflow用户
提问于 2014-09-18 06:30:31
回答 1查看 1.3K关注 0票数 0

配置:

  • 服务器#1: 1 mgm节点(#49),1个数据节点(#1),1个sql节点(实IP 192.168.1.128)
  • 服务器#2: 1 mgm节点(#50),1个数据节点(#2),1个sql节点(实IP 192.168.1.130)
  • 虚拟IP: 192.168.1.240 (使用持久化服务器#1作为主服务器)

规格:

  • MySQL集群7.3.6 x86_64
  • Debian7.6 x86_64

它是通过使用MySQL集群自动安装程序部署的。每件事都很正常。

但是,当我关闭一个节点时,另一个服务器上的数据节点将重新启动。NDB_MGM显示它正在“开始”。退出“启动”状态需要很长时间。

正如我所测试的,当有四个节点时,就不会发生这种情况。

有人知道这次重启的原因是什么吗?

提前谢谢。

更新:配置文件和命令行参数

  1. NDB_MGMD #50的配置文件

代码语言:javascript
复制
#
# Configuration file for MyCluster NDB_MGMD #49
# /usr/local/mysql/data/49/config.ini

[NDB_MGMD DEFAULT]
Portnumber=1186

[NDB_MGMD]
NodeId=49
HostName=192.168.1.128
DataDir=/usr/local/mysql/data/49/
Portnumber=1186

[NDB_MGMD]
NodeId=50
HostName=192.168.1.130
DataDir=/usr/local/mysql/data/50/
Portnumber=1186

[TCP DEFAULT]
SendBufferMemory=4M
ReceiveBufferMemory=4M

[NDBD DEFAULT]
BackupMaxWriteSize=1M
BackupDataBufferSize=16M
BackupLogBufferSize=4M
BackupMemory=20M
BackupReportFrequency=10
MemReportFrequency=30
LogLevelStartup=15
LogLevelShutdown=15
LogLevelCheckpoint=8
LogLevelNodeRestart=15
DataMemory=1M
IndexMemory=1M
MaxNoOfTables=4096
MaxNoOfTriggers=3500
NoOfReplicas=2
StringMemory=25
DiskPageBufferMemory=64M
SharedGlobalMemory=20M
LongMessageBuffer=32M
MaxNoOfConcurrentTransactions=16384
BatchSizePerLocalScan=512
FragmentLogFileSize=64M
NoOfFragmentLogFiles=16
RedoBuffer=32M
MaxNoOfExecutionThreads=2
StopOnError=false
LockPagesInMainMemory=1
TimeBetweenEpochsTimeout=32000
TimeBetweenWatchdogCheckInitial=60000
TransactionInactiveTimeout=60000
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000

[NDBD]
NodeId=1
HostName=192.168.1.128
DataDir=/usr/local/mysql/data/1/

[NDBD]
NodeId=2
HostName=192.168.1.130
DataDir=/usr/local/mysql/data/2/

[MYSQLD DEFAULT]

[MYSQLD]
NodeId=53
HostName=192.168.1.128

[MYSQLD]
NodeId=54
HostName=192.168.1.130
  1. NDB_MGMD #50的配置文件

代码语言:javascript
复制
#
# Configuration file for MyCluster NDB_MGMD #50
# /usr/local/mysql/data/50/config.ini

[NDB_MGMD DEFAULT]
Portnumber=1186

[NDB_MGMD]
NodeId=49
HostName=192.168.1.128
DataDir=/usr/local/mysql/data/49/
Portnumber=1186

[NDB_MGMD]
NodeId=50
HostName=192.168.1.130
DataDir=/usr/local/mysql/data/50/
Portnumber=1186

[TCP DEFAULT]
SendBufferMemory=4M
ReceiveBufferMemory=4M

[NDBD DEFAULT]
BackupMaxWriteSize=1M
BackupDataBufferSize=16M
BackupLogBufferSize=4M
BackupMemory=20M
BackupReportFrequency=10
MemReportFrequency=30
LogLevelStartup=15
LogLevelShutdown=15
LogLevelCheckpoint=8
LogLevelNodeRestart=15
DataMemory=1M
IndexMemory=1M
MaxNoOfTables=4096
MaxNoOfTriggers=3500
NoOfReplicas=2
StringMemory=25
DiskPageBufferMemory=64M
SharedGlobalMemory=20M
LongMessageBuffer=32M
MaxNoOfConcurrentTransactions=16384
BatchSizePerLocalScan=512
FragmentLogFileSize=64M
NoOfFragmentLogFiles=16
RedoBuffer=32M
MaxNoOfExecutionThreads=2
StopOnError=false
LockPagesInMainMemory=1
TimeBetweenEpochsTimeout=32000
TimeBetweenWatchdogCheckInitial=60000
TransactionInactiveTimeout=60000
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000

[NDBD]
NodeId=1
HostName=192.168.1.128
DataDir=/usr/local/mysql/data/1/

[NDBD]
NodeId=2
HostName=192.168.1.130
DataDir=/usr/local/mysql/data/2/

[MYSQLD DEFAULT]

[MYSQLD]
NodeId=53
HostName=192.168.1.128

[MYSQLD]
NodeId=54
HostName=192.168.1.130

命令行参数:

  1. 在服务器#1上启动ndb_mgmd

代码语言:javascript
复制
/usr/local/mysql/bin/ndb_mgmd --initial --ndb-nodeid=49 \
--config-dir=/usr/local/mysql/data/49/ \
--config-file=/usr/local/mysql/data/49/config.ini
  1. 在服务器#2上启动ndb_mgmd

代码语言:javascript
复制
/usr/local/mysql/bin/ndb_mgmd --initial --ndb-nodeid=50 \
--config-dir=/usr/local/mysql/data/50/ \
--config-file=/usr/local/mysql/data/50/config.ini
  1. 在服务器#1上启动ndbmtd

代码语言:javascript
复制
/usr/local/mysql/bin/ndbmtd --ndb-nodeid=1 --bind-address=192.168.1.128 \
--ndb-connectstring=192.168.1.240:1186,
  1. 在服务器#2上启动ndbmtd

代码语言:javascript
复制
/usr/local/mysql/bin/ndbmtd --ndb-nodeid=2 --bind-address=192.168.1.130 \
--ndb-connectstring=192.168.1.240:1186,
EN

回答 1

Stack Overflow用户

发布于 2014-09-19 07:44:36

当您的两个节点设置时出现问题。如果您有一个网络问题(分裂的大脑条件),两个节点将看不到对方,然后,他们将决定关闭。然后,它们将启动,但它们必须等待另一个节点,除非指定了“node”。

对于4个节点,您正在分割集群3/1,因此网络连接的节点将有足够的仲裁量来验证它是mgm节点作为仲裁器,并将成为主节点。

您应该解决这个问题,要么将mgm节点放置在第三台计算机中(这是一个非常轻量级的进程,因此不需要特殊的资源),要么使用集群并将mgm服务绑定到VIP。否则,您将在其中一个节点的网络故障中丢失服务

对于VIP配置数据节点,必须强制使用真正的IP:

代码语言:javascript
复制
--bind-address=name

而且ArbitrationTimeout应该设置得足够高,以允许集群迁移mgm服务。

对于mgm节点,禁用配置缓存将使配置更改更容易。

代码语言:javascript
复制
--config-cache=FALSE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25905711

复制
相关文章

相似问题

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