官方下载地址http://www.mysql.com/downloads/cluster/#downloads进入下载页面,
在下拉选项中选择Red Hat&Oracle Enterporise Linux然后下载相应软件
分别下载:
MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.i386.rpm
MySQL-Cluster-gpl-clusterj-7.1.4b-1.rhel5.i386.rpm
MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.i386.rpm
MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.i386.rpm
MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.i386.rpm
MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.i386.rpm
MySQL-Cluster-gpl-extra-7.1.4b-1.rhel5.i386.rpm
下载需要使用邮箱注册MySQL.com的账户,也可以使用以下链接:
以上下载的软件中,属于集群软件的是:
MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.i386.rpm
MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.i386.rpm
1.1.1.2. 数据库软件
以上属于数据库服务器软件的是:
MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.i386.rpm
1.1.2. 环境设置 1.1.2.1. 关闭防火墙
Iptables是一个包含在绝大多数Linux发行版中的防火墙。在默认安装的RHEL中,防火墙是打开的,且随机启动,如果要关闭防火墙,可以使用以下命令:
Service iptables stop
或使用如下命令清空防火墙策略:
【命令】
Iptables –F
以上命令执行完毕之后效果只能保持到下次重启。重启后的配置就还原了,如果希望能够在重启之后还能够保持防火墙的关闭状态,可以使用以下命令:
Chkconfig –level 35 iptables off
1.1.2.2. 关闭SELinux
SELinux的全称是Security-EnhancedLinux,是由美国国家安全局NSA开发的访问控制体制。SELinux可以最大限度地保证Linux系统的安全。
在默认安装的Linux系统中,SELinux默认是开启的,配置文件是/etc/selinux/config,一般测试过程中使用“permissive”模式,这样仅会在违反SELinux规则时发出警告,然后修改规则,最后由用户觉得是否执行严格“enforcing”的策略,禁止违反规则策略的行为。规则决定SELinux的工作行为和方式,策略决定具体的安全细节如文件系统,文件一致性。在安装过程中,可以选择“激活”、“警告”或者“关闭”SELinux。默认设置为“激活”。
为了避免SELinux影响到群集功能,需要关闭SELinux系统的功能,具体操作方式如下:
1.1.2.3. 设置主机名和IP地址
按照拓扑图修改各主机的主机名和IP地址,具体对照如下:
节点名称 | 主机名 | IP | 掩码 |
管理节点 SQL节点 | Mgmt | 10.10.10.11 | 255.255.255.0 |
数据节点1 | Node1 | 10.10.10.22 | 255.255.255.0 |
数据节点2 | Node2 | 10.10.10.33 | 255.255.255.0 |
2. MySQL集群的实现 2.1. 安装阶段 2.1.1. 管理节点-MANAGEMENT NODE
在管理节点上只需要安装管理节点软件MySQL-Cluster-gpl-management-*.rpm即可,
依次执行:
Rpm –Uvh MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.i386.rpm
Rpm –Uvh MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.i386.rpm
2.1.2. SQL节点-SQLNODE
在管理节点上只需要安装管理节点软件MySQL-Cluster-gpl-server-*.rpm即可执行:,但是为了便于后期的调试和本地服务器管理,可以将client工具包一起装上
Rpm –Uvh MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.i386.rpm
Rpm –Uvh MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.i386.rpm
2.1.3. 数据节点-DATANODE
数据节点只需要安装数据引擎包MySQL-Cluster-gpl-storage-*.Rpm即可。
执行:
Rpm –Uvh MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.i386.rpm
2.1.4. 安装阶段注意事项
如果原先安装过单机版MYSQL软件包,一定要先进行卸载,否则会出现冲突。
2.2. 配置阶段 2.2.1. 管理节点-MANAGEMENTNODE
管理节点的配置文件包含两部分,分别是config.ini和my.cnf,本例中分别配置如下
群集配置文件/var/lib/mysql/mysql-cluster/config.ini
新建该文件内容如下。
[ndbd default] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [tcp default] portnumber=2202 [ndb_mgmd] hostname=10.10.10.11 datadir=/var/lib/mysql-cluster [ndbd] hostname=10.10.10.22 datadir=/usr/local/mysql/data [ndbd] hostname=10.10.10.33 datadir=/usr/local/mysql/data [mysqld] hostname=10.10.10.11 |
节点配置文件/etc/my.cnf
新建该文件内容如下。
[mysqld] ndbcluster ndb-connectstring=10.10.10.11 default-storage-engine=NDBCLUSTER [mysql_cluster] ndb-connectstring=10.10.10.11 |
2.2.2. SQL节点-SQLNODE 2.2.2.1. 初始化MySQL数据库
再安装完数据库后会提示改数据库登录密码
设置数据库密码为‘123456’执行:
Mysqladmin –u root password '123456'
2.2.2.2. 配置配置文件
SQL节点的主要配置文件是/etc/my.cnf
[mysqld] ndbcluster ndb-connectstring=10.10.10.11 default-storage-engine=NDBCLUSTER skip-name-resolve [mysql_cluster] ndb-connectstring=10.10.10.11 |
2.2.3. 数据节点-DATANODE
节点配置文件/etc/my.cnf
新建该文件内容如下。
[mysqld] ndbcluster ndb-connectstring=10.10.10.11 default-storage-engine=NDBCLUSTER [mysql_cluster] ndb-connectstring=10.10.10.11 |
2.2.4. 配置阶段注意事项
在/ect/my.cnf文件中default-storage-engine=NDBCLUSTER表示是默认数据库引擎,若不加这句话,在数据库建表语句后面都必须加上ENGINE=NDBCLUSTER;
2.3. 启动阶段 2.3.1. 管理节点-MANAGEMENTNODE
输入命令ndb_mgmd –f /var/lib/mysql-cluster/config.ini
自启动设置
需要每次开机自动启动管理节点服务,按照如下步骤执行
【命令】
2.3.2. SQL节点-SQLNODE
输入命令service mysql restart
如果使用的是RPM包安装的,mysql服务会自动启动,可以使用如下命令进行检查:
【命令】
Chkconfig –list mysql
如果是使用源代码进行安装的,可以使用如下命令使之自启动:
【命令】
Echo /usr/local/mysql/mysqld_safe –user=mysql& >> /etc/rc.d/rc.local
2.3.3. 数据节点-DATANODE
输入命令ndbd(注意第一次启动时输入:ndbd--initial)
2.4. 群集启动状况检查
所有群集节点都启动之后,可以使用如下命令查看群集状态
【命令】
ndb_mgm –e show
上图数据节点的启动状态都在启动中。
上图两个节点都已启动。
3. 群集数据库的创建和使用 3.1. 建立数据库
在管理节点上启动mysql服务:
进入mysql数据库:
输入mysql–uroot–p
输入密码123456进入数据库
创建数据库
建立一个表做测试
上述操作可以看到数据能查询出来;
3.2. 连接到数据库
在数据库中输入下面两行命令实现数据库远程访问功能。
mysql>grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
QueryOK,0 rows affected (0.00sec)
mysql>flush privileges;
QueryOK,0 rows affected (0.00sec)
4. 群集功能验证 4.1. 群集功能目标
在集群正常运行过程,当一个数据节点断掉后不影响数据库的正常使用。断掉的节点启动后能自动完成数据同步。
4.2. 群集故障转移
模拟数据node2断掉后集群功能的测试及数据查询测试
拔掉数据node2(数据节点2)的网线。
进去管理节点查看集群状态
Node2节点已经不能连接了。然后进去mysql再次查询:
数据成功查询得到。
下面模拟两个数据节点同时都断掉后集群功能测试及数据查询测试
我们将node1、node2的网线全部拔掉。
查看集群显示情况
上述可以看到数据节点都没有连接了。
下面进行数据查询
可以看到数据无法查询,并出项了相应的集群错误提示。
4.3. 群集故障节点恢复
恢复一个数据节点后集群功能及数据查询功能的测试
插上node1(ip为10.10.10.22)数据节点的网线并重启该机上的ndbd。
进入任意一台数据节点机器输入:ndbd启动数据节点服务。
进去管理节点查看集群状态
上图显示已有一个节点进入启动状态。待启动完成后进去mysql再次查询:
数据成功查询得到。验证了集群故障恢复后数据读写恢复正常。
4.4. 集群故障过程中产生的数据,节点回复后的数据同步。
测试目的:
在集群中一个节点断掉到它重新启动这段时间的所有数据操作,会在该节点启动后自动完成数据同步。
步骤:
断掉数据节点1并在数据库服务中执行相应的数据插入操作。
断掉节点1后查看集群服务。
显示数据库中数据情况:
另一个数据节点并执行ndbd命令:
然后断掉数据节点2。查看集群状态:
验收数据是否已同步,进如mysql数据库服务进行数据查询。
数据仍能查询到,说明在故障恢复后mysql集群完成了数据同步。
转载于:https://blog.51cto.com/kushun/353858