iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql中如何搭建集群
  • 900
分享到

mysql中如何搭建集群

2024-04-02 19:04:59 900人浏览 安东尼
摘要

Mysql中如何搭建集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mysql 群集是 Mysql 适合于分布式计算环境的高可用、高冗余

Mysql中如何搭建集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

mysql 群集是 Mysql 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器。在 MySQL 5.0 及以上的二进制版本中,以及与最新的 linux 版本兼容的 RPM 包中提供了该存储引擎。

    MySQL 群集是一种技术,该技术允许在无共享的系统中部署“内存中”和“磁盘中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB Cluster 的数据节点,管理服务器,以及(可能存在的)专门的数据访问程序。

    管理服务器(MGM节点)负责管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每个节点从管理服务器检索配置数据。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster 日志。

    目前能够运行 MySQL Cluster 的操作系统有 Linux、Mac OS X 和 Solaris,最新的版本已经支持 windows 操作系统。

    MySQL 群集的数据节点之间的通信是不加密的,并且需要高速的带宽,所以建议把群集建立在一个高速局域网内,不建议跨网段、跨公网的部署这种系统体系。

    MySQL 群集分为三种节点:管理节点,数据节点和SQL节点。

    管理节点:主要用于管理各个节点,能够通过命令对某个节点进行重启、关闭、启动等操作。也能够监视全部节点的工作状态。

    数据节点:主要是对数据的存储,不提供其他的服务。

    SQL节点:主要是对外提供SQL功能,类似一台普通的 MySQL Server

    而SQL节点和数据节点可以是同一台机器,也就是说这台机器即是SQL节点也是数据节点。它们只是逻辑关系上的划分,实际部署时,甚至所有的阶段都可以位于同一台物理机器上,只是配置较复杂些。

 mysql中如何搭建集群



    一、软件下载机器操作环境

    配置 MySQL 群集必需使用其群集版本,注意和 MySQL Server 版本的区别。本文以 Windows 平台下的 MySQL 群集版本 MySQL Cluster 7.1.3 为例(截至2010年6月初的最高版本),这是 MySQL Server 5.1 系列版本之一,添加了群集的功能。下载地址为:Http://dev.mysql.com/downloads/cluster,选择
mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件,这是一个 for Windows 32位版本的、免安装的二进制版本。

    根据自己的操作系统的位数,也可以选择 64 位版本的。还有一个 27.2M 的 Windows(x86, 32-bit) 版本,下载下来需要自己编译,有经验的高级用户可以选用。

    本实验在 2 台安装 Windows Server 2003(sp2) 的机器上进行。节点分配及 IP 配置如下:

    第一台机器,IP 为 10.0.0.201,作为管理节点(MGM),SQL节点1(SQL1),数据节点1(NDBD1)。

    第二台机器,IP 为 10.0.0.202,作为SQL节点2(SQL2),数据节点2(NDBD2)。

    管理节点最好不要与数据节点部署在同一台服务器上,否则可能会因为该数据节点服务器的当机,而导致管理节点服务器的问题,从而导致整个群集系统的崩溃。

    二,配置管理节点:

    在第一台机器上,建文件夹 D:/mysql-cluster,在其下建立文件 config.ini,内容如下:

    [NDBD DEFAULT]

    NoOfReplicas=1

    [MYSQLD DEFAULT]

    [NDB_MGMD DEFAULT]

    [tcp DEFAULT]

    # Managment Server

    [NDB_MGMD]

    hostname=10.0.0.201

    # Storage Engines

    [NDBD]

    hostname=10.0.0.201

    datadir= D:/data

    [NDBD]

    hostname=10.0.0.202

    datadir= D:/data

    # SQL Engines

    [MYSQLD]

    hostname=10.0.0.201

    [MYSQLD]

    hostname=10.0.0.202

    Cluster 管理节点的默认端口是1186,数据节点的默认端口是 2202。从 MySQL 5.0.3开始,该限制已被放宽,Cluster 能够根据空闲的端口自动地为数据节点分配端口。如果你的版本低于5.0.22,请注意这个细节。

    Cluster 管理节点作为一个服务端(通过运行 db_mgmd.exe 程序读取本配置文件来启动),通过本机上的客户端 ndb_mgm.exe 来连接和操作。

    三、配置 MySQL 数据库服务器:

    在2台机器上,分别依次操作。

    解压 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件到 D:/mysql-cluster-gpl-noinstall-7.1.3-win32 文件夹下,把 D:/mysql-cluster-gpl-noinstall-7.1.3-win32/bin 加到 Windows 的系统 path 中。

    打开DOS命令行窗口(配置完系统path后,在再次打开新的命令行窗口),执行以下语句,让 MySQL 作为 Windows 服务运行:

    mysqld.exe -install mysql

    再在 Windows 服务管理界面里,配置 mysql 服务,手动启动(不要自动启动)。

    把 D:/mysql-cluster-gpl-noinstall-7.1.3-win32 下的某个备用的配置文件(例如my-small.ini)复制为 my.ini 文件。

    建立 D:/tmp 文件夹。

    四、配置SQL节点和数据节点:

    在2台机器上,分别依次操作。

    建立文件夹 D:/data。

    编辑 NySQL 配置文件 D:/mysql-cluster-gpl-noinstall-7.1.3-win32/my.ini,在 [mysqld] 节末尾加语句:

    #SQL群集节点

    ndbcluster

    ndb-connectstring=10.0.0.201

    有了 ndbcluster 语句,mysql 服务将作为群集的 SQL 节点启动。mysqld.exe 命令带参数 –ndbcluster 运行是一样的效果。

    mysql 服务连接到数据节点的 2202 默认端口,或自动分配的别的可用端口。

    (问题:SQL节点如何获得数据节点的IP地址?是否通过连接管理节点,取得所有数据节点的IP地址的列表?)

    这里的连接字符串的值在 MySQL 服务启动时使用,用于连接到管理节点。

    在末尾加语句:

    #NDB集群节点

    [mysql_cluster]

    ndb-connectstring=10.0.0.201

    注:好像以下形式也可:

    [ndbd]

    ndb-connectstring=10.0.0.201

    这里的连接字符串的值在数据节点启动时使用,用于连接到管理节点。

    五,启动群集各服务器

    启动顺序依次是:管理节点、数据节点、SQL节点。

    1,启动管理节点

    在第一台服务器的DOS窗口,运行命令:

    C:/>ndb_mgmd.exe -f d:/mysql-cluster.conf/config.ini –configdir=d:/mysql-cluster

    注:如果不带 –configdir=d:/mysql-cluster 参数,将默认为 C:/mysql/mysql-cluster 文件夹。

    屏幕显示:

    C:/>ndb_mgmd.exe -f d:/mysql-cluster.conf/config.ini –configdir=d:/mysql-cluster

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — NDB Cluster Management Server. mysql-5.1.44 ndb-7.1.3

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — Reading cluster configuration from ‘d:/mysql-cluster.conf/config.ini’

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — Got initial configuration from ‘d:/mysql-cluster.conf/config.ini’, will try to set it when all ndb_mgmd(s) started

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — Mgmt server state: nodeid 1 reserved for ip 10.0.0.201, m_reserved_nodes 1.

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — Id: 1, Command port: *:1186

    ==INITIAL==

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — Starting initial configuration change

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — Configuration 1 commited

    2010-06-10 01:16:57 [MgmtSrvr] INFO     — Config change completed! New generation: 1

    ==CONFIRMED==

    2,启动数据节点

    分别在2台服务器的DOS窗口运行命令。

    第一次,或初始化群集节点时,运行命令:

    ndbd.exe –initial

    初始化之后,只运行 ndbd.exe 即可。若带参数 –initial 运行,将使正常运行的群集系统中,数据节点的数据全部丢失。

    数据节点依赖管理节点服务器,进行数据的自动复制和同步,使各个数据节点的数据保持一致,并在某个数据节点意外关闭又恢复后,进行数据的恢复重建。

    3,启动SQL节点

    有了 ndbcluster 语句,启动 mysql 服务,就启动了SQL节点。应在前2种节点启动后,分别在2台服务器上进行。

    六、群集管理

    在所有的数据节点和SQL节点未启动之前,运行群集管理节点服务的客户端 ndb_mgm.exe,只能获得以下信息:

    C:/>ndb_mgm.exe

    — NDB Cluster — Management Client –

    ndb_mgm> show

    Cluster Configuration

    ———————

    [ndbd(NDB)]     2 node(s)

    id=2 (not connected, accepting connect from 10.0.0.201)

    id=3 (not connected, accepting connect from 10.0.0.202)

    [ndb_mgmd(MGM)] 1 node(s)

    id=1    @10.0.0.201  (mysql-5.1.44 ndb-7.1.3)

    [mysqld(api)]   2 node(s)

    id=4 (not connected, accepting connect from 10.0.0.201)

    id=5 (not connected, accepting connect from 10.0.0.202)

    ndb_mgm>

    说明数据节点、SQL节点均未连接到管理节点服务。

    在所有的数据节点和SQL节点正确启动之后,将获得以下信息:

    ndb_mgm> show

    Cluster Configuration

    ———————

    [ndbd(NDB)]     2 node(s)

    id=2    @10.0.0.201  (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)

    id=3    @10.0.0.202  (mysql-5.1.44 ndb-7.1.3, Nodegroup: 1)

    [ndb_mgmd(MGM)] 1 node(s)

    id=1    @10.0.0.201  (mysql-5.1.44 ndb-7.1.3)

    [mysqld(API)]   2 node(s)

    id=4    @10.0.0.201  (mysql-5.1.44 ndb-7.1.3)

    id=5    @10.0.0.202  (mysql-5.1.44 ndb-7.1.3)

    ndb_mgm>

    关闭群集的DOS命令:

    ndb_mgm -e shutdown

    或在 ndb_mgm 环境下执行 shutdown 命令。

    以上命令或关闭管理节点服务和所有的数据节点。随意、强行关闭群集系统(关机或关闭进程),会导致数据没有全部写回磁盘而导致的数据丢失。

    关闭SQL节点的 mysqld 服务:

    C:/>net stop mysql,或:

    C:/>mysqladmin -u root shutdown

    七、测试

    正常运行的 MySQL 群集系统,通过SQL节点可以对数据节点进行数据库操作,各数据节点可以自动进行数据同步。某一个数据节点关闭后,不影响SQL节点的使用。某些数据节点 出错后,可以进行恢复。需要注意的是,SQL节点建立数据库时,必须选择“ndbcluster”数据库引擎。如果不选择“ndbcluster”引擎, 建立的数据库将不会进入MySQL群集系统中,但是可以独立使用。

    另外,每个 NDB 表必须有一个主键。如果在创建表时未定义主键,NDB Cluster 存储引擎将自动生成隐含的主键。该隐含的键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见。

    测试实例:

    在某台 SQL 节点上登录 mysql,建表 city,并插入数据:

    C:/>mysql -u root test

    mysql>create table city (nId mediumint unsigned not null auto_increment primary key, sName varchar(20) not null)

          engine = ndbcluster default charset utf8;

    mysql>insert city values(1, ‘city-1′);

    mysql>insert city values(1, ‘city-2′);

    在另一台 SQL 节点上登录 mysql,从表 city 里得到记录:

    C:/>mysql -u root test

    mysql>select * from city;

    在群集系统正常工作的情况下,应当能取到先前插入的所有记录。

    另外的测试(单点故障测试):

    1,还可以人为停止某一个数据节点(Ctrl+C中断DOS命令ndbd.exe,停止该服务),看看所有的 SQL 节点是不是能正常工作。

    2,在某一个数据节点停止后,进行数据库操作。然后重新开启该数据节点,看看群集中的所有的 SQL 节点能不能得到完整的数据。

    八、常见问题与扩展

    配置和管理 MySQL 群集系统并不是一件简单的事情。由于不合理的配置导致的系统问题非常常见,比如网络故障、内存限制等,会导致仲裁体统强制关闭数据节点。

    如果机器上原来已经安装过 MySQL Server,则一定要卸载干净原来的数据库系统。注意群集系统中的 mysql.exe 程序与非群集系统的管理 Client 是不同的。

    还可以与负载均衡系统结合,以提供更强的可用性和数据存取效率。

    可能由于未知的Bug或别的原因,导致群集系统出现一些意外故障。所以建议选取版本时,选择已经得到大多数人认可的版本,不一定选取最新的版本,最新的版本往往不太稳定。当然也不要选用太陈旧的功能有限制的版本。

关于mysql中如何搭建集群问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: mysql中如何搭建集群

本文链接: https://www.lsjlt.com/news/57009.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql中如何搭建集群
    mysql中如何搭建集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余...
    99+
    2024-04-02
  • 如何搭建MySQL集群
    这篇文章给大家介绍如何搭建MySQL集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。概述MySQL Cluster 是MySQL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余...
    99+
    2024-04-02
  • CentOS 6.5中如何搭建MySQL集群7.4
    小编给大家分享一下CentOS 6.5中如何搭建MySQL集群7.4,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 各节点信息如下:管理节点:192.168....
    99+
    2024-04-02
  • mysql高可用集群如何搭建
    要搭建MySQL高可用集群,可以按照以下步骤进行操作: 选择合适的集群架构:常用的MySQL集群架构有主从复制、主备切换和主主复...
    99+
    2023-10-24
    mysql
  • Nacos集群如何搭建
    小编给大家分享一下Nacos集群如何搭建,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 一、Nacos 简介Nacos(Naming and Confi...
    99+
    2023-06-15
  • RabbitMQ集群如何搭建
    这篇文章主要讲解了“RabbitMQ集群如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RabbitMQ集群如何搭建”吧!1.前提erlang安装版本一致RabbitMQ安装版本一致以...
    99+
    2023-06-26
  • Zookeeper集群如何搭建
    这篇文章主要介绍“Zookeeper集群如何搭建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Zookeeper集群如何搭建”文章能帮助大家解决问题。一、Zookeeper原理简介ZooKeeper...
    99+
    2023-06-28
  • redis集群如何搭建
    这篇文章给大家分享的是有关redis集群如何搭建的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。介绍安装环境与版本用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master...
    99+
    2024-04-02
  • 如何搭建redis集群
    这篇文章主要讲解了“如何搭建redis集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何搭建redis集群”吧!redis集群搭建在开始redis集群搭建之前,我们先简单回顾一下redi...
    99+
    2023-06-25
  • hadoop如何搭建集群
    搭建Hadoop集群需要以下步骤:1. 确保所有节点的操作系统版本一致,并配置好网络环境。2. 在每个节点上安装Java环境,并设置...
    99+
    2023-08-16
    hadoop
  • docker中怎么搭建mysql集群
    要在Docker中搭建MySQL集群,你可以使用Docker Compose来定义和管理多个MySQL容器。以下是一个简单的示例: ...
    99+
    2024-04-02
  • Minikube如何搭建Kubernetes集群
    这篇文章主要介绍了Minikube如何搭建Kubernetes集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Minikube打开 https://github....
    99+
    2023-06-29
  • docker如何搭建redis集群
    要搭建Redis集群,可以使用Docker来进行部署。下面是一种常见的方法:1. 创建一个文件夹,在文件夹中创建一个名为`docke...
    99+
    2023-08-23
    docker redis
  • docker如何搭建kafka集群
    本文小编为大家详细介绍“docker如何搭建kafka集群”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker如何搭建kafka集群”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、原生Docker命令 ...
    99+
    2023-06-30
  • 怎么在MySQL中搭建PXC集群
    本篇文章给大家分享的是有关怎么在MySQL中搭建PXC集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、PXC 介绍1.1 PXC 简介PXC 是一套 MySQL 高可用集...
    99+
    2023-06-15
  • docker mysql集群怎么搭建
    要搭建Docker MySQL集群,可以按照以下步骤进行操作: 安装Docker:在每个节点上安装Docker引擎。 创建D...
    99+
    2023-10-27
    docker mysql
  • MySQL 5.7 主从集群搭建
    IP功能Linux版本192.168.56.136MasterCentOS 7.9192.168.56.140SlaveCentOS 7.9 一、安装前的准备 1、卸载老版本 (1)查看是否安装mariadb(centos7默认安装) 命令...
    99+
    2023-09-16
    mysql 数据库 linux
  • kubernetes之statefulset搭建MySQL集群
    目录实现步骤具体代码创建一个 StatefulSet 对象来定义mysql创建一个 headless service实现步骤 在 Kubernetes 集群中创建一个 StatefulSet 对象。创建一个 headle...
    99+
    2023-04-19
    kubernetes statefulset搭建MySQL statefulset搭建MySQL集群
  • Docker-Compose如何搭建Redis集群
    本篇内容介绍了“Docker-Compose如何搭建Redis集群”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 集群配置3主+3从由于...
    99+
    2023-07-05
  • 如何搭建Redis集群环境
    本篇文章为大家展示了如何搭建Redis集群环境,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 Redis集群环境搭建方便起见,这里集群环境的所有节点全部位于同一个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作