【1.应用背景】

    在最近做的项目中,因为有一个短时间内很多人访问服务,会频繁访问数据库,看到这里不免有些人会想起数据库集群。我们组长也想到了用数据库集群,于是就带着我们几个研究起来了mysql数据库集群的搭建。因为我们几个的电脑都是windows的系统,所以搭建的是windows下的集群环境。
    当提到大数据,高并发。大家都会想到分布式,集群。那么两者都是用来处理大批量数据操作的,其工作原理是有很大区别的,分布式会缩短单个任务的执行时间来提升工作效率,而集群强调的是提高单位时间内执行操作数的增加来提高效率。更简单的来说,分布式是将步骤分到每台电脑上,不考虑依赖关系。集群方案是指几个任务同时在处理。

【2.为什么需要数据库集群】

    当数据量很大的时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影响了最终用户的体验。通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术(反正就是个啥算法,我是不明白它内部是如何处理这些请求的)。MySQL集群技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障。讲到这里,我想到memcached的应用,介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。缓存的使用也在一定程度上减少了对服务器读操作。
    上午听到一位很厉害的架构师传授经验,他就讲到服务器的资源是很宝贵的,不是所有请求都有必要通过服务器来接收,回复。在资源和效率之间我们需要做一个权衡,那频繁访问需要用到的数据需要存储到缓存中,那服务器缓存是相对安全的。潜在的安全风险 Cookie 可能会被篡改。用户可能会操纵其计算机上的 Cookie,这意味着会对安全性造成潜在风险或者导致依赖于 Cookie 的应用程序失败。另外,虽然 Cookie 只能被将它们发送到客户端的域访问,历史上黑客已经发现从用户计算机上的其他域访问 Cookie 的方法。题外话了,接着说我们搭建集群。

【3.mysql集群原理】

   管理节点,数据节点,sql节点,这三种节点只是在逻辑上的划分,所以它们不一定和物理计算机是一一对应的关系。比如说,管理节点可以也当做sql节点用。
  • 管理节点(ndb_mgmd)
   管理节点(也可以称管理服务器)主要负责管理数据节点和SQL节点,还有集群配置文件和集群日志文件。它监控其他节点的工作状态,能够启动、关闭或重启某个节点。其他节点从管理节点检索配置数据,当数据节点有新事件时就把事件信息发送给管理节点并写入集群日志。提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令ndb_mgmd启动的。
  • 数据节点(ndbd)
   数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。没有必要有一个以上的副本。数据节点是用命令ndbd启动的。
  • sql节点(mysqld)
   客户端节点是使用NDB簇存储引擎的传统MySQL服务器。典型情况下,SQL节点是使用命令mysqld –ndbcluster启动的,或将ndbcluster添加到my.cnf后使用mysqld启动。

【4.如何搭建】

三步骤:管理节点——>数据节点——>sql节点

1.节点信息:
    管理节点:192.168.21.114
    数据节点A:192.168.21.83
    数据节点B:192.168.21.88
    SQL节点A:192.168.21.83
    SQL节点B:192.168.21.88

2.将安装包解压到C:盘,起名mysql文件夹,在bin目录下创建三个文件夹
---config
---cluster-logs
---cluster-data
在config下填写配置文件信息:
  • 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.21.114           # 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.21.83              # Hostname or IP address[ndbd]
# Options for data node "B":
HostName=192.168.21.88              # Hostname or IP address[mysqld]
# SQL node A options:
HostName=192.168.21.83              # Hostname or IP address[mysqld]
# SQL node B options:
HostName=192.168.21.88              # Hostname or IP address

3.启动管理节点:
c:\mysql\bin\ndb_mgmd.exe --configdir=c:\mysql\bin\config --config-file=c:\mysql\bin\config\config.ini --ndb-nodeid=1 --reload –initial 
4.启动数据节点:
   c:\mysql\bin\ndbd.exe --ndb-connectstring=192.168.21.114



5.启动sql节点(目前还有问题,但是命令没错)

c:\mysql\bin\mysqld.exe --ndbcluster --ndb-connectstring=192.168.21.114 --console

6.查看各个节点信息:

c:\mysql\bin\ndb_mgm

show

到这里所有节点就都启动成功了。可以测试一下,在节点A上面存数据,节点B就可以查到数据。

【5.总结】

   1.假如一个数据节点宕机,并不会影响整个集群的运行,任何一个数据节点死掉甚至物理损坏都不用担心,因为每个数据节点保存的数据都是完整的一份数据。
   2.每一个数据库服务器都有一套完整的数据,这样数据节点就可以分配数据请求到各个sql节点上,提高了操作效率。

MySQL数据库集群的原理与搭建相关推荐

  1. mysql数据库集群架构图_搭建MySQL-Cluster集群架构

    实验需求:部署MySQL集群,减少数据库单点故障. 实验方案:准备5台服务器,mgmd(192.168.100.1)作为管理节点,sqlA(192.168.100.2)和sqlB(192.168.10 ...

  2. 使用Docker搭建高可用Mysql数据库集群

    文章目录 前言 正文 选择哪一种搭建集群的方式 PXC Replication 安装docker Docker操作的基本命令 安装PXC集群 负载均衡 双机热备 具体实现细节 安装keepalived ...

  3. mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...

    为什么80%的码农都做不了架构师?>>>    <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...

  4. Redis集群的原理和搭建

    Redis集群的原理和搭建 前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.单节点的Redis已经就达到了很高的性能,为了提高可用性我们可以使用Re ...

  5. LINUX 下 配置MySQL数据库集群

    LINUX 下 配置MySQL数据库集群 MySQL数据库集群进行正确配置步骤(1) 此文章主要向大家讲述的是对MySQL数据库集群进行正确配置的实际操作步骤,以及对其概念的讲述,如果你对其相关的实际 ...

  6. MySQL数据库集群实现负载均衡的安装配置详解

    本文我们详细地介绍了MySQL 5.0数据库集群负载均衡的安装配置工作,希望能够对您有所帮助. 本文我们主要介绍了MySQL数据库集群实现负载均衡的安装配置工作,接下来我们就让我们一起来了解一下这部分 ...

  7. MySQL数据库集群(双主双从)

    文章目录 MySQL数据库集群(双主双从) 实验环境 双主双从 双主 双从 进行测试 MySQL数据库集群(双主双从) 实验环境 保证每台centos7服务器配置静态的IP,初始化服务器,关闭防火前和 ...

  8. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档 MySQL Cluster简介 MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(share ...

  9. 使用mycat搭建实现mysql数据库集群管理

    今天来使用mycat管理mysql集群, 随着数据量的提升, 我们如果把所有数据存储在一个数据库中, 对数据的各种操作就会变得非常的困难. 自然我们又想到了数据库也进行集群部署, 将一个数据库的数据分 ...

最新文章

  1. 论排列组合,持续更新
  2. Redis性能问题排查解决手册(值得收藏)
  3. .NET/ASP.NET Routing路由(深入解析路由系统架构原理)
  4. Python学习笔记一:数据类型转换
  5. 王哲:Cocos2d-x 3.0引擎带来了什么?
  6. 线程池 Executors2
  7. api接口返回动态的json格式?我太难了,尝试一下 linq to json
  8. Java变量(静态变量/成员变量/局部变量)初始化的问题
  9. Redis启动的三种方式
  10. L1-026. I Love GPLT-PAT团体程序设计天梯赛GPLT
  11. C++和C语言的区别是什么?
  12. c bool 类型检查_第3篇:C/C++ 检查数字类型的最高有效位(MSB)
  13. web.xml配置以及一些详解
  14. 打造极致Material Design动画风格Button
  15. html怎么用excel打开乱码,excel打开是乱码,详细教您excel打开是乱码怎么解决
  16. freeswitch exporter
  17. 移动硬盘无法退出终极解决方法
  18. 自然语言处理和python_Python与自然语言处理搭建环境
  19. java处理word文档 替换文本 水印 页眉
  20. 用人人商城也能玩转心愿众筹了,创意无限,代码皆可实现

热门文章

  1. 也说说家养猿类养成套路
  2. 5G NR 阅读笔记
  3. mapstruct使用的正确姿势
  4. php 多线程下载大图片,PHP多线程批量采集下载图片的实现代码
  5. win10使用cmd强制删除文件命令
  6. dell主板40针开机针脚_实测戴尔OptiPlex 790主板34针前置面板接口针脚接口定义
  7. 质量管理知识点大盘点(之一)
  8. 无线通信原理及应用--阅读笔记一
  9. 韩信点兵计算公式与代码
  10. 天猫仿站秒杀系统开发