Mysql Cluster 7.6.10 : Mysql高可用搭建

准备工作

四台主机
MysqlCluster7.6.10安装包一份(如果是混合环境要准备多份)
解压时一定要在管理员权限下进行并且解压目录不能出现非英文数字字符,中文不行。
在这里插入图片描述
MysqlCluster包内集成的mysql-5.7.26

我的环境是一台Windows主机+三台CentOS7虚拟机

Windows7 64位 IP:192.168.84.1
CentOS7-1 64位 IP:192.168.84.132
CentOS7-2 64位 IP:192.168.84.133
CentOS7-3 64位 IP:192.168.84.134

四台主机必须可以互相ping通,同时关闭防火墙。最好都连着互联网。
集群上的节点不能存在 mysql 和 mariadb 数据库,如果有,请卸载干净。

   // 列出安装的软件
 # rpm -qa | grep mariadb   已经安装的软件包
   // 删除已安装的软件包
 # rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

开始搭建集群

Web Auto Install安装方式

在安装主机上运行安装包内的 setup.bat 这个在Windows或者Linux方式一样的,选用哪个机器也没要求不过最好用的性能比较好的机器,我是方便演示所以用的Windows主机。
在这里插入图片描述
如果不是第一次打开应该会出现:
在这里插入图片描述
这时只要根据提示删除文件即可。
在这里插入图片描述
在这里插入图片描述
下面四个*.mcc是配置记录文件;不想要也可以删除。

好,此时再运行 setup.bat
在这里插入图片描述
这个状态会自动弹出游览器窗口
在这里插入图片描述
点击 Continue 继续
在这里插入图片描述
输入配置文件名称,点击确定
在这里插入图片描述

配置好了就右下角 save&next 下一步
在这里插入图片描述

上传可执行文件,每个主机都要有;
在这里插入图片描述

要将所有可执行文件开放权限:

# cd /usr/local/bin
# chmod 777 *

在这里插入图片描述
在这里插入图片描述
下一步
在这里插入图片描述
点击 Start cluster 之后会经历四个阶段:
1.创建目录 creating direcotry
2.分发配置文件 distribution configuration
3.启动 mgm 节点
4.启动 ndb和sql节点
如果上面某一步出错,那么请看下面的手工配置步骤来解决。

手工搭建集群

mgm节点配置

创建目录
/root/MySQL_Cluster/节点ID
在这里插入图片描述
Cluster核心配置文件 config.ini 内容:

#
# Configuration file for MysqlClusterConfig
#

[NDB_MGMD DEFAULT]
ArbitrationRank=1
HeartbeatIntervalMgmdMgmd=1500
Portnumber=1186

[NDB_MGMD]
NodeId=49
HostName=192.168.84.132
DataDir=/root/MySQL_Cluster/49/
Portnumber=1186

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

[NDBD DEFAULT]
NoOfReplicas=2
LateAlloc=1
StartNoNodeGroupTimeout=0
MaxBufferedEpochs=100
MaxBufferedEpochBytes=26214400
MaxDiskWriteSpeed=20M
MinDiskWriteSpeed=10M
MaxDiskWriteSpeedOtherNodeRestart=50M
MaxDiskWriteSpeedOwnRestart=200M
BackupMaxWriteSize=1024K
BackupWriteSize=256K
BackupDataBufferSize=1024K
BackupLogBufferSize=16M
BackupReportFrequency=10
BackupDiskWriteSpeedPct=50
CompressedBackup=true
CompressedLCP=false
MemReportFrequency=0
LogLevelStartup=1
LogLevelShutdown=0
LogLevelStatistic=0
LogLevelCheckpoint=0
LogLevelNodeRestart=0
LogLevelConnection=0
LogLevelError=0
LogLevelCongestion=0
LogLevelInfo=0
EventLogBufferSize=8K
StartupStatusReportFrequency=0
DataMemory=1M
IndexMemory=1M
MinFreePct=5
MaxNoOfAttributes=1000
MaxNoOfTables=128
MaxNoOfOrderedIndexes=128
MaxNoOfTriggers=768
MaxNoOfSubscriptions=0
MaxNoOfSubscribers=0
MaxNoOfConcurrentSubOperations=256
StringMemory=25
MaxAllocate=32M
MaxNoOfSavedMessages=25
LcpScanProgressTimeout=60
Diskless=false
LockPagesInMainMemory=1
Arbitration=Default
DiskPageBufferEntries=10
DiskPageBufferMemory=64M
SharedGlobalMemory=32M
DiskIOThreadPool=2
DiskSyncSize=4096K
LongMessageBuffer=64M
MaxParallelCopyInstances=0
MaxNoOfConcurrentTransactions=4096
MaxNoOfConcurrentOperations=131072
MaxDMLOperationsPerTransaction=4294967295
MaxNoOfConcurrentScans=256
MaxParallelScansPerFragment=256
BatchSizePerLocalScan=256
FragmentLogFileSize=64M
NoOfFragmentLogFiles=16
InitFragmentLogFiles=SPARSE
RedoBuffer=32M
RedoOverCommitCounter=3
RedoOverCommitLimit=20
TwoPassInitialNodeRestartCopy=false
BuildIndexThreads=0
MaxNoOfExecutionThreads=2
RealtimeScheduler=false
SchedulerResponsiveness=5
SchedulerSpinTimer=0
TimeBetweenLocalCheckpoints=20
TimeBetweenGlobalCheckpoints=2000
TimeBetweenGlobalCheckpointsTimeout=120000
TimeBetweenEpochs=100
TimeBetweenEpochsTimeout=32000
TimeBetweenWatchdogCheck=6000
TimeBetweenWatchdogCheckInitial=60000
TransactionInactiveTimeout=4294967039
TransactionDeadlockDetectionTimeout=1200
TimeBetweenInactiveTransactionAbortCheck=1000
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000
ConnectCheckIntervalDelay=0
StartPartialTimeout=30000
StartPartitionedTimeout=4294967039
StartFailureTimeout=0
ArbitrationTimeout=7500
RestartSubscriberConnectTimeout=12000
StopOnError=0
CrashOnCorruptedTuple=true
StartFailRetryDelay=0
MaxStartFailRetries=3

[NDBD]
NodeId=1
HostName=192.168.84.133
DataDir=/root/MySQL_Cluster/1/
ServerPort=11860

[NDBD]
NodeId=2
HostName=192.168.84.134
DataDir=/root/MySQL_Cluster/2/
ServerPort=11860

[MYSQLD DEFAULT]
AutoReconnect=false
BatchByteSize=16K
BatchSize=256
MaxScanBatchSize=256K

[MYSQLD]
NodeId=53
HostName=192.168.84.133

[MYSQLD]
NodeId=54
HostName=192.168.84.134

启动mgm节点:

# ndb_mgmd -f config.ini
// 集群管理程序查看节点状态
# ndb_mgm
-- NDB Cluster -- Management Client --
# show

在这里插入图片描述
到这个状态mgm节点就配置好了。

配置NDB节点

第一次启动

# ndbd --initial --ndb-nodeid=1 ndb-connectstring=192.168.84.132:1186

以后启动

# ndbd

启动完成之后回到mgm节点看状态
在这里插入图片描述
完成

配置SQL节点

/etc/my.cnf 配置文件

#
# Configuration file for MysqlClusterConfig
# Generated by mcc
#
[mysqld]
log-error=mysqld.54.err
datadir="/root/MySQL_Cluster/54/data"
tmpdir="/root/MySQL_Cluster/54/tmp"
basedir="/usr/local/bin/"
port=3306
ndbcluster=on
ndb-nodeid=54
ndb-connectstring=192.168.84.132:1186,
socket="/root/MySQL_Cluster/54/mysql.socket"
ndb-wait-setup=120
ndb-batch-size=32768
ndb-blob-read-batch-bytes=65536
ndb-blob-write-batch-bytes=65536
ndb-deferred-constraints=0
ndb-log-apply-status=0
ndb-log-empty-epochs=0
ndb-log-empty-update=0
ndb-log-exclusive-reads=0

将安装包里的 errmsg.sys 文件放到指定目录:
在这里插入图片描述
在这里插入图片描述
为了方便测试我就以免验证方式启动SQL节点

[root@node1 54]# mysqld --initialize
[root@node1 54]# mysqld_safe --skip-grant-tables

回到mgm节点查看节点状态:
在这里插入图片描述
在这里插入图片描述
所有节点状态正常。

测试

建的表engine需要指定为: ndb 不然无法发挥集群的功效,表里要建主键,没有的话系统会自建一个隐含的主键。
表引擎:
engine=ndbcluster;

// 任意sql节点
# mysql -h 127.0.0.1
# create database mcexample;
建一张表,插入几条数据;
create table if not exists mcexample.mctb1
(
	name varchar(10) not null
		primary key
)
engine=ndbcluster;
到另一个sql节点查看结果;

在这里插入图片描述
成功。

集群关闭

Mysql Cluster 关闭命令

# ndb_mgm -e shutdown

SQL 节点关闭命令

# mysqladmin -uroot -p shutdown
发布了48 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wangxudongx/article/details/89740176