张哥视频课:https://edu.csdn.net/course/play/7912
搭建MySQL集群,首先看了一些关于集群的资料,然后根据步骤一步步的整,遇到了一些问题,在这里把我遇到的问题以及解决方法分享出来。
【是什么】
集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
mysql集群技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障。
一个mysql集群包含三个节点:管理节点,数据节点和sql节点。启动顺序为:管理节点,数据节点,sql节点。管理节点只能一个,数据节点和sql节点可以根据需要设置个数。
管理节点:(也可以称管理服务器)主要负责管理数据节点和SQL节点,还有集群配置文件和集群日志文件。它监控其他节点的工作状态,能够启动、关闭或重启某个节点。其他节点从管理节点检索配置数据,当数据节点有新事件时就把事件信息发送给管理节点并写入集群日志。
数据节点:负责存储数据
sql节点:通过它进行sql操作。
【为什么】
为什么要使用集群还要通过它的优点来看,集群用较低的成本,在性能,灵活可用方面上有很大的改进
【优点】
高可伸缩性:服务器集群具有很强的可伸缩性。 随着需求和负荷的增长,可以向集群系统添加更多的服务器。在这样的配置中,可以有多台服务器执行相同的应用和数据库操作。
高可用性:在不需要操作者干预的情况下,防止系统发生故障或从故障中自动恢复的能力。通过把故障服务器上的应用程序转移到备份服务器上运行,集群系统能够把正常运行时间提高到大于99.9%,大大减少服务器和应用程序的停机时间。
高可管理性:系统管理员可以从远程管理一个、甚至一组集群,就好象在单机系统中一样。
【缺点】
我们知道集群中的应用只在一台服务器上运行,如果这个应用出现故障,其它的某台服务器会重新启动这个应用,接管位于共享磁盘柜上的数据区,进而使应用重新正常运转。我们知道整个应用的接管过程大体需要三个步骤:侦测并确认故障、后备服务器重新启动该应用、接管共享的数据区。因此在切换的过程中需要花费一定的时间,原则上根据应用的大小不同切换的时间也会不同,越大的应用切换的时间越长。
【总结】
这是mysql集群的首篇博客,主要介绍集群的基础知识,集群的由来,为什么使用,以及集群的优缺点,下篇博客讲解mysql集群在windows环境下的搭建过程以及在搭建过程中遇到的问题以及解决方案。
下面将会把成果分享一下,手把手教你在三分钟内搭建mysql集群。
·准备工作——前期工作
·搭建之路——三分钟搞定
·测试集群——看成果
【准备工作】
1、mysql-cluster-gpl-7.4.9-winx64
下载方式:
http://dev.mysql.com/downloads/cluster/
2、两台电脑
一台配置管理节点,一个数据节点和一个sql节点,一台配置一个数据节点和一个sql节点。
管理节点:192.168.22.238
数据节点A:192.168.22.238
数据节点B:192.168.22.240
SQL节点A:192.168.22.238
SQL节点B:192.168.22.240
【搭建之路】
一、配置mysql集群
1、将下载的mysql集群压缩包解压到管理节点192.168.22.238的C:\mysql目录下:
2、配置管理节点:
在配置管理节点(192.168.22.238)的计算机上的C:\Mysql\Bin目录下建立cluster-logs和config两个文件夹。cluster-logs用来存储日志文件,在config文件夹中建立my.ini和config.ini两个配置文件:
my.ini
- [mysql_cluster]
- # Options for management node process
- config-file=C:/mysql/bin/config/config.ini
config.ini
- [ndbd default]
- # Options affecting ndbd processes on all data nodes:
- NoOfReplicas=2 # Number of replicas
- DataDir=C:/mysql/bin/cluster-data # Directory for each data node's data files
- # Forward slashes used in directory path,
- # rather than backslashes. This is correct;
- # see Important note in text
- DataMemory=80M # Memory allocated to data storage
- IndexMemory=18M # Memory allocated to index storage
- # For DataMemory and IndexMemory, we have used the
- # default values. Since the "world" database takes up
- # only about 500KB, this should be more than enough for
- # this example Cluster setup.
- [ndb_mgmd]
- # Management process options:
- HostName=192.168.22.238 # Hostname or IP address of management node
- DataDir=C:/mysql/bin/cluster-logs # Directory for management node log files
- [ndbd]
- # Options for data node "A":
- HostName=192.168.22.238 # Hostname or IP address
- [ndbd]
- # Options for data node "B":
- HostName=192.168.22.240 # Hostname or IP address
- [mysqld]
- # SQL node A options:
- HostName=192.168.22.238 # Hostname or IP address
- [mysqld]
- # SQL node B options:
- HostName=192.168.22.240 # Hostname or IP address
3、配置数据节点:
在配置数据节点(192.168.25.48、192.168.25.49)的计算机上的C:\Mysql\Bin目录下建立cluster-data文件夹,用来存放数据:SQL节点不用任何配置,至此,整个MySQL集群就搭建完成了。
将管理节点(192.168.22.238)电脑C:\mysql文件拷到192.168.22.240电脑的C盘
二、启动mysql集群
启动顺序:管理节点→数据节点→sql节点
1、启动管理节点
在cmd中运行命令:
c:\mysql\bin\ndb_mgmd.exe --configdir=c:\mysql\bin\config --config-file=c:\mysql\bin\config\config.ini --ndb-nodeid=1 --reload –initial
在cmd中运行如下命令:
c:\mysql\bin\ndbd.exe --ndb-connectstring=192.168.22.238
3、启动每个sql节点:
在cmd中运行如下命令:
c:\mysql\bin\mysqld.exe --ndbcluster --ndb-connectstring=192.168.22.238 --console
4、查看每个节点的状态
在cmd命令中运行:c:\mysql\bin\ndb_mgm,再执行“show”命令,可以查看到每个节点的连接状态:
这就表明每个节点均连接正确。
【测试mysql集群】
1、在sql节点A建立数据库并插入数据:
在sql节点A的计算机上(192.168.22.238)的cmd中运行C:\mysql\bin\mysql.exe -u root -p命令登录mysql,接下来需要输入密码时,密码默认为空(直接回车)。
·创建名为“chan”的数据库:
create database chan;
·创建名为“T_chan”的表:
use chan;
create table T_chan(Name varchar(23),Age int) engine=ndbcluster;
注意建表语句后面一定要加上 engine=ndbcluster,为什么要加上,在下一篇博客中会介绍。
·插入数据:
insert into T_chan values('chan',23);
·查询数据:
select * from T_chan;
2、在sql节点B查到数据
在sql节点B的计算机上(192.168.22.240)的cmd中运行C:\mysql\bin\mysql.exe -u root -p命令登录mysql。
执行 show databases; 命令可以查看到在sql节点A新建的数据库;
执行
use chan;
select * from T_chan;
可以查询到在sql节点A插入的数据。
到这里mysql集群搭建就已经完成了。在搭建过程中也遇到了一些问题,在接下来的博客中,将会将会把我遇到的问题分享给大家。
【总结】
mysql集群我们现在做到的是加入一个数据节点宕机后,不会影响整个集群的运行,数据也不会丢失,保证了数据的完整性。第一次搭建的时候遇到了一些困难,不过这些都是小事啦。看完上面的步骤是不是觉得mysql搭建很简单,熟练以后在搭建的时候会遇到什么问题,以及如何解决,轻轻松松的就搞定了。
下面介绍在搭建mysql集群的时候我遇到了一些问题。1、mysql集群安装不成功
遇到的问题:
之前做网上商城的项目的时候安装了mysql,这次搭建mysql集群的时候按照百度经验里的教程卸载了,http://jingyan.baidu.com/article/f96699bbaa8fc1894f3c1b5a.html。但是在安装mysql集群的时候还是没有安装成功。
我之前用的mysql和集群版本的mysql是两个不同的版本,用之前的版本是不可能搭建成功mysql集群的。
MySQL Community Server 社区版本,开源免费,但不提供官方技术支持
MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server
解决方案:
打开服务(win+ R,输入services.msc),查看mysql的可执行文件的路径。查看是否是C:\mysql\**(我的mysql集群安装在C:\mysql),如果不是,
1、执行删除mysql服务的命令:sc delete mysql
2、安装mysql:进入C:\mysql\bin目录下,使用mysqld –install安装MySQL服务
3、启动mysql服务:使用net start mysql命令启动MySQL服务
这样mysql就能安装成功了!
2、The system tablespace must be writable!
解决方案:
1、打开任务管理器终止mysqld进程;
2、打开mysql安装目录的data文件夹,删除以下2个文件:
ib_logfile0和ib_logfile1
3、重新启动mysql
3、mysql服务无法启动,发生系统错误:1067,进程意外终止
运行:mysqlbin mysqladmin -u root shutdown
然后按照第一个解决方案就可以解决。
4、mysql集群没有搭建完成,出现的问题
解决方案:
按照博客:http://blog.csdn.net/chenxiaochan/article/details/50856072,重新搭建就好。
总结:
在搭建mysql集群的时候遇到的这些问题,都是因为没有对mysql集群了解不够,通过这次的搭建,在搭建过程过程中遇到的问题,让我对mysql集群有了简单的了解,由最初的每走一步都困难重重,到现在的简简单单,这些错误都是小问题,这些只是在搭建上遇到的问题,还有在应用的时候遇到的问题,在接下来的博客中都会写到,期待吧。