CentOS-6.3安装MySQL集群

安装要求

安装环境:CentOS-6.3

安装方式:源码编译安装

软件名称:mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz

下载地址:http://mysql.mirror.kangaroot.net/Downloads/

软件安装位置:/usr/local/mysql

数据存放位置:/var/mysql/data

日志存放位置:/var/mysql/logs

集群设计

首先设计集群的安装分配方式,我共需要5台服务器,服务器分配如下:

管理节点: 192.168.15.231

sql节点1: 192.168.15.232

sql节点2: 192.168.15.233

数据节点1: 192.168.15.234

数据节点2: 192.168.15.235

设备的连接方式如下图所示:

**注意:**目前这种设计存在的问题是管理节点是单点的,231挂掉后整个集群就会瘫痪,先不管这个问题,首先把这个简单的MySQL集群先搭建起来。

检查安装的mysql

检查系统中已经安装过的mysql信息,操作如下:

python 复制代码
[root@localhost /]# rpm -qa | grep mysql
[root@localhost /]# service mysql status

如果安装过其他版本的mysql,请卸载,操作如下:

python 复制代码
[root@localhost /]# /etc/init.d/mysqld stop  //关闭目前的mysql服务
[root@localhost /]# ps -ef | grep mysql  //检验mysql是否已经关闭
#如果没关闭,执行kill -9 端口号
#执行删除
rpm -e --allmatches --nodeps mysql mysql-server
rm -rf /var/lib/mysql  // 删除mysql的安装目录

管理节点

管理节点安装

安装管理节点(192.168.15.231)

python 复制代码
[root@localhost /]# groupadd mysql
[root@localhost /]#  useradd mysql -g mysql
[root@localhost /]# cd /usr/local
[root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[root@localhost local]# chown -R mysql:mysql mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# scripts/mysql_install_db --user=mysql

管理节点配置

python 复制代码
[root@localhost ~]#  mkdir /var/lib/mysql-cluster
[root@localhost ~]# cd /var/lib/mysql-cluster
[root@localhost mysql-cluster]# vi + /var/lib/mysql-cluster/config.ini

在config.ini 中添加以下内容:

python 复制代码
[NDBD DEFAULT]
NoOfReplicas=1
[TCP DEFAULT]
portnumber=3306
[NDB_MGMD]
#设置管理节点服务器
HostName=192.168.15.231
DataDir=/var/mysql/data

[NDBD]
#设置存储节点服务器(NDB节点)
HostName=192.168.15.234
DataDir=/var/mysql/data

[NDBD]
#第二个NDB节点
HostName=192.168.15.235
DataDir=/var/mysql/data

[MYSQLD]
#设置SQL节点服务器
HostName=192.168.15.232
[MYSQLD]
#第二个SQL节点
HostName=192.168.15.233

管理节点启动

python 复制代码
[root@localhost ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
[root@localhost ~]# mkdir /var/mysql/logs
[root@localhost ~]# netstat -lntpu

看到tcp 0 0 0.0.0.0:1186开放说明启动正常

开启管理节点服务器的1186端口

管理节点检验

执行以下操作:

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| python [root@localhost /]# 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 (not connected, accepting connect from 192.168.15.234) id=3 (not connected, accepting connect from 192.168.15.235) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.15.231 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 2 node(s) id=4 (not connected, accepting connect from 192.168.15.232) id=5 (not connected, accepting connect from 192.168.15.233) |

管理节点关闭

python 复制代码
[root@localhost /]# /usr/local/mysql/bin/ndb_mgm -e shutdown

#成功后终端打印出以下信息
Connected to Management Server at: 192.168.15.236:1186
3 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.

数据节点

数据节点安装

数据节点1: 192.168.15.234

数据节点2: 192.168.15.235

python 复制代码
[root@localhost /]# groupadd mysql
[root@localhost /]# useradd mysql -g mysql
[root@localhost /]# cd /usr/local
[root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[root@localhost local]# chown -R mysql:mysql mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# scripts/mysql_install_db --user=mysql
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

数据节点配置

对数据节点进行配置,执行以下操作:

python 复制代码
[root@localhost mysql]# mkdir /var/mysql/data
[root@localhost mysql]# mkdir /var/mysql/logs
[root@localhost mysql]# vi /etc/my.cnf

向文件追加以下内容:

python 复制代码
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.15.231
[MYSQL_CLUSTER]
ndb-connectstring=192.168.15.231
[NDB_MGM]
connect-string=192.168.15.231

数据节点启动

启动此处时,管理节点服务器防火墙必须开启1186,3306端口。
注意: 只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加--initial参数!

第一次启动如下:

python 复制代码
[root@localhost mysql]# /usr/local/mysql/bin/ndbd --initial
2013-01-30 13:43:53 [ndbd] INFO     -- Angel connected to '192.168.15.231:1186'
2013-01-30 13:43:53 [ndbd] INFO     -- Angel allocated nodeid: 2

正常启动方式:

python 复制代码
[root@localhost mysql]# /usr/local/mysql/bin/ndbd

数据节点关闭

python 复制代码
[root@localhost /]# /etc/rc.d/init.d/mysqld stop
或者
[root@localhost mysql]# /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS!

/usr/local/mysql/bin/mysqladmin -uroot shutdown

SQL节点安装

SQL节点安装

SQL节点和存储节点(NDB节点)安装相同,都执行以下操作;

sql节点1: 192.168.15.232

sql节点2: 192.168.15.233

python 复制代码
[root@localhost /]# groupadd mysql
[root@localhost /]# useradd mysql -g mysql
[root@localhost /]# cd /usr/local
[root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[root@localhost local]# chown -R mysql:mysql mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# scripts/mysql_install_db --user=mysql
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

SQL节点配置

执行以下操作:

python 复制代码
[root@localhost mysql]# mkdir /var/mysql/data     //创建存储数据的文件夹
[root@localhost mysql]# mkdir /var/mysql/logs     //创建存储日志的文件夹
[root@localhost mysql]# vi /usr/local/mysql/my.cnf  //修改配置文件

追加以下内容:

python 复制代码
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.15.231
[MYSQL_CLUSTER]
ndb-connectstring=192.168.15.231
[NDB_MGM]
connect-string=192.168.15.231

SQL节点启动

执行以下操作:

python 复制代码
[root@localhost mysql]# service mysqld start
Starting MySQL.. SUCCESS!

SQL节点关闭

最直接的方式:

python 复制代码
[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -uroot shutdown

root@localhost /\]# /etc/rc.d/init.d/mysqld stop 或者 \[root@localhost mysql\]# /etc/init.d/mysql stop Shutting down MySQL.. SUCCESS! ## 功能测试 在管理节点(192.168.15.231)上查看服务状态 ```python [root@localhost ~]# /usr/local/mysql/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.15.234 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master) id=3 @192.168.15.235 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.15.231 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 2 node(s) id=4 @192.168.15.232 (mysql-5.5.22 ndb-7.2.6) id=5 @192.168.15.233 (mysql-5.5.22 ndb-7.2.6) ``` 可以看到这里的数据节点、管理节点、sql节点都是正常的。 **注意** **:** 1. 在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。 2. NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。 3. Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访问别的Sql节点,需要在对应的Sql节点追加用户。虽然在MySql Cluster7.2版本开始提供了"用户权限共享"。 ### 数据同步性测试 在一个数据节点上进行相关数据库的创建,然后到另外一个数据节点上看看数据是否同步。 1. **第** **1** **步:** SQL节点1(192.168.15.232)上增加数据: ```python [root@localhost mysql]# /etc/rc.d/init.d/mysqld status //检验mysql是否运行 [root@localhost mysql]# /etc/rc.d/init.d/mysqld start //启动mysql [root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p Enter password: mysql> show databases; mysql> create database testdb2; mysql> use testdb2; mysql> CREATE TABLE td_test2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDBCLUSTER,与配置文件中的名称相同 mysql> INSERT INTO td_test2() VALUES (1); mysql> INSERT INTO td_test2() VALUES (152); mysql> SELECT * FROM td_test2; ``` 1. **第** **2** **步:** 进入到SQL节点2(192.168.15.233)上查看数据 |------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ```python mysql> use testdb2; Database changed mysql> SELECT * FROM td_test2; +------+ | i | +------+ | 126 | | 1 | +------+ 2 rows in set (0.01 sec) ``` | 查看表的引擎是不是NDB: ```python >show create table td_test2; ``` 1. **第** **3** **步:** 反向测试,SQL节点2(192.168.15.233)上增加数据: ```python mysql> create database bb; mysql> use bb; mysql> CREATE TABLE td_test3 (i INT) ENGINE=NDB; mysql> INSERT INTO td_test3 () VALUES (98); mysql> SELECT * FROM td_test3; ``` SQL节点1(192.168.15.232)上查看数据: ```python mysql> use bb; Database changed mysql> SELECT * FROM td_test3; +------+ | i | +------+ | 98 | +------+ 1 row in set (0.00 sec) ``` ## 关闭集群 **先关闭管理节点,然后关闭** **SQL** **节点和数据节点。** ## 集群启动操作顺序 要再次启动集群,按照以下顺序执行: **管理节点** **-\>** **数据节点** **--\> SQL** **节点** **注意:**此次启动数据节点时不要加"--initial"参数。 ## 安装及测试中的错误 ### 启动中的错误 错误提示: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) **解决办法** **1** **(端口占用)** netstat -anp \|grep 3306 kill -9 进程号 **解决办法** **1** **(权限问题)** \[root@localhost mysql\]# chown -R mysql:mysql /var/mysql //修改自定义文件夹的访问权限

相关推荐
Hello.Reader3 小时前
Redis 延迟监控深度指南
数据库·redis·缓存
ybq195133454313 小时前
Redis-主从复制-分布式系统
java·数据库·redis
好奇的菜鸟6 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°6 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜6 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
DuelCode7 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
幽络源小助理7 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
Hello.Reader7 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
简佐义的博客8 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
爬山算法8 小时前
MySQL(116)如何监控负载均衡状态?
数据库·mysql·负载均衡