Linux下搭建MySQL集群

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 一、MySQL集群简介 1、什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。 数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。

一、MySQL集群简介

1、什么是MySQL集群

MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。

数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。

无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。

通过多个MySQL服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。

2、名称概念

MySQL集群有如下三层:

应用程序层:负责与mysql服务器通信的各种应用程序。

Mysql服务器层:处理SQL命令,并与NDB存储引擎通信和Mysql服务器。

NDB集群组件层:NDB集群组件有时也称数据节点,负责处理查询,然后将结果返回给mysql服务器。

其中MySQL数据库集群主要包括如下三部分:

1) SQL节点(SQL node - 下图对应为 mysqld):分布式数据库。包括自身数据和查询中心结点数据

2) 数据节点(Data node - ndbd):集群共享数据(内存中)

3) 管理服务器(Management Server - ndb_mgmd):管理集群 SQL node,Data node

拓扑结构图如下所示:

二、环境说明

1、系统环境

服务器 角色 说明
192.168.3.115 管理服务器 系统:centos 6.2 64位
192.168.3.116 数据节点、SQL节点 系统:centos 6.2 64位
92.168.3.117 数据节点、SQL节点 系统:centos 6.2 64位

注:主要是为了学习MySQL集群的环境搭建,加上资源有限,故将数据节点和SQL节点安装在一起。

2、软件环境

MySQL集群版本:

mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz

注:依据系统,在MySQL官网自行下载。

三、搭建集群(Linux环境)

1、安装集群版本

a、准备工作

不管是Management Server,还是Data node、SQL node,都需要先安装MySQL集群版本,然后根据不用的配置来决定当前服务器有哪几个角色。

安装之前准备好mysql用户和mysql用户组,

相关命令:

groupadd mysql  
useradd mysql -g mysql

为了方便测试,确定相关机器的防火墙已关闭(或者设置防火墙这几台机器之间的网络连接是畅通无阻的),

相关命令:

chkconfig iptables off 
service iptables stop

b、安装集群版本

1.上传安装包至/usr/local目录下,并解压

tar -zxvf mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz

2.重命名文件夹

mv mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64 mysql

3.授权

chown -R mysql:mysql mysql

4.切换mysql用户

su - mysql

5.安装MySQL

cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

注:所有服务器上都需要执行上述操作来安装MySQL集群版本。

2、集群配置

a、管理节点

1.root用户下,创建目录和配置文件

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vim config.ini

config.ini配置信息如下:

[NDBD DEFAULT]
NoOfReplicas=2

[NDB_MGMD]
#设置管理节点服务器
nodeid=1
HostName=192.168.3.115
DataDir=/var/lib/mysql-cluster

[NDBD]
id=2
HostName=192.168.3.116
DataDir=/usr/local/mysql/data

[NDBD]
id=3
HostName=192.168.3.117
DataDir=/usr/local/mysql/data

[MYSQLD]
id=4
HostName=192.168.3.116
[MYSQLD]
id=5
HostName=192.168.3.117

#必须有空的mysqld节点,不然数据节点断开后启动有报错
[MYSQLD]
id=6
[mysqld]
id=7

2.授权

chown -R mysql:mysql /var/lib/mysql-cluster

3.切换用户

su - mysql

4.启动管理服务

/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

注:命令行中的ndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。

如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中。

b、数据节点

1.编辑/etc/my.cnf文件

# vim /etc/my.cnf
[mysqld] 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql

ndbcluster 
ndb-connectstring=192.168.3.115

[mysql_cluster] 
ndb-connectstring=192.168.3.115

2.切换用户

su - mysql

3.启动数据节点服务

/usr/local/mysql/bin/ndbd --initial

注:第一次启动需要加参数:–initial,以后就不用加了,直接运行: /usr/local/mysql/bin/ndbd

c、SQL节点

1.编辑/etc/my.cnf文件(数据节点和SQL节点在统一服务器时可省略)

# vim /etc/my.cnf
[mysqld] 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql

ndbcluster 
ndb-connectstring=192.168.3.115

[mysql_cluster] 
ndb-connectstring=192.168.3.115

2.复制mysqld到系统服务里面去

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

3.切换用户

su - mysql

4.启动数据节点服务

service mysqld start
/usr/local/mysql/bin/mysqladmin -u root password 'password'

d、完成效果

ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=2    @192.168.3.116  (mysql-5.6.19 ndb-7.3.6, Nodegroup: 0, *)
id=3    @192.168.3.117  (mysql-5.6.19 ndb-7.3.6, Nodegroup: 0)

[ndb_mgmd(MGM)]    1 node(s)
id=1    @192.168.3.115  (mysql-5.6.19 ndb-7.3.6)

[mysqld(API)]    4 node(s)
id=4    @192.168.3.116  (mysql-5.6.19 ndb-7.3.6)
id=5    @192.168.3.117  (mysql-5.6.19 ndb-7.3.6)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)

四、常用命令与问题整理

1) ndb_mgmd管理命令:/usr/local/mysql/bin/ndb_mgm 执行之后就是管理控制台了,里面可以继续输入命令。(具体命令可以使用help查看)

2) 停止集群服务器的命令:/usr/local/mysql/bin/ndb_mgm -e shutdown

 如果集群配置有更新了:rm /usr/local/mysql/mysql-cluster/ndb_1_config.bin.1 

3) 停止SQL节点的命令:/usr/local/mysql/bin/mysqladmin -uroot shutdown

4)使用需要注意如下两点:

        a.表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或 用这类选项之一替换任何已有的ENGINE(或TYPE)选项。

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

    其他操作上没有什么区别!
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
12天前
|
关系型数据库 MySQL Linux
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
54 8
|
16天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
146 7
|
1月前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
158 3
|
2月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
75 3
|
运维 Shell 应用服务中间件