mysql集群搭建部署

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 应用场景 数据存储在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数据库一样使用,还需要以下一步操作。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
50 3
|
1月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
46 0
|
3月前
|
Kubernetes 关系型数据库 MySQL
k8s快速部署MySQL单机
k8s快速部署MySQL单机
|
2月前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
64 3
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
170 1
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
87 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
39 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
48 0
下一篇
无影云桌面