Mysql-NDB-Cluster-7.5搭建数据库集群

Mysql-Cluster是一个集群工具,并不能实现负载均衡,这一点和oracle的rac是有所区别的。不过mysql-cluster可以实现多台数据库之间的同步,虽然主从复制也能实现数据同步,主主复制也能实现2台数据库之间的同时读写要求,但是对于访问量比较大的系统通过配置cluster+负载均衡的方式就比较合适了。

一般来说,一个Mysql Cluster 的环境结构主要如下:


今天来找了份文档测试安装一下mysql-cluster:

环境说明:

mysql版本:5.7.21

mysql-cluster版本:7.5.6 

整个框架应该包括:管理节点、数据节点以及mysql节点,分别的作用:

管理节点,mysql-cluster管理节点负责管理、配置、监控整个集群。

数据节点,使用内存存放数据,保存进数据节点的数据都会自动复制并存储到其他数据节点。

mysql节点,也叫数据库节点,和我们平时使用的mysql相同,作为数据库使用。被数据节点访问。

下面一段截自百度百科:

管理(MGM) 节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。
数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。
SQL节点:这是用来访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster 存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。

各节点IPv如下:

管理节点:172.17.61.131

数据节点以及mysql节点:172.17.61.132,172.17.61.133


1.安装前的准备:

下载mysql-cluster工具:

http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5/

我下载的是mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz

由于这些机器上之前都安装过Mysql,所以需要先stop掉mysql的服务,将相关mysql的数据文件以及原文件都删除干净,确保3306端口没有被占用,三台机器IP可以互通。


2.安装配置管理节点

将下载后的包上传至服务器/usr/local下

解压

# tar xvf mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz

将需要的文件取出

# cd mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64

# cp bin/ndb_mgm* /usr/local/bin

# cd /usr/local/bin

# chmod +x ndb_mgm*

新建配置文件并且初始化管理节点

# mkdir /var/lib/mysql-cluster

# ln -s /usr/local/mysql /home/mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64

# vi /var/lib/mysql-cluster/config.ini

[ndbd default]
NoOfReplicas=2
DataMemory=80M #此参数不能太大,否则会导致由于内存空间不足,节点会强制关闭
IndexMemory=18M

[ndb_mgmd]
HostName=172.17.61.131
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=172.17.61.132
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=172.17.61.133
DataDir=/var/lib/mysql-cluster

[mysqld]
[mysqld]

使用配置文件初始化管理节点

# /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

出现MySQL Cluster Management Server mysql-5.7.21 ndb-7.5.6

然后就能使用ndbd进去管理了(如果ndbd命令不行,就使用在/usr/local/bin目录下使用ndb_mgm命令)

# ndbd

ndb_mgm>show(使用show命令查看管理情况,当数据节点配置完毕之后,我们再用这个命令查看和管理)

到此为止管理节点配置完毕,接下去配置数据和sql节点


3.安装和配置数据和mysql节点

下面的操作需要在所有节点进行

新增用户组mysql和用户msyql

# groupadd mysql

# useradd -g mysql -s /bin/false mysql

新建文件夹并赋予权限

# mkdir /var/lib/mysql-cluster

# mkdir /u01/mysql

# chown root:mysql /var/lib/mysql-cluster

#chown mysql:mysql /u01/mysql

将下载后的包上传至服务器/usr/local下

解压

# tar xvf mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz

创建链接方便访问

# ln -s /usr/local/mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64 /usr/local/mysql

初始化数据库

/usr/loca/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/u01/mysql  

/usr/loca/mysql/bin/mysql_ssl_rsa_setup --datadir=/u01/mysql  

配置自动启动

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

修改etc/rc.d/init.d/mysql的datadir以及basedir

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

# chkconfig --add mysql

配置数据节点

# vi /etc/my.cnf

加上下面部分:

[mysqld]

ndbcluster

ndb-connectstring=172.17.61.131

[mysql_cluster]

ndb-connectstring=172.17.61.131

启动数据库:

service mysql start

初次登入需要修改密码,这个和普通安装mysql一样

启动ndbd

/etc/init.d/ndbd --initial

如果上述不行使用绝对路径的这个:# /usr/local/mysql/bin/ndbd --initial如果出现下述现象就成功了

2018-05-09 14:14:24 [ndbd] INFO     -- Angel connected to '172.17.61.131:1186'2018-05-09 14:14:24 [ndbd] INFO     -- Angel allocated nodeid: 2

4.最后当所有的节点配置完成,回到管理节点,使用上述说过的show查看,如下的类似显示,证明已经连接完成
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @172.17.61.132  (mysql-5.7.18 ndb-7.5.6, Nodegroup: 0, *)
id=3    @172.17.61.133  (mysql-5.7.18 ndb-7.5.6, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @172.17.61.131  (mysql-5.7.18 ndb-7.5.6)

[mysqld(API)]   2 node(s)
id=4    @172.17.61.132  (mysql-5.7.18 ndb-7.5.6)
id=5    @172.17.61.133  (mysql-5.7.18 ndb-7.5.6)

5.测试是否能够同步数据 :

创建表时必须使用ndbcluster引擎,否则无法同步数据

  • 表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或 用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
  • 另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB Cluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。

node1:

mysql> use l5m
Database changed
mysql> create table student(age int) engine=ndbcluster;
Query OK, 0 rows affected (0.51 sec)

mysql> insert into student values(11);
Query OK, 1 row affected (0.07 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

node2:

mysql>  select * from student;
+------+
| age  |
+------+
|   11 |
+------+
1 row in set (0.00 sec)

6.启动和关闭顺序

启动mysql集群。启动顺序为:管理节点→数据节点→SQL节点。

启动的命令上面都有,删去--initial即可

关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可

管理节点关闭命令:ndb_mgm -e shutdown

(执行完成之后管理节点会关闭,数据节点也会关闭,但SQL节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)


参考:

http://www.cnblogs.com/linkstar/p/6510713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值