ITPub博客

首页 > Linux操作系统 > Linux操作系统 > MySQL Cluster研究(1)

MySQL Cluster研究(1)

原创 Linux操作系统 作者:mikeliuy 时间:2013-10-22 13:38:18 0 删除 编辑
最近项目中要使用MySQL Cluster,所以开始学习研究的历程,并记录下来,以备察看。

整个集群基于CentOS Enterprise Linux 6.4 64位,使用的MySQL版本是MySQL-CLuster-7.2.13。

一、准备工作
1、定义机器
由于MySQL集群包括3种节点:管理节点、数据节点、SQL节点。
管理节点是负责管理整个集群中所有的节点,监控等。
数据节点就是一个使用NDB存储引擎的一些机器,负责MySQL数据的存储管理。
SQL节点是处理数据存储之外的其它功能,用户的请求,SQL的解析等,它是用户访问数据库的“桥梁”。

定义的机器信息如下:
192.168.36.100 集群管理节点
192.168.36.101 数据节点1
192.168.36.102 数据节点2
192.168.36.103 SQL节点1
192.168.36.104 SQL节点2

准备好机器,安装OS,打补丁,配置IP等不祥述了。
因为实验,所以将iptables服务停掉,如果是生产环境,要根据要求对iptables进行配置。并且检查机器之间的互通。
最后,上传MySQL的RPM包。

MySQL-Cluster-client-gpl-7.2.13-1.el6.x86_64.rpm
MySQL-Cluster-server-gpl-7.2.13-1.el6.x86_64.rpm

二、安装

1、管理节点

管理节点需要ndb_mgmndb_mgmd,这两个程序在server包中,所以管理节点只需安装serverRPM包。

[root@mysql-mgm ~]# rpm -Uhv --force MySQL-Cluster-server-gpl-7.2.13-1.el6.x86_64.rpm

--force是强制安装,如果不加不能安装,因为系统有些MySQL的文件,造成冲突。

2、数据节点

由于需要ndbd程序,它也在server包中,所以也只需安装serverRPM包。

[root@mysql-d2 ~]# rpm -Uhv --force MySQL-Cluster-server-gpl-7.2.13-1.el6.x86_64.rpm

3SQL节点

由于它负责访问,所以serverclient都要安装

[root@mysql-s2 ~]# rpm -Uhv --force MySQL-Cluster-server-gpl-7.2.13-1.el6.x86_64.rpm
[root@mysql-s2 ~]# rpm -Uhv --force MySQL-Cluster-client-gpl-7.2.13-1.el6.x86_64.rpm

 

三、配置

1、管理节点配置过程

[root@mysql-mgm ~]# mkdir /var/lib/mysql-cluster
[root@mysql-mgm ~]# cd /usr/share/mysql/
[root@mysql-mgm ~]# cp config.small.ini /var/lib/mysql-cluster/config.ini
[root@mysql-mgm ~]# cd /var/lib/mysql-cluster
[root@mysql-mgm ~]# vi config.ini

config.ini文件的内容参考如下:

[NDBD DEFAULT]
NoOfReplicas: 2                    #副本数量
DataMemory: 100M                   #数据内存大小
IndexMemory: 80M                   #索引内存大小
[MGM DEFAULT]
PortNumber: 1186                   #默认监听端口
[NDB_MGMD]
HostName: 192.168.36.100        #管理节点IP
DataDir: /var/lib/mysql-cluster
ArbitrationRank: 1
[NDBD]
HostName: 192.168.36.101        #数据节点IP
DataDir: /usr/share/mysql/data
[NDBD]
HostName: 192.168.36.102
DataDir: /usr/share/mysql/data  #注意在数据节点上创建此目录
[API]
HostName: 192.168.36.103        #SQL节点IP
ArbitrationRank: 2
[API]                              #这些是为SQL节点预留,
                                   #可以动态加入SQL节点

 

2、数据节点配置

[root@mysql-d2 ~]# cd /usr/share/mysql/
[root@mysql-d2 ~]# mv /etc/my.cnf /etc/my.cnf.bak
[root@mysql-d2 ~]# cp my-small.cnf /etc/my.cnf
[root@mysql-d2 ~]# vi /etc/my.cnf

文件内容参考如下:(重点是红色部分)

[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring = 192.168.36.100

 

3SQL节点部署

官方文档说直接启动系统配置好的mysql即可,但是启动后,管理节点监控不到,所以按照如下配置,可以连入集群。

首先/etc/my.cnf文件,注意红色字体部分。

[mysqld]
ndbcluster
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysql_cluster]
ndb-connectstring = 192.168.36.100
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

 

然后,按照下面步骤执行。

[root@mysql-s2 ~]# mkdir /var/run/mysqld
[root@mysql-s2 ~]# chown -R mysql:mysql /var/run/mysqld/

 

四、启动顺序

启动是有顺序的:管理节点》》数据节点》》SQL节点。

 

1、管理节点

自己写个脚本,方便启动,执行这个脚本即可。

[root@mysql-mgm ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

 

2、数据节点

[root@mysql-d2 ~]# ndbd --initial

第一次节点启动使用该参数,还有就是备份、恢复后的启动使用这个参数。

一般启动如下:

[root@mysql-d2 ~]# ndbd

 

3SQL节点

[root@mysql-s2 ~]# /usr/bin/mysqld_safe
131016 19:32:35 mysqld_safe Logging to '/var/log/mysqld.log'.
131016 19:32:35 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

 

4、查看部署结果

[root@mysql-mgm ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.36.101  (mysql-5.5.31 ndb-7.2.13, Nodegroup: 0, Master)
id=3    @192.168.36.102  (mysql-5.5.31 ndb-7.2.13, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.36.100  (mysql-5.5.31 ndb-7.2.13)
[mysqld(API)]   6 node(s)
id=4    @192.168.36.103  (mysql-5.5.31 ndb-7.2.13)·
id=5    @192.168.36.104  (mysql-5.5.31 ndb-7.2.13)


五、MySQL部署可用性测试

1、在SQL节点1上执行。

使用客户端进行mysql

[root@mysql-s1 ~]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.31-ndb-7.2.13-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

查看数据库。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ctest              |
| mysql              |
| ndbinfo            |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)

打开数据库

mysql> use ctest
Database changed

创建测试表,注意红色字必须加,否则无法使用NDB存储。

mysql> create table test(count int) engine=NDBCLUSTER;
Query OK, 0 rows affected (0.53 sec)

插入测试数据

mysql> insert into test values(10);
Query OK, 1 row affected (0.22 sec)

mysql> select * from test;
+-------+
| count |
+-------+
|    10 |
+-------+
1 row in set (0.95 sec)

 

2、在SQL节点2执行。

进入mysql

[root@mysql-s2 ~]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.31-ndb-7.2.13-cluster-gpl MySQL Cluster Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

查看数据库信息

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ndbinfo            |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.06 sec)

SQL节点2第一次访问集群,数据库列表中没有要访问的数据库,需要执行下面命令。

mysql> create database ctest;
Query OK, 1 row affected (0.12 sec)

mysql> use ctest
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
打开数据库时,与数据节点同步。
Database changed

查询,可以看到在SQL节点1上的操作结果。说明数据保存在数据节点中了。

mysql> select * from test;
+-------+
| count |
+-------+
|    10 |
+-------+
1 row in set (0.02 sec)

在该SQL节点做插入操作。

mysql> insert into test values (1);
Query OK, 1 row affected (0.04 sec)

mysql> select * from test;
+-------+
| count |
+-------+
|    10 |
|     1 |
+-------+
2 rows in set (0.00 sec)

 

3、在SQL节点1上,查看在SQL节点2的操作数据。

mysql> select * from test;
+-------+
| count |
+-------+
|     1 |
|    10 |
+-------+
2 rows in set (0.25 sec)


到此MySQL CLuster部署成功。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26812308/viewspace-774792/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-18

  • 博文量
    72
  • 访问量
    381592