MYSQL数据库Windows Server 2003 下配置 MySQL 集群(Cluster)教程

《MYSQL数据库Windows Server 2003 下配置 MySQL 集群(Cluster)教程》要点:
本文介绍了MYSQL数据库Windows Server 2003 下配置 MySQL 集群(Cluster)教程,希望对您有用。如果有疑问,可以联系我们。

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

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

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

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

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

MySQL 群集分为三种节点:管理节点,数据节点和SQL节点.MYSQL学习

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

数据节点:主要是对数据的存储,不提供其他的服务.
SQL节点:主要是对外提供SQL功能,类似一台普通的 MySQL Server.MYSQL学习

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

MYSQL数据库Windows Server 2003 下配置 MySQL 集群(Cluster)教程

MYSQL学习


一、软件下载机器操作环境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位版本的、免安装的二进制版本.MYSQL学习

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

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

第一台机器,IP 为 10.0.0.201,作为管理节点(MGM),SQL节点1(SQL1),数据节点1(NDBD1).
第二台机器,IP 为 10.0.0.202,作为SQL节点2(SQL2),数据节点2(NDBD2).MYSQL学习

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

二,配置管理节点:MYSQL学习

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

代码如下:

    [NDBD DEFAULT]
    NoOfReplicas=1

    [MYSQLD DEFAULT]MYSQL学习

    [NDB_MGMD DEFAULT]MYSQL学习

    [TCP DEFAULT]MYSQL学习

    # Managment Server
    [NDB_MGMD]
    hostname=10.0.0.201MYSQL学习

    # Storage Engines
    [NDBD]
    hostname=10.0.0.201
    datadir= D:\dataMYSQL学习

    [NDBD]
    hostname=10.0.0.202
    datadir= D:\dataMYSQL学习

    # SQL Engines
    [MYSQLD]
    hostname=10.0.0.201MYSQL学习

    [MYSQLD]
    hostname=10.0.0.202
MYSQL学习


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

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

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

    在2台机器上,分别依次操作.MYSQL学习

    解压 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 中.MYSQL学习

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

代码如下:

    mysqld.exe -install mysql

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

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

    建立 D:\tmp 文件夹.MYSQL学习

四、配置SQL节点和数据节点:MYSQL学习

    在2台机器上,分别依次操作.MYSQL学习

    建立文件夹 D:\data.MYSQL学习

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

代码如下:

    #SQL群集节点
    ndbcluster
    ndb-connectstring=10.0.0.201

    有了 ndbcluster 语句,mysql 服务将作为群集的 SQL 节点启动.mysqld.exe 命令带参数 Cndbcluster 运行是一样的效果.
    mysql 服务连接到数据节点的 2202 默认端口,或自动分配的别的可用端口.
    (问题:SQL节点如何获得数据节点的IP地址?是否通过连接管理节点,取得所有数据节点的IP地址的列表?)
    这里的连接字符串的值在 MySQL 服务启动时使用,用于连接到管理节点.

    在末尾加语句:
MYSQL学习

代码如下:

    #NDB集群节点
    [mysql_cluster]
    ndb-connectstring=10.0.0.201

    注:好像以下形式也可:
代码如下:

    [ndbd]
    ndb-connectstring=10.0.0.201

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

五,启动群集各服务器MYSQL学习

    启动顺序依次是:管理节点、数据节点、SQL节点.MYSQL学习

    1,启动管理节点MYSQL学习

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

代码如下:

    C:\>ndb_mgmd.exe -f d:\mysql-cluster.conf\config.ini Cconfigdir=d:\mysql-cluster

    注:如果不带 Cconfigdir=d:\mysql-cluster 参数,将默认为 C:\mysql\mysql-cluster 文件夹.

    屏幕显示:
MYSQL学习

代码如下:

    C:\>ndb_mgmd.exe -f d:\mysql-cluster.conf\config.ini Cconfigdir=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窗口运行命令.MYSQL学习

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

代码如下:

    ndbd.exe Cinitial

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

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

    3,启动SQL节点MYSQL学习

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

六、群集管理MYSQL学习

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

代码如下:

    C:\>ndb_mgm.exe
    ― NDB Cluster ― Management Client C
    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)MYSQL学习

    [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)MYSQL学习

    ndb_mgm>
MYSQL学习


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

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

代码如下:

    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)MYSQL学习

    [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)MYSQL学习

    ndb_mgm>
MYSQL学习


    关闭群集的DOS命令:
代码如下:

    ndb_mgm -e shutdown

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

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

    关闭SQL节点的 mysqld 服务:
MYSQL学习

代码如下:

    C:\>net stop mysql,或:

    C:\>mysqladmin -u root shutdown
MYSQL学习

七、测试MYSQL学习

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

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

    测试实例:MYSQL学习

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

代码如下:

    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;

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

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

    1,还可以人为停止某一个数据节点(Ctrl+C中断DOS命令ndbd.exe,停止该服务),看看所有的 SQL 节点是不是能正常工作.
    2,在某一个数据节点停止后,进行数据库操作.然后重新开启该数据节点,看看群集中的所有的 SQL 节点能不能得到完整的数据.MYSQL学习

八、常见问题与扩展MYSQL学习

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示: “兵马未动粮草先行”,看完了相关的配置之后,我们先来创建一张测试表和一些测试数据。 -- 如果存在 person 表先删除 DROP TABLE IF EXISTS person; -- 创建 person 表,其中
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.com/wzh2010/category/1859594.html "合辑地址:MySQL全面瓦解") # 1 为什么需要数据库备份 - 灾难恢复:当发生数据灾难的时候,需要对损坏的数据进行恢复和
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈。为了解决这个问题,行业先驱门充分发扬了分而治之的思想,对大库表进行分割,
然后实施更好的控制和管理,同时使用多台机器的CPU、内存、存储,提供更好的性能。而分治有两种实现方式:垂直拆
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括了 垂直拆分(Scale Up 纵向扩展)和 水平拆分(Scale Out 横向扩展) ,同时简要整理了水平分区的几种策略,现在来回顾一下。 2 水平分区的5种策略 2.1 Hash(哈希) 这种策略是通过对表的一个或多个列的Ha
navicat查看某个表的所有字段的详细信息 navicat设计表只能一次查看一个字段的备注信息,那怎么才能做到一次性查询表的信息呢?SELECT COLUMN_NAME,COLUMN_COMMENT,COLUMN_TYPE,COLUMN_KEY FROM information_schema.CO
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52768613前言:数据库每天的数据不断增多,自动删除机制总体风险太大,想保留更多历史性的数据供查询,于是从小的hbase换到大的hbase上,势在必行。今天记录下这次数据仓库迁移。看下Agenda:彻底卸载MySQL安装MySQL_linux服务器进行数据迁移
文章浏览阅读488次。恢复步骤概要备份frm、ibd文件如果mysql版本发生变化,安装回原本的mysql版本创建和原本库名一致新库,字符集都要保持一样通过frm获取到原先的表结构,通过的得到的表结构创建一个和原先结构一样的空表。使用“ALTER TABLE DISCARD TABLESPACE;”命令卸载掉表空间将原先的ibd拷贝到mysql的仓库下添加用户权限 “chown . .ibd”,如果是操作和mysql的使用权限一致可以跳过通过“ALTER TABLE IMPORT TABLESPACE;”命令恢_alter table discard tablespace
文章浏览阅读225次。当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNEDVARCHAR的长度只分配_开发项目 浏览记录表 过大怎么办
文章浏览阅读1.5k次。Mysql创建、删除用户MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户登录MYSQL:@>mysql -u root -p@>密码创建用户:mysql> insert into mysql.user(Host,User,Password) values("localhost_删除mysql用户组
MySQL是一种开源的关系型数据库管理系统,被广泛应用于各类应用程序的开发中。对于MySQL中的字段,我们需要进行数据类型以及默认值的设置,这对于数据的存储和使用至关重要。其中,有一个非常重要的概念就是MySQL字段默认字符串。 CREATE TABLE `my_...
MySQL是一个流行的开源关系型数据库管理系统,广泛应用于Web应用程序开发、数据存储和管理。在使用MySQL时,正确设置字符集非常重要,以确保数据的正确性和可靠性。 在MySQL中,字符集表示为一系列字符和字母的集合。MySQL支持多种字符集,包括ASCII、UTF...
MySQL存储函数 n以内偶数 MySQL存储函数能够帮助用户简化操作,提高效率,常常被用于计算和处理数据。下面我们就来了解一下如何使用MySQL存储函数计算n以内的偶数。 定义存储函数 首先,我们需要定义一个MySQL存储函数,以计算n以内的偶数。下...
MySQL是一个流行的关系型数据库管理系统,基于客户机-服务器模式,可在各种操作系统上运行。 MySQL支持多种字符集,不同的字符集包括不同的字符,如字母、数字、符号等,并提供不同的排序规则,以满足不同语言环境的需求。 //查看MySQL支持的字符集与校对规...
在MySQL数据库中,我们有时需要对特定的字符串进行截取并进行分组统计。这种操作对于数据分析和报表制作有着重要的应用。下面我们将讲解一些基本的字符串截取和分组统计的方法。 首先,我们可以使用substring函数对字段中的字符串进行截取。假设我们有一张表stude...
MySQL提供了多种字符串的查找函数。下面我们就一一介绍。 1. LIKE函数 SELECT * FROM mytable WHERE mycolumn LIKE 'apple%'; 其中"apple%"表示以apple开头的字符串,%表示任意多个字符...
MySQL 是一种关系型数据库管理系统,广泛应用于各种不同规模和类型的应用程序中。在 MySQL 中,处理字符串数据是很常见的任务。有时候,我们需要在字符串的开头添加一定数量的 0 ,以达到一定的位数。比如,我们可能需要将一个数字转换为 4 位或 5 位的字符串,不足的...
MySQL是一种流行的关系型数据库管理系统,支持多种数据类型。以下是MySQL所支持的数据类型: 1. 数值型数据类型: - TINYINT 保存-128到127范围内的整数 - SMALLINT 保存-32768到32767范围内的整数 - MEDIU...
MySQL中存储Emoji表情字段类型 在现代互联网生态中,表情符号已经成为人们展示情感和思想的重要方式之一,因此将表情符号存储到数据库中是一个经常出现的问题。MySQL作为最流行的开源关系型数据库管理系统之一,也需要能够存储和管理这些表情符号的字段类型。 UT...
MySQL是一种关系型数据库管理系统。在MySQL数据库中,有多种不同的数据类型。而其中,最常见的数据类型之一就是字符串类型。在MySQL中,字符串类型的数据通常会被存储为TEXT或VARCHAR类型。 首先,让我们来看一下VARCHAR类型。VARCHAR是My...
MySQL字符串取整知识详解 MySQL是一种开源的关系型数据库管理系统,广泛应用于各个领域。在使用MySQL过程当中,我们经常需要对数据进行取整操作。本文将介绍如何使用MySQL字符串取整来处理数据取整问题。 什么是MySQL字符串取整? MySQL...