暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mysql Cluster(NDB引擎)

原创 南风 2021-02-05
3018

前两天开发那边的负责人跑来征询我的意见,说想去掉ORACLE数据库。我说随便呀,对我来说用啥数据库都无所谓。
因为对系统宕机时间有要求,MYSQL这边的我给了基于NDB的集群方案,Postgresql则是greenplum的方案。想让开发自己摸摸,然后我再教他们开发。。

先发个NDB的文档。

实验环境: Centos6.5 minimal 64位系统
服务器IP:
10.90.9.156 管理节点
10.90.9.177 存储结点1
10.90.9.180 存储结点2
10.90.9.165 sql接入节点1
10.90.9.167 sql接入节点2

包版本:

MySQL Cluster:mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz

官网下载地址
https://dev.mysql.com/downloads/cluster/

MySQL Cluster集群搭建
一、卸载系统自带的mysql所有组件(所有机器,除了客户机)
yum -y remove mysql*
rpm -qa | grep mysql
rpm -e --nodeps xxxxx
rm -rf /var/lib/mysql/
rm -rf /etc/my.cnf
rm -rf /etc/init.d/mysqld
vim /etc/profile 删除与mysql相关内容
chkconfig --list | grep mysql
chkconfig --del mysqld
二、安装配置管理节点(MGM)
1、创建目录,上传二进制包到/usr/local/mysql目录解压
mkdir -p /usr/local/mysql
cd /usr/local/mysql
tar -zxvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.26-linux-glibc2.12-x86_64 mysql-cluster
2、创建管理节点日志目录、配置文件目录
mkdir -p /var/log/mysql-cluster
mkdir -p /etc/mysql-cluster
3、创建配置文件
vi /etc/mysql-cluster/config.ini

[ndbd default]
NoOfReplicas=2 #数据写入数量。2表示两份,2个数据节点
DataMemory=800M #配置数据存储可使用的内存
IndexMemory=180M #索引给100M

[ndb_mgmd]
nodeid=1
datadir=/var/log/mysql-cluster #管理结点的日志
HostName=10.90.9.156 #管理结点的IP地址。本机IP

data node options: #存储结点

[ndbd]
HostName=10.90.9.177
DataDir=/data/mysql #mysql数据存储路径
nodeid=2

[ndbd]
HostName=10.90.9.180
DataDir=/data/mysql #mysql数据存储路径
nodeid=3

SQL node options: #关于SQL结点

[mysqld]
HostName=10.90.9.165
nodeid=4

[mysqld]
HostName=10.90.9.167
nodeid=5

4、初始化管理节点
/usr/local/mysql/mysql-cluster/bin/ndb_mgmd -f /etc/mysql-cluster/config.ini

5、查看集群状态
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm> show

从图中可以看到,除了管理节点,别的数据节点和SQL节点还没有连接上,我们还没配置。

三、安装配置数据节点(NDB)
两台数据节点(10.90.9.177、10.90.9.180)一样的配置

1、创建目录,上传二进制包到/usr/local/mysql目录解压
mkdir -p /usr/local/mysql
cd /usr/local/mysql
tar -zxvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.26-linux-glibc2.12-x86_64 mysql-cluster
2、创建mysql运行用户
useradd -M -s /sbin/nologin mysql
3、创建mysql数据目录、配置文件目录并授权
mkdir -p /etc/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
4、创建数据节点配置文件
vi /etc/mysql/my.cnf

[mysqld]
datadir=/data/mysql #mysql数据存储路径
ndbcluster #启动ndb引擎
ndb-connectstring=10.90.9.156 #管理节点IP地址

[mysql_cluster]
ndb-connectstring=10.90.9.156 #管理节点IP地址
5、启动数据节点服务
/usr/local/mysql/mysql-cluster/bin/ndbd --initial
POINin.png

四、安装配置SQL节点
两台SQL节点(10.90.9.165、10.90.9.167)一样的配置

1、创建目录,上传二进制包到/usr/local/mysql目录解压
mkdir -p /usr/local/mysql
cd /usr/local/mysql
tar -zxvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.26-linux-glibc2.12-x86_64 mysql-cluster
2、创建mysql运行用户
useradd -M -s /sbin/nologin mysql
3、创建mysql数据目录、配置文件目录并授权
mkdir -p /etc/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
4、创建SQL节点配置文件
vi /etc/mysql/my.cnf

[mysqld]
ndbcluster #启动ndb引擎
ndb-connectstring=10.90.9.156 #管理节点IP地址

[mysql_cluster]
ndb-connectstring=10.90.9.156 #管理节点IP地址
5、配置mysql服务
cp /usr/local/mysql/mysql-cluster/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld

vi /etc/init.d/mysqld
POIBsU.png

6、初始化mysql数据库
/usr/local/mysql/mysql-cluster/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/mysql-cluster --datadir=/data/mysql/

vi /etc/init.d/mysqld
修改basedir和datadir参数

报错,缺少依赖,我们yum装一下

yum -y install perl
再重新初始化一下

又报错了,还是缺少依赖,再装呗

yum -y install numactl
再来重启初始化一次,正常了

还需要yum-y install autoconf

7、启动SQL节点(和正常启动mysql数据库一样)
service mysqld start

MySQL Cluster管理节点查看
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm> show

SQL节点设置mysql密码并授权客户端可以登录
SQL节点1:(密码123456)
/usr/local/mysql/mysql-cluster/bin/mysqladmin -u root password
/usr/local/mysql/mysql-cluster/bin/mysql -u root -p123456
mysql> grant all on . to [email protected]‘%‘ identified by ‘123456‘;
mysql> flush privileges;
SQL节点2:(密码123456)
/usr/local/mysql/mysql-cluster/bin/mysqladmin -u root password
/usr/local/mysql/mysql-cluster/bin/mysql -u root -p123456
mysql> grant all on . to [email protected]‘%‘ identified by ‘123456‘;
mysql> flush privileges;
MySQL Cluster测试
测试一:先用客户端登录任意一台SQL节点,然后创建库,插入数据,查看两台SQL节点是否会自动同步
客户端登录117SQL节点,创建数据:

mysql -u cluster -p123456 -h 10.90.9.165
mysql> create database BB;
mysql> use BB;
mysql> create table test2(id int)ENGINE=NDB;
mysql> insert into test2 values(33333);
客户端退出117SQL节点,登录118SQL节点查看数据是否同步:

mysql -u cluster -p123456 -h 10.90.9.167
mysql> select * from BB.test2;
POILWt.png

测试二:关闭117SQL节点,然后使用客户端登录118SQL节点,创建数据,创建完成数据之后,重新启动117SQL节点,查看117SQL节点是否能同步118SQL节点新创建的数据
关闭117SQL节点:

service mysqld stop
客户端登录118SQL节点创建数据:

mysql -u cluster -p123456 -h 10.90.9.167
mysql> create database db;
mysql> use db;
mysql> create table test(id int) engine=ndb;
mysql> insert into test values(1000);
重新启动117SQL节点:

service mysqld start
客户端登录117SQL节点查看在118SQL节点上创建的数据是否能同步过来:

mysql -u cluster -p123456 -h 10.90.9.165
mysql> show databases;

mysql> select * from db.test;
POopwQ.png

MySQL Cluster集群启动和关闭顺序
请严格按照次序启动和关闭集群

启动:

管理结点服务->数据结点服务->sql结点服务

管理节点

/usr/local/mysql/mysql-cluster/bin/ndb_mgmd -f /etc/mysql-cluster/config.ini

数据节点
/usr/local/mysql/mysql-cluster/bin/ndbd

SQL节点
service mysqld start

关闭:

关闭管理结点服务,关闭管理结点服务后,nbdb数据结点服务会自动关闭->手动把sql结点服务关了。

说明:

首次启动数据节点时,有带上参数–initial,这是初始化参数,在以后的启动过程中,则不能添加该参数,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论