当前位置: 移动技术网 > IT编程>数据库>Mysql > 搭建mysql NDB集群

搭建mysql NDB集群

2020年03月12日  | 移动技术网IT编程  | 我要评论

ndb群集安装

介绍

ndbcluster (也称为ndb)是一种内存存储引擎,提供高可用性和数据持久性功能。

ndbcluster存储引擎可以与一系列故障切换和负载平衡选项进行配置,但最简单的是开始在集群级别的存储引擎。ndb cluster的ndb存储引擎包含一整套数据,仅依赖于群集本身内的其他数据。

ndb群集 的“ 群集 ”部分的配置独立于mysql服务器。在ndb群集中,群集的每个部分都被视为一个 节点

共有三种类型的群集节点,并且在最小的ndb群集配置中,将至少有三个节点,这些类型之一:

  • 管理节点:这种类型的节点的作用是管理ndb群集中的其他节点,执行诸如提供配置数据,启动和停止节点以及运行备份之类的功能。由于此节点类型管理其他节点的配置,因此应首先启动此类型的节点,然后再启动任何其他节点。使用命令ndb_mgmd启动一个mgm节点 

  • 数据节点:这种类型的节点存储集群数据。

    ndb群集表通常完全存储在内存中,而不是磁盘上(这就是为什么我们将ndb群集称为 内存数据库)。但是,某些ndb群集数据可以存储在磁盘上。

  • sql节点:这是访问集群数据的节点。对于ndb群集,sql节点是使用ndbcluster存储引擎的传统mysql服务器 

    sql节点实际上只是api节点的一种特殊类型 ,它指定访问ndb群集数据的任何应用程序。api节点的另一个示例是用于还原集群备份的 ndb_restore实用程序。可以使用ndb api编写此类应用程序。

1、资源规划

节点

ip地址

硬件资源

系统

 

 

管理节点(mgmd

192.168.137.128

1cpu1g内存

centos7

 

 

管理节点(mgmd

192.168.137.129

1cpu1g内存

centos7

 

 

数据节点“ a”ndbd

sql节点(mysqld

192.168.137.130

1cpu3g内存

(数据节点吃内存)

centos7

 

 

数据节点“ b”ndbd

sql节点(mysqld

192.168.137.131

1cpu3g内存

centos7

 

 

 

2、下载安装文件(192.168.137.130192.168.137.131)

官网地址:

wget https://cdn.mysql.com//downloads/mysql-cluster-8.0/mysql-cluster-8.0.19-linux-glibc2.12-x86_64.tar.gz

 

3.2sql节点

将位置更改为包含下载文件的目录,解压缩归档文件,并创建一个名为mysqlmysql 目录的符号链接 

useradd mysql

tar -xf mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz

mv mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql

 

3.3将位置更改为mysql目录,并使用mysqld 设置系统数据库 --initialize,如下所示:

#rm -rf /data/apps/mysql-8.0/

mkdir  -p  /data/apps/mysql-8.0/logs  && chown -r mysql.mysql  /data/apps/mysql-8.0

chown -r mysql.mysql /usr/local/mysql

cat > /usr/local/mysql/my.cnf <<eoe

[mysqld]

basedir=/usr/local/mysql

datadir=/data/apps/mysql-8.0/data

socket=/tmp/mysql.sock

user=mysql

symbolic-links=0

lower_case_table_names=1

max_connections=2000

wait_timeout=120

interactive_timeout=120

key_buffer_size=128m

tmp_table_size=16m

read_buffer_size=4m

read_rnd_buffer_size=16m

sort_buffer_size=32m

innodb_buffer_pool_size=1024m

ndbcluster

 

[mysqld_safe]

log-error=/data/apps/mysql-8.0/logs/mysqld.log

pid-file=/data/apps/mysql-8.0/mysqld.pid

user=mysql

 

[mysql_cluster]

ndb-connectstring=192.168.137.128,192.168.137.129 

eoe

mv /etc/my.cnf /etc/my.cnf_`date +%f-%s`

ln -s  /usr/local/mysql/my.cnf  /etc/my.cnf

 

 

 3.4初始化数据库

/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/data/apps/mysql-8.0/data  --initialize --user=mysql 

 

 

 

记住密码一会儿用

 

 

3.4 mysql启动脚本复制到适当的目录,使其可执行,并将其设置为在操作系统启动时启动:

cp support-files/mysql.server  /etc/rc.d/init.d/

chmod +x /etc/rc.d/init.d/mysql.server

chkconfig --add mysql.server

 

4.1数据节点,拷贝数据节点启动文件,如数据节点和sql节点在同一台,此步忽略

scp 192.168.137.130:/usr/local/mysql/bin/{ndbd,ndbmtd}  /usr/local/bin/.

cd /usr/local/bin

chmod +x ndb*

mkdir -p /data/apps/mysql-8.0

在每个数据节点主机上应重复上述步骤。

 

5.1管理节点。  137.128137.129

scp 192.168.137.130:/usr/local/mysql/bin/ndb_mgm*  /usr/local/bin/.
cd /usr/local/bin
chmod +x ndb_mgm*
mkdir -p /usr/local/mysql/mysql-cluster

 

5.2配置管理节点。

#配置文件详解

#

 

cat >  /usr/local/mysql/config.ini <<eoe
[ndbd default]
# options affecting ndbd processes on all data nodes:
noofreplicas=2    # number of replicas
datamemory=98m    # how much memory to allocate for data storage

[ndb_mgmd]
nodeid=1
# management process options:
hostname=192.168.137.128          # hostname or ip address of mgm node
datadir=/usr/local/mysql/mysql-cluster  # directory for mgm node log files

[ndb_mgmd]
nodeid=2
# management process options:
hostname=192.168.137.129          # hostname or ip address of mgm node
datadir=/usr/local/mysql/mysql-cluster  # directory for mgm node log files

[ndbd]
# options for data node "a":
                               # (one [ndbd] section per data node)
hostname=192.168.137.130         # hostname or ip address
nodeid=3                        # node id for this data node
datadir=/data/apps/mysql-8.0   # directory for this data node's data files

[ndbd]
# options for data node "b":
hostname=192.168.137.131          # hostname or ip address
nodeid=4                        # node id for this data node
datadir=/data/apps/mysql-8.0   # directory for this data node's data files

[mysqld]
nodeid=5
# sql node options:
hostname=192.168.137.130      # hostname or ip address
                                # (additional mysqld connections can be
                                # specified for this node for various
[mysqld] # sql node options: nodeid=6 hostname=192.168.137.131 # purposes such as running ndb_restore) eoe

 

6ndb群集的初始启动

6.1管理主机

/usr/local/mysql/bin/ndb_mgmd  -f /usr/local/mysql/config.ini  --initial (初始化才加)

 

 

 

6.2在每个数据节点主机上,运行以下命令以启动 ndbd进程:

ndbd --initial  (初始化才加)

如报错,执行下列命令

 

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1

ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

再次启动成功:

 

6.3 sql节点启动数据库:

/usr/local/mysql/bin/mysqld &

 

如果一切顺利,并且集群已正确设置,则集群现在应该可以运行了。您可以通过调用ndb_mgm管理节点客户端来对此进行测试。输出看起来应该像这里显示的一样,尽管您可能会看到输出有些细微的差异,具体取决于所使用的mysql版本:

管理节点

 

 

 

 

sql节点在这里被称为 [mysqld(api)],这反映了mysqld进程充当ndb群集api节点的事实 。

7、安全关闭和重新启动ndb群集

7.1要关闭群集,请在托管管理节点的计算机上的外壳程序中输入以下命令:

ndb_mgm -e shutdown   -e此处 的选项用于将命令从外壳传递给ndb_mgm客户端。

7.2 再次启动,管理节点执行

ndb_mgmd   -f /usr/local/mysql/config.ini  

7.3 在每个数据节点执行

ndbd

7.4 使用ndb_mgm客户端来验证两个数据节点均已成功启动。

7.5 在sql主机上:

/usr/local/mysql/bin/mysqld &

如果其中一个数据节点挂掉,必须让其中一个节点完全恢复,集群才可以继续使用

 

 8、 其他注意

创建表时必须设定主键和加上engine=ndbcluster

create table s_position

(

id int not null auto_increment,

name varchar(20) not null default '经理', #设定默认值

description varchar(100),

primary key pk_positon (id) #设定主键

) engine=ndbcluster;

 

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网