1, 准备集群搭建环境
使用 6 台虚拟机来搭建 MySQL 分布式集群 , 相应的实验环境与对应的 MySQL 节点之间的对应关系如下图所示:
管理节点 (MGM): 这类节点的作用是管理 MySQLCluster 内的其他节点, 如提供配置数据, 并停止节点, 运行备份等. 由于这类节点负责管理其他节点的配置, 应该在启动其他节点之前启动这类节点. MGM 节点是用命令 "ndb_mgmd" 启动的;
数据节点 (NDB): 这类节点用于保存 Cluster 的数据, 数据节点的数目与副本的数目相关, 是片段的倍数. 例如, 对于两个副本, 每个副本有两个片段, 那么就有 4 个数据节点, 没有必要设定过多的副本, 在 NDB 中数据会尽量的保存在内存中. 数据节点使用命令 "ndb" 启动的;
SQL 节点: 这是用来访问 Cluster 数据的节点, 对于 MySQL Cluster, 客户端节点是使用 NDB Cluster 存储引擎的传统 MySQL 服务器. 通常, SQL 节点使用命令 "mysqld-ndbcluster" 启动的;
2, 准备安装包
在官网上下载 MySQL 的安装包: MySQL-cluster-gpl-7.4.11-Linux-glibc2.5-x86_64.tar.gz, 并进行解压.
3, 集群搭建流程
1] 将上述安装包解压出来的文件都移到 / usr/local/MySQL 下;
2] 运行 script 目录下的 MySQL-install-db.sh 脚本, 运行命令为./MySQL-install-db.sh --user=root--basedir =/usr/local/MySQL --datadir=/usr/local/MySQL; 注意其中用户为 root 的名称需要跟配置文件 my.cnf 中的相同;
在管理节点, 数据节点, SQL 节点上都执行上述安装命令, 从而完成对 MySQL 的安装;
4, 集群配置与启动
1] 在管理节点上需要完成对于集群整体的配置配置: 在 / var/lib/MySQL-cluster/config.INI 中实现如下的配置信息:
2] 在数据节点中需要在 my.cnf 中完成对于数据节点的相关配置信息, 如下:
需要指明配置的数据节点的根目录, 数据目录, socket 连接配置, 用户配置, 以及对应的管理节点的 ip 地址配置; 将配置完成的配置文件移动到 / etc/my.cnf, 完成;
3] 在 SQL 节点上完成对于 SQL 节点的配置信息, 同样的是在 my.cnf 中完成相应配置信息, 并将配置文件移动到 / etc/my.cnf 中, 相应的配置信息的设定如下所示:
完成以上配置后, 就可以启动集群中的各个节点了.
5, 集群启动
在启动 MySQL 集群的时候, 注意首先要启动管理节点, 并依次启动其他等若干个节点, 相应的启动步骤如下:
1] 在管理节点上, 切换到 / usr/local/MySQL/bin 目录下, 执行 ndb_mgmd -f /var/lib/MySQL-cluster/config.INI 命令, 完成管理节点的启动;
2] 在各个数据节点上, 切换到 / usr/local/MySQL/bin 目录下, 执行 ndbd --initial(第一次启动时, 否则执行 ndbd 即可), 完成对数据节点的启动;
3] 在各个 SQL 节点上, 同样切换到 / usr/local/MySQL/bin 目录下, 执行 mysqld_safe --user=root 完成启动;
4] 在管理节点上运行 ndb_mgm 命令, 进入数据库管理的客户端, 输入 show 命令, 查看与之相连接的各个节点的状态;
5] 在 SQL 节点上分别进入系统的安全状态, 并完成对 root 用户的密码修改, 运行以下指令, 进行密码修改:
A use MySQL, 切换到 MySQL 数据库;
B UPDATE user SET Password = PASSWORD('123456')WHERE user = 'root'; 从而实现对 root 密码的修改;
C flush privilege, 完成修改;
6] 修改使得任意主机都能连得上 MySQL, 进行如下修改, 同样安装第 5 步进入安全模式, 并完成相应的修改, 如下:
grantallon'*.*'to'root@'%'identifiedby'123456';
这样就可以使得任意一个主机都可以通过 root 用户来登录 MySQL 了;
6, 集群测试
在集群上的一个 SQL 节点上执行创建数据库, 并创建一张表, 并完成相应的数据插入, 如下:
- Acreatedatabasectest; // 创建数据库
- Bcreatetabletest(
- idintprimarykey; // 创建一张表
- );
- Cinsertintotest(id)values(1); // 完成数据插入
登录另外一个 SQL 节点, 并执行 SQL 查询操作, 看数据库中是否已经有数据, 如下:
select*fromctest;
如果有数据, 表示数据插入成功;
7, 关闭集群
1] 首先关闭管理节点和数据节点, 需要在管理节点上执行命令, 如下:./ndb_mgm -e shutdown;
2] 然后关闭 SQL 节点, 在 SQL 节点上执行命令 / usr/local/MySQL/support-fies/MySQL.server stop(其中 / usr/local/MySQL / 是 MySQL 的安装目录). 从而关闭 SQL 节点;
来源: http://www.jianshu.com/p/cf4da125aa43