mysql集群搭建部署

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 应用场景 数据存储在mysql中,单节点存储如果数据量十分大,数据就很可能存不下。因此我们需要搭建部署mysql的集群模式,增加数据的存储量,而且提到数据库访问的并发。

应用场景

数据存储在mysql中,单节点存储如果数据量十分大,数据就很可能存不下。因此我们需要搭建部署mysql的集群模式,增加数据的存储量,而且提到数据库访问的并发。

操作步骤

1. 概述

MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1
个群集中运行多个 MySQL 服务器。

MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB Cluster 的数据节点,管理服务器,以及(可能存在的)专门的数据访问程序。

2. 系统环境

2.1 拓扑结构

Mysql集群拓扑结构如下所示:

这里写图片描述

节点环境说明:

节点/hostname IP地址 系统 作用
管理节点 /node1 192.168.202.20 CentOS 6.6 64位 管理数据节点、sql节点
数据节点 /node2 192.168.202.21 CentOS 6.6 64位 存储数据
数据节点 /node3 192.168.202.22 CentOS 6.6 64位 存储数据
数据节点 /node4 192.168.202.23 CentOS 6.6 64位 存储数据
数据节点 /node5 192.168.202.24 CentOS 6.6 64位 存储数据
Sql节点 /sql1 192.168.202.7 CentOS 6.6 64位 给客户端提供sql服务
Sql节点 /sql2 192.168.202.8 CentOS 6.6 64位 给客户端提供sql服务

2.2 服务器配置

服务端硬件配置要求
CPU Xeon 2.4GHz 双CPU处理器
内存 12G +
硬盘 300G +
操作系统 CentOS 6.6×64
数量 7台服务器,能互相通信

3. 安装配置

3.1 准备工作

下载MySQL安装包,放于每台服务器的/usr/local/src目录下。

3.2 环境清理

安装服务端软件之前,务必检查当前服务器是否“干净”,即计算机在安装完操作系统和更新过重要补丁后没有安装过其他版本MySQL软件(解压缩等基本工具除外);

如果之前已经安装过服务端相关MySQL软件,请务必按照软件卸载说明卸载删除之前的版本。 具体操作如下:

清理之前操作系统自带的MySQL安装:
 # yum -y remove mysql
然后使用如下命令查找mysql包:
 # rpm -qa | grep mysql*
如果查找到,例如:mysql-libs-5.1.71-1.el6.x86_64,我们要对1个剩余的M与SQL包进行手动删除清理:
 # rpm  -e  --nodeps  mysql-libs-5.1.71-1.el6.x86_64

3.3 关闭防火墙和selinux

关闭防火墙
 # chkconfig iptables off
关闭 selinux
 # vim /etc/selinux/config  #(改为SELINUX=disabled)保存退出,
重启服务器
 # reboot

3.4 软件安装

由于软件安装包在/usr/local/src/目录下,需要切换到该目录进行操作。
 # cd /usr/local/src/
 # tar  -xzvf  mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz
 # mv /usr/local/src/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64/*  /usr/local/src/mysql
注:第二个语句,解压mysql压缩包,并不一定解压到当前/usr/local/src/目录下,可能默认安装到/root/目录下,所以第三个语句要适当的改变。

3.5 新建mysql用户及用户组

按如下命令,一步步执行,进行新建mysql用户及用户组:
 # groupadd mysql
 # useradd -g mysql mysql
 # chown -R mysql:mysql /usr/local/src/mysql
 # chown -R root /usr/local/src/mysql
 # chgrp -R mysql /usr/local/src/mysql

3.6 初始化mysql集群

 # cd /home/data/usr/local/mysql
 # ./scripts/mysql_install_db  --user=mysql --basedir=/usr/local/src/mysql --datadir=/usr/local/src/mysql/data
安装目录是datadir=/usr/local/src/mysql/data

3.7 配置管理节点node1

注:删除自带的 /etc/my.cnf

切记:一定要删除掉! 因为ndb_mgmd启动的时候,也会加上/etc/my.cnf的配置内容,干扰我们,所以要删除它

具体操作如下:
 # rm -rf /etc/my.cnf
新建配置文件存放目录:
 # mkdir /usr/local/src/mysql/etc
 # chown mysql:mysql /usr/local/src/mysql/etc
创建配置文件 config.ini
 # vim //usr/local/src/mysql/etc/config.ini
config.ini内容如下:

[ndb_mgmd default]
datadir = /usr/local/src/mysql/data
[ndbd default]
NoOfReplicas = 2 #
DataMemory = 6G #
IndexMemory = 2G #
datadir = /usr/local/src/mysql/data
Default value = 20
Changed it to TimeBetweenLocalCheckpoints =6
Default value = 16M
Changed it to FragmentLogFileSize=256M
MaxNoOfTables = 10000
MaxNoOfAttributes = 100000
MaxNoOfOrderedIndexes = 10000
FileSystemPath =/usr/local/src/mysql/data
[ndb_mgmd]
NodeId = 1
HostName = 192.168.202.20
[ndbd]
NodeId = 2
HostName = 192.168.202.21
[ndbd]
NodeId = 3
HostName = 192.168.202.22
[ndbd]
NodeId = 4
HostName = 192.168.202.23
[ndbd]
NodeId = 5
HostName = 192.168.202.24
[mysqld]
NodeId = 6
HostName = 192.168.202.7
[mysqld]
NodeId = 7
HostName = 192.168.202.8
[mysqld]
[mysqld]
[mysqld]
[mysqld]

设置完成,保存退出!

3.8 配置数据节点和sql节点

注:所有的sql节点和data节点的配置文件都是一样的,都指向主节点,接受主节点管理。

拷贝文件
 # cp -rf /usr/local/src/mysql/support-files/mysql.server /etc/init.d/mysqld

mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,修改节点上的my.cnf配置文件,内容如下:

[mysqld]
max_connections=100
datadir=/usr/local/src/mysql/data
basedir=/usr/local/src/mysql
ndbcluster
lower_case_table_names=1
innodb_lock_wait_timeout=500
ndb-connectstring=192.168.202.20
port=3306
[mysql_cluster]
ndb-connectstring=192.168.202.20
[ndb_mgm]
connect-string=192.168.202.20
[ndb_mgmd]
config-file=/usr/local/src/mysql/etc/config.ini

配置完成,保存退出!
MySql集群到此已经配置完成!下面我们就可以对它进行使用!

4. 集群启动

注:集群搭建完毕后,启动节点,必须按照如下启动顺序:

先启动管理节点(168.202.20 node1)

然后启动数据节点(192.168.202.21~192.168.202.24,node2 node3 node4 node5分别开启)

最后启动sql节点(192.168.202.7,192.168.202.8,sql1 sql2),具体启动操作如下所示。

4.1 启动管理节点

注:–initial 首次加载/usr/local/src/mysql/etc/config.ini文件,其它时候不要加,除非是在备份、恢复或配置变化后重启时,不然数据就清空。

初始化启动方式
 # /usr/local/src/mysql/bin/ndb_mgmd  -f  /usr/local/src/mysql/etc/config.ini --initial

正常启动方式
 # /usr/local/src/mysql/bin/ndb_mgmd  -f  /usr/local/src/mysql/etc/config.ini

查看ndb_mgmd是否启动
 #  ps -ef | grep ndb_mgmd

查看集群状态
 # /usr/local/src/mysql/bin/ndb_mgm
-- NDB Cluster -- Management Client --
 # ndb_mgm> show

关闭集群
 # ndb_mgm> shutdown

退出ndb-mgm
 # ndb_mgm> exit

4.2 启动数据节点

注:安装后第一次启动数据节点时要加上–initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时。

初始化启动方式
 # /usr/local/src/mysql/bin/ndbd  --initial

正常启动:
 # /usr/local/src/mysql/bin/ndbd

4.3 启动sql节点

启动 SQL 节点(等数据节点启动完后等待30秒后执行)
 # service mysqld start

关闭 SQL 节点
 # service mysqld stop

重启 SQL 节点
 # service mysqld restart

检验mysql是否运行
 # service mysqld status

到此,mysql集群已启动完毕,但是要像本地单机的mysql数据库一样使用,还需要以下一步操作。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
7月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
789 6
|
7月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
991 4
|
12月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
563 41
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
206 3
|
9月前
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
435 0
|
12月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
730 17
|
12月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
438 18
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
12月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
327 10

推荐镜像

更多