MYSQL 搭建集群
2016-05-20 19:11
471 查看
MySQL从结构看,由3类节点(计算机或进程)组成,分别是:
管理节点:用于给整个集群其他节点提供配置、管理、仲裁等功能。理论上通过一台服务器提供服务就可以了。
数据节点:MySQL Cluster的核心,存储数据、日志,提供数据的各种管理服务。2个以上 时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢。
SQL节点(API):用于访问MySQL Cluster数据,提供对外应用服务。增加 API 节点会提高整个集群的并发访问速度和整体的吞吐量,该节点 可以部署在Web应用服务器上,也可以部署在专用的服务器上,也开以和DB部署在同一台服务器上。
NDB引擎
MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如果运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。
现在的目标是搭建SQL节点(3个),data 节点(3个),管理节点(1个)
步骤如下:
##环境介绍
MANAGER NODE:188.188.2.181
SQL/DATA节点:188.188.2.181/182/183
(1)安装虚拟机
我的虚拟机是CENTOS 7版本的,安装了GNOME图形化界面,32G 内存+500G的硬盘空间
(2)安装MYSQL数据库(cluster version)
从MYSQL官网下载集群版本的MYSQL :http://dev.mysql.com/downloads/cluster/
我下载的是mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz
然后用SSH或者WINSCP工具将下载好的mysql放到你想放的位置,我的是放在/usr/local
直接解压 tar -zxvf mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz
因为名字太长,可以rename, mv mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64 mysql
(3)关闭防火墙
关闭selinux ,即 gedit /etc/selinux/config----将selinux=enforcing改为selinux=disabled
(用命令systemctl start/disable firewall.service)
查看防火墙状态用 firewall-cmd --state ,显示not running即为关闭了防火墙
----重启系统
******设置IP
这一步如果已经做了,就直接SKIP掉:
因为安装虚机的时候,是要配置网络适配器,分为internet和vmnetwork,其中设置internet是要访问外网的,vmnetwork是访问内网的,要在network中设置ip,具体可访问我的“CENTOS 7 设置IP”的博客
(4)创建用户和用户组
三台虚拟机公共配置:
GROUPADD MYSQL
USERADD -G MYSQL MYSQL
(5)配置管理节点
1、创建config.ini 文件
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
gedit config.ini
内容如下:
[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。
[NDB_MGMD]:表示管理节点的配置,只有一个。
[NDBD]:表示每个数据节点的配置,可以有多个。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址,也可以什么都不写,只保留一个空节点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数
2、管理节点的安装
cd /usr/local/mysql
cp bin/ndb_mgm*/usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
管理节点只要ndb_mgm和ndb_mgmd两个文件和一个配置文件即可,因此把这三个文件复制到那里,那里就是管理节点了。ndb_mgmd是mysql cluster管理服务器,ndb_mgm是客户端管理工具,等一下会用到它们的。到目前为止两个SQL节点两个数据节点和一个管理节点都安装完成了,但是还不能工作,得进行配置,把这几个节点联系在一起协同工作
--------------------------------------------
(6)mysql-cluster配置---(数据节点和SQL节点)
CD /USR/LOCAL/MYSQL
shell> cp support-files/mysql.server /etc/rc.d/init.d/mysqld
shell> chown mysql.mysql /usr/local/mysql -R
shell> chmod 755 /usr/local/mysql/scripts/*
shell> chmod 755 /etc/rc.d/init.d/mysqld
shell> sed -i "/\[mysqld\]/a datadir=/usr/local/mysql/data" /etc/my.cnf
shell> /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
shell> chown mysql:mysql -R /usr/local/mysql/data
shell> cd /usr/local/mysql/bin/
shell> cp ndb_mgm* /usr/local/bin/
shell> gedit /etc/my.cnf
-------------------------
[mysql_cluster]
ndb-connectstring=188.188.2.181#181、182、183的my.cnf设置都是一样的,即ndb-connectstring=188.188.2.181
[mysqld]
datadir=/usr/local/mysql/data
ndbcluster
ndb-connectstring=188.188.2.181#181、182、183的my.cnf设置都是一样的,即ndb-connectstring=188.188.2.181
-------------------------
(7)启动mysql-cluster
---启动顺序management node--data node(每台虚拟机都要执行)---sql node(每台虚拟机都要执行)
CD /USR/LOCAL/MYSQL/BIN
#启动管理节点
shell> ./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
##--initial参数第一次启动时加上,和在CONFIG.INI中增加节点,也要加
#启动数据节点
shell> ndbd #--initial ##初始化数据库,用在备份,恢复时,除了第一次启动要,其他都不用加--initial
#每台节点的机器都要执行
2014-02-27 18:14:23 [ndbd] INFO -- Angel connected to '10.10.54.154:1186'
2014-02-27 18:14:23 [ndbd] INFO -- Angel allocated nodeid: 2
#启动sql节点,每台虚拟机上都要执行
shell>/usr/local/mysql/bin/mysqld_safe --user=mysql &
//查看mysql集群状态
shell> ndb_mgm
ndb_mgm> show #查看数据节点和SQL节点是都都连上
ndb_mgm> all report memory #查看节点使用内存情况
(8)关闭集群
先关掉SQL节点再关掉管理节点(数据节点和管理节点是一起的)
关闭SQL节点
shell>/usr/local/mysql/bin/mysqladmin -u root -p shutdown
关闭管理节点(数据节点)
CD /USR/LOCAL/MYSQL/BIN
./NDB_MGM -E SHUTDOWN
、、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
测试集群
在188.188.2.181上,
/usr/local/mysql/bin/mysql -u root -p
创建数据库表时要加上集群引擎,即:create table test(id int) engine=NDB;否则同步失败.集群引擎只有NDB或者NDBCLUSTER
在182或者183上登录mysql查看数据库里是否表和数据与181相同。
至此,MYSQL CLUSTER已经部署好了!
管理节点:用于给整个集群其他节点提供配置、管理、仲裁等功能。理论上通过一台服务器提供服务就可以了。
数据节点:MySQL Cluster的核心,存储数据、日志,提供数据的各种管理服务。2个以上 时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢。
SQL节点(API):用于访问MySQL Cluster数据,提供对外应用服务。增加 API 节点会提高整个集群的并发访问速度和整体的吞吐量,该节点 可以部署在Web应用服务器上,也可以部署在专用的服务器上,也开以和DB部署在同一台服务器上。
NDB引擎
MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如果运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。
现在的目标是搭建SQL节点(3个),data 节点(3个),管理节点(1个)
步骤如下:
##环境介绍
MANAGER NODE:188.188.2.181
SQL/DATA节点:188.188.2.181/182/183
(1)安装虚拟机
我的虚拟机是CENTOS 7版本的,安装了GNOME图形化界面,32G 内存+500G的硬盘空间
(2)安装MYSQL数据库(cluster version)
从MYSQL官网下载集群版本的MYSQL :http://dev.mysql.com/downloads/cluster/
我下载的是mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz
然后用SSH或者WINSCP工具将下载好的mysql放到你想放的位置,我的是放在/usr/local
直接解压 tar -zxvf mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz
因为名字太长,可以rename, mv mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64 mysql
(3)关闭防火墙
关闭selinux ,即 gedit /etc/selinux/config----将selinux=enforcing改为selinux=disabled
(用命令systemctl start/disable firewall.service)
查看防火墙状态用 firewall-cmd --state ,显示not running即为关闭了防火墙
----重启系统
******设置IP
这一步如果已经做了,就直接SKIP掉:
因为安装虚机的时候,是要配置网络适配器,分为internet和vmnetwork,其中设置internet是要访问外网的,vmnetwork是访问内网的,要在network中设置ip,具体可访问我的“CENTOS 7 设置IP”的博客
(4)创建用户和用户组
三台虚拟机公共配置:
GROUPADD MYSQL
USERADD -G MYSQL MYSQL
(5)配置管理节点
1、创建config.ini 文件
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
gedit config.ini
内容如下:
[NDB_MGMD]:表示管理节点的配置,只有一个。
[NDBD]:表示每个数据节点的配置,可以有多个。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址,也可以什么都不写,只保留一个空节点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数
2、管理节点的安装
cd /usr/local/mysql
cp bin/ndb_mgm*/usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
管理节点只要ndb_mgm和ndb_mgmd两个文件和一个配置文件即可,因此把这三个文件复制到那里,那里就是管理节点了。ndb_mgmd是mysql cluster管理服务器,ndb_mgm是客户端管理工具,等一下会用到它们的。到目前为止两个SQL节点两个数据节点和一个管理节点都安装完成了,但是还不能工作,得进行配置,把这几个节点联系在一起协同工作
--------------------------------------------
(6)mysql-cluster配置---(数据节点和SQL节点)
CD /USR/LOCAL/MYSQL
shell> cp support-files/mysql.server /etc/rc.d/init.d/mysqld
shell> chown mysql.mysql /usr/local/mysql -R
shell> chmod 755 /usr/local/mysql/scripts/*
shell> chmod 755 /etc/rc.d/init.d/mysqld
shell> sed -i "/\[mysqld\]/a datadir=/usr/local/mysql/data" /etc/my.cnf
shell> /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
shell> chown mysql:mysql -R /usr/local/mysql/data
shell> cd /usr/local/mysql/bin/
shell> cp ndb_mgm* /usr/local/bin/
shell> gedit /etc/my.cnf
-------------------------
[mysql_cluster]
ndb-connectstring=188.188.2.181#181、182、183的my.cnf设置都是一样的,即ndb-connectstring=188.188.2.181
[mysqld]
datadir=/usr/local/mysql/data
ndbcluster
ndb-connectstring=188.188.2.181#181、182、183的my.cnf设置都是一样的,即ndb-connectstring=188.188.2.181
-------------------------
(7)启动mysql-cluster
---启动顺序management node--data node(每台虚拟机都要执行)---sql node(每台虚拟机都要执行)
CD /USR/LOCAL/MYSQL/BIN
#启动管理节点
shell> ./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
##--initial参数第一次启动时加上,和在CONFIG.INI中增加节点,也要加
#启动数据节点
shell> ndbd #--initial ##初始化数据库,用在备份,恢复时,除了第一次启动要,其他都不用加--initial
#每台节点的机器都要执行
2014-02-27 18:14:23 [ndbd] INFO -- Angel connected to '10.10.54.154:1186'
2014-02-27 18:14:23 [ndbd] INFO -- Angel allocated nodeid: 2
#启动sql节点,每台虚拟机上都要执行
shell>/usr/local/mysql/bin/mysqld_safe --user=mysql &
//查看mysql集群状态
shell> ndb_mgm
ndb_mgm> show #查看数据节点和SQL节点是都都连上
ndb_mgm> all report memory #查看节点使用内存情况
(8)关闭集群
先关掉SQL节点再关掉管理节点(数据节点和管理节点是一起的)
关闭SQL节点
shell>/usr/local/mysql/bin/mysqladmin -u root -p shutdown
关闭管理节点(数据节点)
CD /USR/LOCAL/MYSQL/BIN
./NDB_MGM -E SHUTDOWN
、、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
测试集群
在188.188.2.181上,
/usr/local/mysql/bin/mysql -u root -p
创建数据库表时要加上集群引擎,即:create table test(id int) engine=NDB;否则同步失败.集群引擎只有NDB或者NDBCLUSTER
在182或者183上登录mysql查看数据库里是否表和数据与181相同。
至此,MYSQL CLUSTER已经部署好了!
相关文章推荐
- mysql 表解锁
- MySql修改数据库编码为UTF8
- mysql 相关
- mysql5.7密码过期ERROR 1862 (HY000): Your password has expired. To log in you must change
- mysql的基本知识
- Mysql 授权用户进行远程连接
- MySQL7:性能优化
- MySQL6:视图
- MySQL5:触发器
- MySQL4:索引
- MySQL3:存储过程和函数
- MySQL2:四种MySQL存储引擎
- MySQL1:MySQL函数汇总
- mysql5.6源码安装
- Mysql 的查询缓存参数介绍与优化思路
- mysql远程连接
- MySQL之事务、索引、锁
- 【mysql】order by 优化与索引的应用
- mysql
- MySQL入门转载