天天看点

MySQL Cluster集群安装及使用

文件

大小

md5

mysqlcluster-7.3.2-linux-x32.tar.gz

431.0mb

03093541b6416fc93935750d614d875b

mysqlcluster-7.3.2-linux-x64.tar.gz

441.8mb

330c71a87fbf8f0468ec9c5e0ad6e794

 官方下载地址:http://dev.mysql.com/downloads/cluster/

mysqlcluster-7.3.2-windows-x32.msi

100.2mb

9d25735d7e8af1a2e805f9a1fecc3a1f

mysqlcluster-7.3.2-windows-x64.msi

95.5mb

6fe30e2045f074f471761cb17f0c3d1c

“ndb” 是一种“内存中”的存储引擎,也是事务型存储引擎,具备acid属性。

管理(mgm)节点:负责管理mysql cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。mgm节点是用命令“ndb_mgmd”启动的。

数据节点:用于保存 cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。数据节点是用命令“ndbd”启动的。

sql节点:用来访问 cluster数据的节点。也就是mysql服务,可以使用service mysqld start启动。

管理服务器(mgm节点)负责管理 cluster配置文件和 cluster日志。 cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 cluster日志。

MySQL Cluster集群安装及使用

集群配置概述:

安装版本:mysql cluster 7.3.2

操作系统 :centos6.3(x64)

软件名称 :mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (通用版)

管理节点ip:192.168.0.202

数据节点-sql节点ip:192.168.0.203

数据节点-sql节点ip:192.168.0.204

安装依赖包:yum install -y glibc perl libaio-devel

x32位系统要安装兼容库组:yum groupinstall “compatibility libraries”

一、管理节点安装配置

1、安装mysql-cluster

1

2

3

4

5

6

7

8

<code>groupadd mysql</code>

<code>useradd</code> <code>-g mysql -s </code><code>/sbin/nologin</code> <code>mysql</code>

<code>tar</code> <code>-zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.</code><code>tar</code><code>.gz</code>

<code>mv</code> <code>mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 </code><code>/usr/local/mysql-cluster</code>

<code>chown</code> <code>-r root.mysql </code><code>/usr/local/mysql/</code>

<code>chown</code> <code>-r mysql.mysql </code><code>/usr/local/mysql/data/</code>

<code>/usr/local/mysql/scripts/mysql_install_db</code> <code>--basedir=</code><code>/usr/local/mysql</code> <code>--datadir=</code><code>/usr/local/mysql/data</code> <code>--user=mysql &amp;  </code><code>#初始化数据库</code>

<code>cp</code> <code>-rf </code><code>/usr/local/mysql/bin/ndb_mgm</code><code>* </code><code>/usr/local/bin/</code> <code>#复制ndb节点管理命令到本地,方便使用</code>

2、修改mysql主配置文件

9

10

11

12

<code>vi</code> <code>/etc/my</code><code>.cnf</code>

<code>[mysqld]</code>

<code> </code><code>user = mysql</code>

<code> </code><code>socket = </code><code>/tmp/mysql</code><code>.sock</code>

<code> </code><code>basedir = </code><code>/usr/local/mysql</code> <code>#安装目录</code>

<code> </code><code>datadir = </code><code>/usr/local/mysql/data</code> <code>#数据库存放目录</code>

<code> </code><code>character-</code><code>set</code><code>-server=utf8</code>

<code> </code><code>ndbcluster </code><code>#运行ndb存储引擎</code>

<code> </code><code>ndb-connectstring=192.168.0.202</code>

<code> </code><code>lower_case_table_names=1 </code><code>#表名是否区分大小写1为不区分,不然linux下表名是区分大小写的</code>

<code>[mysql_cluster]</code>

<code>ndb-connectstring=192.168.0.202 </code><code>#mysql cluster管理节点ip</code>

3、创建mysql集群配置文件

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code>mkdir</code> <code>/var/lib/mysql-cluster</code>

<code>vi</code> <code>/var/lib/mysql-cluster/config</code><code>.ini</code>

<code>[ndbd default]</code>

<code>noofreplicas=2 </code><code>#定义在cluster环境中相同数据的份数,最大为4</code>

<code>datamemory=256m </code><code>#分配的数据内存大小,根据本机服务器内存适量来分配</code>

<code>indexmemory=256m </code><code>#设定用于存放索引(非主键)数据的内存段大小</code>

<code>#一个ndb节点能存放的数据量是会受到datamemory和indexmemory两个参数设置的约束,两者任何一个达到限制数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。</code>

<code>[ndb_mgmd]</code>

<code>nodeid=1</code>

<code>hostname</code><code>=192.168.0.202</code>

<code>datadir=</code><code>/var/lib/mysql-cluster/</code>

<code>[ndbd]</code>

<code>nodeid=2</code>

<code>hostname</code><code>=192.168.0.203</code>

<code>datadir=</code><code>/usr/local/mysql/data</code>

<code>nodeid=3</code>

<code>hostname</code><code>=192.168.0.204</code>

<code>nodeid=4</code>

<code>nodeid=5</code>

<code>保存退出!</code>

<code>chown</code> <code>mysql.mysql </code><code>/var/lib/mysql-cluster/config</code><code>.ini</code>

二、两台数据节点和sql节点配置相同

<code>mv</code> <code>mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 </code><code>/usr/local/mysql</code>

<code>chown</code> <code>-r root.mysql </code><code>/usr/local/mysql</code>

<code>chown</code> <code>-r mysql.mysql </code><code>/usr/local/mysql/data</code>

<code>/usr/local/mysql/scripts/mysql_install_db</code> <code>--basedir=</code><code>/usr/local/mysql</code> <code>--datadir=</code><code>/usr/local/mysql/data</code> <code>--user=mysql &amp; </code><code>#初始化数据库</code>

<code>cp</code> <code>/usr/local/mysql/support-files/mysql</code><code>.server </code><code>/etc/init</code><code>.d</code><code>/mysqld</code>

<code>cp</code> <code>/usr/local/mysql/support-files/medium</code><code>.cnf </code><code>/etc/my</code><code>.cnf</code>

<code>chmod</code> <code>+x</code><code>/etc/init</code><code>.d</code><code>/mysqld</code>

2、修改mysql配置文件

<code>user=mysql</code>

<code>character_set_server=utf8</code>

<code>ndbcluster</code>

<code>ndb-connectstring=192.168.0.202</code>

<code>default-storage-engine=ndbcluster </code><code>#设置默认是ndb存储引擎</code>

<code>basedir=</code><code>/usr/local/mysql</code>

<code>ndb-connectstring=192.168.0.202 </code><code>#mysql cluster 管理节点ip</code>

三、测试(先关闭三台服务器的防火墙(iptables)与 selinux)

1、启动管理节点

<code>ndb_mgmd -f </code><code>/var/lib/mysql-cluster/config</code><code>.ini --initial</code>

<code>netstat</code> <code>-tuplna | </code><code>grep</code> <code>1186 </code><code>#默认连接端口1186,启动成功</code>

<code>tcp 0 0 0.0.0.0:1186 0.0.0.0:* listen 1369</code><code>/ndb_mgmd</code>

#--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时。

如果启动出现报错:把config.ini里设置的nodeid都给删除即可!

MySQL Cluster集群安装及使用

2、启动两台数据节点和sql节点

数据节点:/usr/local/mysql/bin/ndbd --initial

sql节点:bin/mysqld_safe --user=mysql &amp; 或 service mysqld start

3、查看集群状态

ndb_mgm -e show #显示管理节点和数据节点则配置成功

4、创建一个数据库验证是否同步

<code>mysql -u root -p</code>

<code>mysql&gt;create database </code><code>test</code><code>;</code>

<code>mysql&gt;use </code><code>test</code><code>;</code>

<code>mysql&gt;create table abc (</code><code>id</code> <code>int) engine=ndbcluster;</code><code>#指定数据库表的引擎为ndb,否则同步失败</code>

<code>mysql&gt;insert into abc ()values (1);</code>

<code>mysql&gt;</code><code>select</code> <code>* from abc;</code>

#此时看两个数据是否数据一致,如果一致说明集群已经成功!

注意事项:

1.在建表的时候一定要用engine=ndb或engine=ndbcluster指定使用ndb集群存储引擎,或用alter table选项更改表的存储引擎。

2.ndb表必须有一个主键,因此创建表的时候必须定义主键,否则ndb存储引擎将自动生成隐含的主键。

3.sql节点的用户权限表仍然采用myisam存储引擎保存的,所以在一个sql节点创建的mysql用户只能访问这个节点,如果要用同样的用户访问别的sql节点,需要在对应的sql节点追加用户。

四、管理和维护命令

关闭mysql集群:ndb_mgm -e shutdown

重启mysql集群:ndb_mgmd -f /var/lib/mysql-cluster/config.ini

重启数据节点:/usr/local/mysql/bin/ndbd

启动sql节点:/usr/local/mysql/bin/mysqld_safe --user=mysql &amp; 或 service mysqld restart

查看mysql状态:ndb_mgm -e show

启动顺序:

管理节点 -&gt; 数据节点 -&gt; sql节点

关闭顺序:

sql节点 -&gt; 数据节点 -&gt; 管理节点