mysql集群搭建一——集群基本概念以及windows集群环境搭建
2018-01-24 14:57
681 查看
一、集群与主从的概念与区别
1、主从(Master-Slave):主从就是把数据库分成主库与从库,然后主库负责写入的操作,从库负责读取数据但是不能写入数据。在安装流程上直接使用mysql-community的版本就可以完成安装。
主从的搭建过程很简单,配置过程我是参考如下网站的:
https://laravel-china.org/topics/3174/mysql-master-slave-replication-simple-configuration-simple-absolutely-can-be-used
2.集群:
MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。
数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。
无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。
通过多个MySQL服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。
集群的拓扑结构图:
上图可以看出,集群主要分为三个部分:
1) SQL节点(SQL node - 下图对应为 mysqld):分布式数据库。包括自身数据和查询中心结点数据
2) 数据节点(Data node - ndbd):集群共享数据(内存中)
3) 管理服务器(Management Server - ndb_mgmd):管理集群 SQL node,Data node
集群数据存储过程:
1) Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。
2) 每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好(或者无法准备该事务)。
3) Master等待所有Slave发送OK或ABORT消息,如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务;如果 Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。
4) 每个Slave等待来自Master的OK或ABORT消息。如果Slave收到提交请求,它们就会提交事务,并向Master发送事务已提交 的确认;如果Slave收到取消请求,它们就会撤销所有改变并释放所占有的资源,从而中止事务,然后向Masterv送事务已中止的确认。
5) Master收到来自所有Slave的确认后,就会报告该事务被提交(或中止),然后继续进行下一个事务处理。
由于同步复制一共需要4次消息传递,故mysql cluster的数据更新速度比单机mysql要慢。所以mysql cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方式。
概念参考:
http://blog.csdn.net/wutian713/article/details/50682360
二、windows搭建mysql集群
先来整理一下最后达到的效果:目前有
192.168.100.239、
192.168.100.192两台机器,
192.168.100.239作为管理节点,两台机器都作为数据节点和sql节点,最终达到集群的效果,下面给出搭建的过程:
1) 下载mysql-cluster,我下载的版本是
mysql-cluster-gpl-7.4.9-winx64.zip,这里给出官网网所有版本的下载链接:
所有mysql产品的下载链接:
https://downloads.mysql.com/archives/
mysql-cluster下载链接:
https://downloads.mysql.com/archives/cluster/
2) 将下载的mysql集群压缩包解压到管理节点
192.168.100.239的C:\mysql目录下:
3) 在配置管理节点(
192.168.100.239)的计算机上的
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.100.239 # 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.100.192 # Hostname or IP address [ndbd] # Options for data node "B": HostName=192.168.100.239 # Hostname or IP address [mysqld] # SQL node A options: HostName=192.168.100.192 # Hostname or IP address [mysqld] # SQL node B options: HostName=192.168.100.239 # Hostname or IP address [mysqld] [mysqld] [mysqld] [mysqld] [mysqld]
3) 配置数据节点
在计算机上的
C:\Mysql\Bin目录下建立
cluster-data文件夹,用来存放数据:SQL节点不用任何配置,至此,整个MySQL集群就搭建完成了。
将管理节点
192.168.100.239电脑
C:\mysql文件拷到
192.168.100.192电脑的C盘
4) 启动mysql集群(管理节点→数据节点→sql节点)
a、在管理节点服务器(
192.168.100.239)中启动管理节点
c:\mysql\bin\ndb_mgmd.exe --configdir=c:\mysql\bin\config --config-file=c:\mysql\bin\config\config.ini --ndb-nodeid=1 --reload –initial
这里在启动的时候回抛出一个warning警告,因为配置文件中的管理节点和数据节点sql节点为在同一个IP地址,这是mysql不建议这样的,但是因为机器有限,这点就忽略咯~
b、在
192.168.100.239和
192.168.100.192中分别启动数据节点
c:\mysql\bin\ndbd.exe --ndb-connectstring=192.168.22.238
ps:这里要注意–ndb-connectstring=后面的IP地址是管理节点的地址,并不是本机的IP地址,所以这里的运行命令是一样的
c、启动每个sql节点
c:\mysql\bin\mysqld.exe --ndbcluster --ndb-connectstring=192.168.100.239 --console
ps:这里要注意–ndb-connectstring=后面的IP地址是管理节点的地址,并不是本机的IP地址,所以这里的运行命令是一样的
d、查看每个节点的状态
在cmd命令中运行:
c:\mysql\bin\ndb_mgm,再执行
show命令,可以查看到每个节点的连接状态:
参考网站:
http://blog.csdn.net/chenxiaochan/article/details/50856072
在下一篇博客中我将会在linux环境中搭建mysql集群,并使用nginx做mysql的负载均衡。
相关文章推荐
- mysql 复制 总结(一) 基本概念以及环境搭建
- mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置
- Windows平台下用IIS搭建PHP+MYSQL环境之基本设置
- curl的概念以及Windows下curl环境的搭建
- 精品教程--Android基本概念以及开发环境搭建
- 在windows环境下搭建mysql集群
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程以及注意事项
- MySql集群环境搭建(windows平台)
- MySQL环境搭建以及服务器远程连接的配置(WindowsX64)
- kafka学习(一) ---- 基本概念以及环境搭建
- Apache+MySQL+Python+Django在Windows下环境搭建指南(Python Web环境搭建)
- Windows 环境搭建Redis集群
- windows-x64下redis-cluster集群环境的搭建(一)
- windows下Apache+PHP+MySQL环境搭建
- windows下PHP环境搭建-PHP+Apache+MySQL
- 通过node-mysql搭建Windows+Node.js+MySQL环境的教程
- 阿里云Ubuntu系统从0搭建LAMP(Apache+MySQL+PHP)以及服务器生产环境常用配置
- mysql搭建以及基本命令
- Windows下Java+MyBatis框架+MySQL的开发环境搭建教程
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程