欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

linux下构建MysqlCluster集群,NDB搜索引擎

程序员文章站 2022-05-27 22:09:43
搭建管理节点 Ndb搜索引擎对于服务器的内存要求比较高,因为所有数据节点的数据,以及索引,事务等等都需要加载进内存中。 下载 mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64.tar.gz 集群压缩包上传至服务器,解压,这里说明一下文件解压后会比较大,尽量 ......

搭建管理节点

ndb搜索引擎对于服务器的内存要求比较高,因为所有数据节点的数据,以及索引,事务等等都需要加载进内存中。

下载 mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64.tar.gz 集群压缩包上传至服务器,解压,这里说明一下文件解压后会比较大,尽量增大服务器的磁盘空间。

取出解压文件中的ndb_mgm文件拷贝到/usr/local/bin目录下 \cp -rf  mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64/bin/ndb_mgm*   /usr/local/bin

赋予ndb_mgm可执行权限

创建 /var/lib/mysql-cluster文件夹

创建 /usr/local/mysql文件夹

创建 config.ini管理节点配置文件

例如:

[ndbd default]
noofreplicas=2
datamemory=6g
indexmemory=1g
maxnoofconcurrenttransactions=10240
maxnoofconcurrentoperations=100000
maxnooforderedindexes=10000
nooffragmentlogfiles=128
timebetweenlocalcheckpoints=20
fragmentlogfilesize=256m
redobuffer=64m
transactiondeadlockdetectiontimeout=15000
[mysqld default]
[ndb_mgmd default]
[tcp default]

[ndb_mgmd]
nodeid=1
hostname=***.***.***.***
datadir=/var/lib/mysql-cluster

[ndb_mgmd]
nodeid=2
hostname=***.***.***.***
datadir=/var/lib/mysql-cluster

[ndbd]
nodeid=10
hostname=***.***.***.***
datadir=/var/opt/mitec/mysql/data/

[ndbd]
nodeid=11
hostname=***.***.***.***
datadir=/var/opt/mitec/mysql/data/

[ndbd]
nodeid=12
hostname=***.***.***.***
datadir=/var/opt/mitec/mysql/data/

[ndbd]
nodeid=13
hostname=***.***.***.***
datadir=/var/opt/mitec/mysql/data/

[mysqld]
nodeid=30
hostname=***.***.***.***

[mysqld]
nodeid=31
hostname=***.***.***.***

[mysqld]
nodeid=32
hostname=***.***.***.***

[mysqld]
nodeid=33
hostname=***.***.***.***

[mysqld]
[mysqld]

上面的配置是比较好的,对于中小型企业的业务量完全能吃的消百万级数据量完全够用,noofreplicas参数最大为4最小为2,这个参数代表数据节点的相互备份数。越大的话对于程序本身也是一种资源消耗。数据节点的数量必须能被noofreplicas参数整除,因为这个地方涉及到分区,有兴趣的小伙伴可以进一步了解。

config.ini文件配置完成后,将其拷贝到/var/lib/mysql-cluster文件夹下然后就可以进行管理节点的初始化了

首次初始化执行:ndb_mgmd -f  /var/lib/mysql-cluster/config.ini --initial 。下次启动管理节点就不需要加 --initial参数。这里说明以下如果是两个管理节点话:主管理节点执行前面的命令,备管理节点执行:ndb_mgmd -c '主管理节点ip' --ndb-nodeid=2 --configdir=/var/lib/mysql-cluster

mysqlcluster提供监控集群状态的客户端:在sshd客户端执行:ndb_mgm命令, 使用show命令查看集群状态,这里客户端有重启数据节点,管理节点等命令,例如:‘节点id’ restart / '节点id' stop

修改config.ini配置文件可以使用(主)管理节点 ndb_mgmd -f  /var/lib/mysql-cluster/config.ini --reload重新加载配置文件。

搭建sql节点

首先校验当前服务器是否有libaio-0.3.107-10.el6.x86_64.rpm,numactl-2.0.9-2.el6.x86_64.rpm包,没有的话yum安装一下,这两个包是支持mysql安装时用的。

创建mysql用户组,执行:groupadd mysql

创建mysql用户,执行:useradd -g mysql -s /bin/false mysql

创建安装目录:/var/opt/mitec/mysql。这个目录是可以自己指定的,这个目录的磁盘空间一定要大,最小15g,不然数据一多就宕机了。

赋予目录可执行权限:chown root:mysql :/var/opt/mitec/mysql

解压mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64.tar.gz集群压缩包,解压目录至:/usr/local

创建mysql配置文件:执行  vi /etc/my.cnf 命令

my.cnf 文件 例如:

[mysqld]
ndbcluster
basedir=/var/opt/mitec/mysql
datadir=/var/opt/mitec/mysql/data
ndb-connectstring=‘管理节点ip(多个管理节点以   ,分割)’
default-storage-engine=ndbcluster
query_cache_size=512m
key_buffer_size=384m
max_allowed_packet=128m
sort_buffer_size=6m
read_buffer_size=6m
sql_mode=no_engine_substitution,strict_trans_tables

[mysql_cluster]
ndb-connectstring=‘管理节点ip(多个管理节点以   ,分割)’

上述配置文件完成后开始初始化mysql服务

/var/opt/mitec/mysql/bin/mysqld --initialize ,这里时mysql5.7初始化,其他版本的自行查找资料,初始化完成后控制台会有产生一个随机密码,登录mysqli修改mysql密码配置远程登录就会用到这个密码。

赋予mysql用户权限 给mysql相关文件增加权限

chown -r root /var/opt/mitec/mysql

chown -r mysql /var/opt/mitec/mysql/data

chgrp -r mysql /var/opt/mitec/mysql

将mysql加入开机自起

cp -rf /var/opt/mitec/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql

#改变mysql启动文件权限
chmod +x /etc/rc.d/init.d/mysql

chkconfig --add mysql

ln -s /var/opt/mitec/mysql/bin/mysql /usr/bin

启动msyql服务即可

搭建数据节点

 这里我是将数据节点与mysql节点安装在了同一台服务器上

上述my.cnf配置文件中的

[mysql_cluster]
ndb-connectstring=‘管理节点ip(多个管理节点以   ,分割)’

是配置数据节点与管理节点之间的连接,也就是配置当前数据节点是否为集群的数据节点。

直接执行:/var/opt/mitec/mysql/bin/ndbd --initial 命令。数据节点初始化时需要将 --initial参数带上,初始化后在启动数据节点就不需要加上 --initial参数。

到这里整个集群就相当于搭建完成,登录管理节点客户端查看各各节点状态。

附录:

mysqlcluster集群也提供了数据备份数据恢复等功能,以及滚动添加数据节点,这个可以参考mysqlcluster官网进行操作。

管理节点的config.ini文件内部有很多的参数,参数很重要,参数配置的不正确会导致集群很不友好,会有很多错误产生。

我现在搭建的集群数据库表为内存表,也可以创建磁盘表。这个地方就需要根据需求而定。

 

 

集群节点的初始化顺序:管理节点初始化,数据节点初始化,sql节点初始化。

集群节点的关闭顺序:sql节点关闭,数据节点关闭,管理节点关闭。

 

如要转发请指明出处,谢谢!