MySQL Cluster集群安装及使用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

MySQL Cluster MySQL集群

Linux最新版本7.3.2


文件 大小 md5
mysqlcluster-7.3.2-linux-x32.tar.gz 431.0MB 03093541b6416fc93935750d614d875b
mysqlcluster-7.3.2-linux-x64.tar.gz 441.8MB 330c71a87fbf8f0468ec9c5e0ad6e794

 官方下载地址:http://dev.mysql.com/downloads/cluster/

Window最新版本7.3.2

文件 大小 md5
mysqlcluster-7.3.2-windows-x32.msi 100.2MB 9d25735d7e8af1a2e805f9a1fecc3a1f
mysqlcluster-7.3.2-windows-x64.msi 95.5MB 6fe30e2045f074f471761cb17f0c3d1c

基本概念:

“NDB” 是一种“内存中”的存储引擎,也是事务型存储引擎,具备ACID属性。

管理(MGM)节点:负责管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。

数据节点:用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。数据节点是用命令“ndbd”启动的。

SQL节点:用来访问 Cluster数据的节点。也就是Mysql服务,可以使用service mysqld start启动。

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

090506799.jpg

集群配置概述:

安装版本:mysql cluster 7.3.2

操作系统 :centos6.3(X64)

软件名称 :mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (通用版)

管理节点IP:192.168.0.202

数据节点-SQL节点IP:192.168.0.203

数据节点-SQL节点IP:192.168.0.204

安装依赖包:yum install -y glibc perl libaio-devel

x32位系统要安装兼容库组:yum groupinstall “Compatibility libraries”

一、管理节点安装配置

1、安装mysql-cluster

1
2
3
4
5
6
7
8
groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql-cluster
chown  -R root.mysql  /usr/local/mysql/
chown  -R mysql.mysql  /usr/local/mysql/data/
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &   #初始化数据库
cp  -rf  /usr/local/mysql/bin/ndb_mgm /usr/local/bin/  #复制ndb节点管理命令到本地,方便使用

2、修改mysql主配置文件

1
2
3
4
5
6
7
8
9
10
11
12
vi  /etc/my .cnf
[MYSQLD]
  user = mysql
  socket =  /tmp/mysql .sock
  basedir =  /usr/local/mysql  #安装目录
  datadir =  /usr/local/mysql/data  #数据库存放目录
  character- set -server=UTF8
  ndbcluster  #运行NDB存储引擎
  ndb-connectstring=192.168.0.202
  lower_case_table_names=1  #表名是否区分大小写1为不区分,不然linux下表名是区分大小写的
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #Mysql Cluster管理节点IP

3、创建mysql集群配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mkdir  /var/lib/mysql-cluster
vi  /var/lib/mysql-cluster/config .ini
[ndbd default]
NoOfReplicas=2  #定义在Cluster环境中相同数据的份数,最大为4
DataMemory=256M  #分配的数据内存大小,根据本机服务器内存适量来分配
IndexMemory=256M  #设定用于存放索引(非主键)数据的内存段大小
#一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,两者任何一个达到限制数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。
[ndb_mgmd]
nodeid=1
hostname =192.168.0.202
datadir= /var/lib/mysql-cluster/
[ndbd]
nodeid=2
hostname =192.168.0.203
datadir= /usr/local/mysql/data
[ndbd]
nodeid=3
hostname =192.168.0.204
datadir= /usr/local/mysql/data
[mysqld]
nodeid=4
hostname =192.168.0.203
[mysqld]
nodeid=5
hostname =192.168.0.204
保存退出!
chown  mysql.mysql  /var/lib/mysql-cluster/config .ini

二、两台数据节点和SQL节点配置相同

1、安装mysql-cluster

1
2
3
4
5
6
7
8
9
10
tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql
groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
chown  -R root.mysql  /usr/local/mysql
chown  -R mysql.mysql  /usr/local/mysql/data
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &  #初始化数据库
cp  /usr/local/mysql/support-files/mysql .server  /etc/init .d /mysqld
cp  /usr/local/mysql/support-files/medium .cnf  /etc/my .cnf
chmod  +x /etc/init .d /mysqld

2、修改mysql配置文件

1
2
3
4
5
6
7
8
9
10
11
vi  /etc/my .cnf
[MYSQLD]
user=mysql
character_set_server=utf8
ndbcluster
ndb-connectstring=192.168.0.202
default-storage-engine=ndbcluster  #设置默认是NDB存储引擎
datadir= /usr/local/mysql/data
basedir= /usr/local/mysql
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #mysql cluster 管理节点IP

三、测试(先关闭三台服务器的防火墙(IPTABLES)与 Selinux)

1、启动管理节点

1
2
3
ndb_mgmd -f  /var/lib/mysql-cluster/config .ini --initial
netstat  -tuplna |  grep  1186  #默认连接端口1186,启动成功
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1369 /ndb_mgmd

#--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时。

如果启动出现报错:把config.ini里设置的nodeid都给删除即可!

151716979.jpg

2、启动两台数据节点和SQL节点

数据节点:/usr/local/mysql/bin/ndbd --initial

SQL节点:bin/mysqld_safe --user=mysql & 或 service mysqld start

3、查看集群状态

ndb_mgm -e show #显示管理节点和数据节点则配置成功

4、创建一个数据库验证是否同步

1
2
3
4
5
6
mysql -u root -p
Mysql>create database  test ;
Mysql>use  test ;
Mysql>create table abc ( id  int) engine=ndbcluster; #指定数据库表的引擎为NDB,否则同步失败
Mysql>Insert into abc ()values (1);
Mysql> select  * from abc;

#此时看两个数据是否数据一致,如果一致说明集群已经成功!

注意事项:

1.在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。
2.NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。
3.Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访问别的Sql节点,需要在对应的Sql节点追加用户。

四、管理和维护命令

关闭mysql集群:ndb_mgm -e shutdown

重启mysql集群:ndb_mgmd -f /var/lib/mysql-cluster/config.ini

重启数据节点:/usr/local/mysql/bin/ndbd

启动SQL节点:/usr/local/mysql/bin/mysqld_safe --user=mysql & 或 service mysqld restart

查看mysql状态:ndb_mgm -e show

启动顺序:

管理节点 -> 数据节点 -> SQL节点

关闭顺序:

SQL节点 -> 数据节点 -> 管理节点

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
3月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
14天前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
89 4
MySQL源码编译安装
|
14天前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
114 4
MySQL二进制包安装
|
14天前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
215 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
14天前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
102 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
11天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
139 5
|
14天前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
190 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
14天前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
185 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
|
14天前
|
Oracle 关系型数据库 MySQL
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
本文详细介绍在Rocky、CentOS、AlmaLinux、openEuler等主流Linux系统上,通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,涵盖下载、依赖处理、rpm/yum安装、服务启动、密码设置等关键环节,适用于多种企业级环境部署需求。
324 0
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
|
14天前
|
存储 关系型数据库 MySQL
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
MySQL是一款开源关系型数据库,高性能、易用、跨平台,支持多种存储引擎,广泛应用于Web开发、企业级应用等领域。本教程介绍其特点、架构及在主流Linux系统中的安装配置方法。
298 0
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)

推荐镜像

更多