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

搭建mysql NDB集群

程序员文章站 2022-06-17 21:58:32
NDB群集安装 介绍 https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-basics.html NDBCLUSTER (也称为NDB)是一种内存存储引擎,提供高可用性和数据持久性功能。 的NDBCLUSTER存储引擎可以与一系列故障切换和负载 ......

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 

 

 搭建mysql NDB集群

 

记住密码一会儿用

 

 

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 (初始化才加)

搭建mysql NDB集群

 

 

 

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

ndbd --initial  (初始化才加)

如报错,执行下列命令

 搭建mysql NDB集群

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

再次启动成功:

 搭建mysql NDB集群

6.3 sql节点启动数据库:

/usr/local/mysql/bin/mysqld &

 

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

管理节点

搭建mysql NDB集群

 

 

 

 

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;