mysql cluster 配置大全_MySQLCluster搭建及配置

(点击上方蓝字,可快速关注我们)

来源:bestvivi

链接:https://segmentfault.com/a/1190000003715950

MySQL Cluster介绍

MySQL Cluster是一个高性能、可扩展、集群化数据库产品。MySQL Cluster是一个基于NDB Cluster存储引擎的完整分布式数据库系统,采用无共享的数据存储技术,实时同步且支持快速故障切换、事务。NDB是一种in-memory的存储引擎,它具有可用性高和数据一致性好的特点。

MySQL Cluster可由多台服务器组成的、同时对外提供数据管理服务的分布式集群系统。通过合理的配置,可以将服务请求在多台物理机上分发实现负载均衡 ;同时内部实现了冗余机制,在部分服务器宕机的情况下,整个集群对外提供的服务不受影响,从而能达到99.999%以上的高可用性。

MySQL Cluster分为三类节点:

数据节点(Data Nodes):用于存储集群的数据。实现底层数据存储的功能,保存Cluster 的数据。每一个NDB 节点保存完整数据的一部分(或者一份完整的数据,视节点数目和配置而定),在MySQL Cluster 里面叫做一个fragment。而每一个fragment,正常情况来讲都会在其他的主机上面有一份(或者多分)完全相同的镜像存在。这些都是通过配置来完成的,所以只要配置得当,MySQL Cluster 在存储层不会出现单点的问题。数据节点是用命令ndbd启动的。

SQL节点(SQL Nodes):向外提供一个标准的SQL语言编程接口。SQL节点负责向数据节点传送访问请求,具体集群过程以及数据库底层均对外透明。

SQL节点提供用户SQL指令请求,解析、连接管理,query优化和响、cache管理等、数据merge、sort,裁剪等功能,当SQL节点启动时,将向管理节点同步架构信息,用以数据查询路由。SQL节点作为查询入口,需要消耗大量cpu及内存资源,可使用分布式管理节点,并在SQL节点外封装一层请求分发及HA控制机制可解决单点及性能问题,其提供了线性扩展功能。SQL节点是使用命令mysqld -ndbcluster启动的,或将ndbcluster添加到“my.cnf”后使用“mysqld”启动。

管理节点(NDB Management Server):负责整个Cluster 集群中各个节点的管理工作,包括集群的配置,启动关闭各节点,以及实施数据的备份恢复等。管理节点会获取整个Cluster 环境中各节点的状态和错误信息,并且将各Cluster 集群中各个节点的信息反馈给整个集群中其他的所有节点。通常只需配置一个管理节点;然而为了排除单点故障需要,有可能的话,尽量增加管理节点的数量。MGM节点是用命令ndb_mgm启动的。

MySQL Cluster搭建

环境准备

数据节点:192.168.1.5 192.168.1.6

SQL节点:192.168.1.2 192.168.1.11

管理节点:192.168.1.10

Mysql集群软件:mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 下载地址

管理节点配置

将MySQL集群软件拷贝到管理节点的/usr/local目录下并解压为mysql,MySQLCluster管理节点默认是要安装在/usr/local下的,否则启动会报错

添加用户及用户组

# groupadd mysql

# useradd -g mysql mysql

更改所属用户和组

# chown -R mysql:mysql mysql

拷贝配置文件

# cp mysql-cluster/support-files/ndb-config-2-node.ini /etc/ndb-config.ini

修改配置文件,管理节点的配置文件非常重要,会影响整个集群

# vim /etc/ndb-config.ini

[ndbd default]

NoOfReplicas= 2 #定义在Cluster环境中复制份数

DataMemory= 80M #分配的数据内存大小,根据本机服务器内存适量来分配,实际运用中需要分配很大

IndexMemory= 24M #设定用于存放索引(非主键)数据的内存段大小

#一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,两者任何一个达到**数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。

DataDir= /var/lib/mysql-cluster #用于存放集群日志信息

DataMeomory=1400M

IndexMemory=600M

LockPagesInMainMemory=1 # 会有问题

MaxNoOfConcurrentOperations=500000

TimeBetweenLocalCheckpoints=20

TimeBetweenGlobalCheckpoints=1000

TimeBetweenEpochs=100

TimeBetweenWatchdogCheckInitial=60000

TransactionInactiveTimeout =50000

MaxNoOfExecutionThreads=8

BatchSizePerLocalScan=512

MaxNoOfOrderedIndexes=512

MaxNoOfConcurrentOperations= 10000

[ndb_mgmd]

Id=1

Hostname=192.168.1.10 # Hostname or IP address

#确定该目录存在,并修改所属用户为mysql

DataDir= /var/lib/mysql-cluster # Directory for MGM node logfiles

[ndbd]

Id= 2

HostName= 192.168.1.5 # Hostname or IP address

datadir=/usr/local/mysql/data # Directory for this data node's datafiles,数据节点存放数据的目录

[ndbd]

Id= 3

HostName= 192.168.1.6

datadir=/usr/local/mysql/data

[mysqld]

Id= 4

HostName= 192.168.1.2

#可以预留一些节点

# choose an unused port number

# in this configuration 63132, 63133, and 63134

# will be used

[tcp default]

PortNumber= 63132

配置完后启动管理节点

# ./ndb_mgmd --initial -f /etc/ndb-config.ini

MySQL Cluster Management Server mysql-5.5.27 ndb-7.2.8

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 31: [MGM] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 35: [DB] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 39: [DB] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 43: [API] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 50: [tcp] PortNumber is deprecated

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 31: [MGM] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 35: [DB] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 39: [DB] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 43: [API] Id is deprecated, use NodeId instead

2014-08-29 11:22:04 [MgmtSrvr] WARNING -- at line 50: [tcp] PortNumber is deprecated

其中--initial指定初始化加载,每次修改管理节点的配置重启都需要加上,否则不会生效;-f指定管理节点的参数文件

确定ndb_mgm进程及端口号

# netstat -langput | grep mgm

tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 3427/ndb_mgmd

tcp 0 0 127.0.0.1:45251 127.0.0.1:1186 ESTABLISHED 3427/ndb_mgmd

tcp 0 0 127.0.0.1:1186 127.0.0.1:45251 ESTABLISHED 3427/ndb_mgmd

其中1186是管理节点的服务端口

查看集群信息

# ./ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm

Tag标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值