MySQL Cluster(MySQL集群) V7.6
发布时间:2022-10-20 10:59:44 所属栏目:MySql教程 来源:
导读: MySQL Cluster 是专门用来做MySQL集群的程序,简单来讲它是一种技术,该技术能够在无共享的系统中部署内存中数据库的“Cluster”,通过无共享体系结构,系统能够使用各种廉价的硬件,并对所有硬件没有
MySQL Cluster 是专门用来做MySQL集群的程序,简单来讲它是一种技术,该技术能够在无共享的系统中部署内存中数据库的“Cluster”,通过无共享体系结构,系统能够使用各种廉价的硬件,并对所有硬件没有任何特殊的要求。 MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。 【功能特点】 性能和扩展能力 自动分片 数据库自动、透明地分布于低成本的商用服務器上,这样无需更改应用程序即可以向外扩展的方式增加读写查询的能量。 多主复制 每个数据节点都可以接受写操作。这项功能与自动分片功能相结合,提供了非常高的写操作扩展能力。 分布式跨分片 JOIN 适应性查询本地化将 JOIN 操作下放到数据节点,这样它们就可以并行地在多个本地数据副本上执行。 实时响应 内存中的表和索引异步刷新到磁盘并绑定到 CPU 线程,低延迟。 开发人员 API 和数据模型 SQL MySQL Server 针对集群提供一个标准的 SQL 接口,可通过所有标准 MySQL 连接器(如 JDBC、ODBC.NET 等)连接各种 Web 开发语言和框架。 使用 Memcached 的 NoSQL 原生键值访问,绕过 SQL 层访问 存於數据節點中的數据,用于结构和非结构的数据存储。 使用 JavaScript 和 node.js 的 NoSQL 支持通过服务器端JavaScript绕过 SQL 层直接访问存于数据节点中的数据mysql集群,以加速数据的查询和维护 MySQL Cluster 使用 C++ 的 NoSQL 原生 C++ 访问,绕过 SQL 层可获得极低的延迟 使用 Java 和 JPA 的 NoSQL 原生 Java 和 JPA 访问,绕过 SQL 层访问企业、Web 和电信服务 使用 REST 的 NoSQL 原生 HTTP/REST 访问,使用 Apache mod_ndb 绕过 SQL 层 结构和非结构式的数据模型 默认使用完全结构化的关系数据模型。使用 Memcached API,每个键值都写入相同的表中,每个键值对默认存储在一行中,也可以配置为写入多个现有表中。 99.999% 的可用性和数据完整性 符合 ACID 要求、事务型 MySQL Cluster 全面支持 ACID(独立性、一致性、隔离性、持久性)事务。 外键约束(Constraint) MySQL Cluster 自动在表间实施参照完整性。 分布式、无共享架构 集群中的每个节点都是冗余的,可以放在单独的主机上,从而确保在发生进程、硬件或网络故障时的持续可用性。 无单点故障 每个节点都有自己的磁盘和内存,因此消除了共享组件(如存储)带来的故障风险。 同步复制 每个数据节点内的数据都同步复制到至少一个其他节点上。如果某个节点发生故障,至少有另一个数据节点存储着相同的信息。 亚秒级自动故障切换 MySQL Cluster 的心跳机制可立即检测到任何故障,并自动故障切换到集群中的其他节点,通常在一秒钟内完成,不会中断提供给客户端的服务。 自我修复式恢复 故障节点能自动重新启动并在重新加入集群前与其他节点重新同步,从而实现自我修复,此过程对应用程序完全透明。 跨地域复制 将一个集群从一个数据中心复制到另一个数据中心,从而实现灾难恢复并降低网络延迟的影响。每个集群都能接受写操作,并在内部处理冲突,从而确保集群间的一致性。 多站点集群 数据节点可以分散到多个数据中心,因此发生节点故障时可以在不同站点之间同步复制并进行自动故障切换。 MySQL Cluster 联机操作 联机模式更新 支持联机添加列和表,以及联机添加和删除索引。 联机扩展 可以按需向正在运行的集群添加节点以提高性能和容量。可以向集群中动态添加应用节点,也可以从集群中动态删除应用节点,非常灵活。 联机维护 支持在线对底层硬件、操作系统和 MySQL Cluster 进程的升级和补丁安装。 联机备份 备份文件是数据库的一致的集群范围快照,可以存档并复制到安全的远程位置。 部署灵活性 虚拟机部署 可以在内部平台和云平台上部署虚拟机环境。 内存中和基于磁盘的表 表可以配置为只能在内存中管理(完全记录并刷新到到持久存储中)或存储在磁盘上。 商用硬件 可以用本地存储在商用硬件间扩展 MySQL Cluster。无需共享磁盘。 安全和审计 MySQL 企业级安全性* 为连接到集群的 MySQL Server 提供了随时可用的外部身份验证模块,使其可以轻松集成到现有安全基础架构中。 MySQL 企业级审计* 提供了一个简单易用、基于策略的审计解决方案,可帮助组织实施更加严格的安全控制和满足法规要求。 管理和监视 MySQL Cluster Manager* MySQL Cluster Manager 可自动完成常见管理任务,从而简化了 MySQL Cluster 数据库的创建和管理。 MySQL Enterprise Monitor* 使您能够了解集群运行状况的概况,在潜在问题对系统造成影响前发出警报。 概念 MySQL Cluster是基于无共享的可由多台服务器组成的、同时对外提供数据管理服务的分布式集群系统。通过合理的配置,可以将服务请求在多台物理机上分发实现负载均衡 ;同时内部实现了冗余机制,在部分服务器宕机的情况下,整个集群对外提供的服务不受影响,从而能达到99.999%以上的高可用性。 MySQL Cluster设计之初出于性能考虑,将数据完全存放在内存当中,因此MySQL Cluster可以当作一种分布式的内存数据库。随着MySQL Cluster技术的成熟和需求的增加,目前MySQL Cluster已支持磁盘存储,可以指定数据表存储在磁盘上,减少MySQL Cluster集群对内存的需求,从而实现存储更大的容量。 MySQL Cluster MySQL从结构看,由3类节点(计算机或进程)组成,分别是: 管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。 配置文件为: config.ini 数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。 配置文件为:my.ini SQL节点:这是用来访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。 配置文件为:my.ini “MySQL实验室”推荐使用MySQL Cluster 7.x版本。MySQL Cluster 7.x拥有在线增加节点、多线程等新特性。 工作原理 管理服务器(MGM节点)负责管理 Cluster配置文件和 Cluster日志。 Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster日志。 安装 节点说明: MySQL Cluster 表21.4示例群集中节点的网络地址 每个NDB群集主机必须安装正确的可执行程序。 运行SQL节点的主机必须在其上安装MySQL服务器二进制文件(mysqld)。 管理节点需要管理服务器守护进程(ndb_mgmd); 数据节点需要数据节点守护进程(ndbd或ndbmtd)。 没有必要在管理节点主机和数据节点主机上安装MySQL服务器二进制文件。建议您还在管理服务器主机上安装管理客户端(ndb_mgm)。 【准备工作】 以下安装配置仅供参考! 1、mysql-cluster-gpl-7.5.10-winx64 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 config.ini 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 2、启动每个数据节点: 在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 * fromT_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是两个不同的版本,用之前的版本是不可能搭建成功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 然后按照第一个解决方案就可以解决。 (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐