探索MySQL-Cluster奥秘系列之SQL节点和数据节点配置(7)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 上一小节中,我们讲解了MySQL-Cluster集群的管理节点的配置方法,在这一小节中,我们来学习下关于SQL节点和数据节点的配置方法。

在上一小节中,我们演示了 MySQL Cluster 集群管理节点的配置,这一小节,我们来看一下 SQL 节点和数据节点是如何来配置的。

SQL 节点的配置

在前面我讲到了,MySQL Cluster 集群环境的 SQL 节点,其实和普通的 MySQL 环境区别并不大,它的主进程也是 mysqld,主要区别是使用的安装介质和配置文件不一样。不过,SQL 节点的配置步骤和管理节点的配置步骤非常类似,主要有以下 6 个步骤:

  • 拷贝安装介质至 SQL 节点服务器,并对其解压
  • 创建 mysql 用户及组
  • 将 MySQL Cluster 安装介质移动到指定的位置或者创建 link
  • 配置 SQL 节点的配置文件
  • 修改环境变量
  • 启动 MySQL Cluster 集群的 SQL 节点服务

接下来,我们来配置一下 SQL 节点。

第一步,我们同样是将 MySQL Cluster 的安装介质拷贝到之前规划好的 mysql04 和 mysql05 服务器上(可以回顾一下“Linux 安装和配置-安装”小节),并对其进行解压操作。mysql04 节点:

[root@mysql04 ~]# tar xvf mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64.tar

mysql05 节点:

[root@mysql05 ~]# tar xvf mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64.tar

第二步,在 mysql04 和 mysql05 上创建 mysql 用户及组。mysql04 节点:

[root@mysql03 ~]# groupadd mysql
[root@mysql03 ~]# useradd -g mysql mysql

mysql05节点:

[root@mysql03 ~]# groupadd mysql
[root@mysql03 ~]# useradd -g mysql mysql

第三步,为了使用方便,我们可以将解压好的安装介质移动到 /usr/local 目录下,然后创建一个 link,同时将该目录的属主和属组修改为 mysql。mysql04节点:

[root@mysql04 ~]# mv mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64  /usr/local
[root@mysql04 ~]# cd /usr/local
[root@mysql04 local]# ln -s mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/  mysql
[root@mysql04 local]# chown -R mysql:mysql  mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/

mysql05节点:

[root@mysql05 ~]# mv mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64  /usr/local
[root@mysql05 ~]# cd /usr/local
[root@mysql05 local]# ln -s mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/  mysql
[root@mysql05 local]# chown -R mysql:mysql  mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/

第四步,SQL 节点的配置文件,即是 /etc/my.cnf。大家一定要注意,如果本地有安装 MySQL 数据库环境,需要将其进行卸载,以下是需要配置的 SQL 节点的配置信息。mysql04节点:

[root@mysql04 mydata]# more /etc/my.cnf
[mysqld]
ndbcluster
datadir=/mysql/mydata
basedir=/usr/local/mysql
socket=/mysql/mydata/mysql.sock
port=3306
character_set-server=utf8
ndb-connectstring=192.168.1.3
user=mysql
ndbcluster
ndb-connectstring=192.168.1.3
[mysql_cluster]
ndb-connectstring=192.168.1.3
[client]
default_character_set=utf8
socket=/mysql/mydata/mysql.sock

mysql05节点:

[root@mysql05 ~]# more /etc/my.cnf
[mysqld]
ndbcluster
datadir=/mysql/mydata
basedir=/usr/local/mysql
socket=/mysql/mydata/mysql.sock
port=3306
character_set-server=utf8
user=mysql
ndbcluster
ndb-connectstring=192.168.1.3
[mysql_cluster]
ndb-connectstring=192.168.1.3
[client]
default_character_set=utf8
socket=/mysql/mydata/mysql.sock

在上面的配置文件中,大部分的内容在 MySQL 技能点中(可以去看 MySQL 技能点对应的图文内容)都有讲到,那么和普通的 MySQL 环境不同的是,在 MySQL Cluster 环境中,存在 [mysql_cluster] 信息,在这一段中是需要配置管理节点的地址信息。

这样,SQL节点的配置文件就配置好了。接下来,需要修改下环境变量,使系统可以找到MySQL Cluster 相关的命令。

那么第五步就是在 mysql 用户的家目录下,修改文件.bash_profile。需要在这个文件中添加指定的目录信息,并使其环境变量生效。mysql04 节点:

[mysql@mysql04 ~]$ more .bash_profile 
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
User specific environment and startup programs
export PATH=/usr/local/mysql/bin:$PATH:$HOME/.local/bin:$HOME/bin
[mysql@mysql04 ~]$ source .bash_profile

mysql05 节点:

[mysql@mysql05 ~]$ more .bash_profile 
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
User specific environment and startup programs
export PATH=/usr/local/mysql/bin:$PATH:$HOME/.local/bin:$HOME/bin
[mysql@mysql05 ~]$ source .bash_profile

第六步,我们就可以启动 MySQL Cluster 集群的 SQL 节点服务了,在启动 SQL 节点服务的时候,和普通的 MySQL 环境的操作是相同的。我们使用如下的命令进行启动。

mysql04节点:

[mysql@mysql04 ~]$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

mysql05节点:

[mysql@mysql05 ~]$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

其实对这么长的启动命令,我们可以对其设置一个别名,这样在操作时会简化不少。比如可以在环境变量中配置如下一行内容:alias start='/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &'在启动服务器时,直接执行 start 即可。

这样,MySQL Cluster 集群的SQL节点就配置好了,我们可以通过 SQL 节点的服务登录到 MySQL Cluster 环境进行查看。

[mysql@mysql04 ~]$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.36-ndb-7.6.20-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

可以看到,正常登录是没有问题的,同时登录后显示的是"Server version: 5.7.36-ndb-7.6.20-cluster-gpl MySQL Cluster Community Server (GPL)"信息,说明我们的配置没有问题,至此,MySQL Cluster集群环境 SQL 节点方面的内容就配置好了。

接下来,我们来对 MySQL Cluster 集群环境的数据节点方面的配置进行讲解。

数据节点的配置

关于数据节点方面的配置和 SQL 节点方面的操作步骤类似。

第一步,我们同样是将 MySQL Cluster 的安装介质拷贝至之前规划好的 mysql06 和 mysql07 服务器上,并对其进行解压操作。mysql06 节点:

[root@mysql06 ~]# tar xvf mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64.tar

mysql07 节点:

[root@mysql07 ~]# tar xvf mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64.tar

第二步,在 mysql06 和 mysql07 上创建 mysql 用户及组。mysql06节点:

[root@mysql06 ~]# groupadd mysql
[root@mysql06 ~]# useradd -g mysql mysql

mysql07节点:

[root@mysql07 ~]# groupadd mysql
[root@mysql07 ~]# useradd -g mysql mysql

第三步,同样为了使用方便,我们可以将解压好的安装介质移动到 /usr/local 目录下,然后创建一个link,同时将该目录的属主和属组修改为 mysql。mysql06节点:

[root@mysql06 ~]# mv mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64  /usr/local
[root@mysql06 ~]# cd /usr/local
[root@mysql06 local]# ln -s mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/  mysql
[root@mysql06 local]# chown -R mysql:mysql  mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/

mysql07节点:

[root@mysql07 ~]# mv mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64  /usr/local
[root@mysql07 ~]# cd /usr/local
[root@mysql07 local]# ln -s mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/  mysql
[root@mysql07 local]# chown -R mysql:mysql  mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64/

第四步,数据节点的配置文件也是/etc/my.cnf。以下是需要配置的 SQL 节点的配置信息。mysql06 节点:

[root@mysql06 local]# more /etc/my.cnf
[mysqld]
datadir=/mysql/mydata
basedir=/usr/local/mysql
socket=/mysql/mydata/mysql.sock
port=3306
character_set-server=utf8
[mysql_cluster]
ndb-connectstring=192.168.1.3

mysql07节点:

[root@mysql07 ~]# more /etc/my.cnf
[mysqld]
datadir=/mysql/mydata
basedir=/usr/local/mysql
socket=/mysql/mydata/mysql.sock
port=3306
character_set-server=utf8
[mysql_cluster]
ndb-connectstring=192.168.1.3

第五步,对于环境变量的配置,和 SQL 节点的配置是一样的,即需要在 mysql 用户家目录下的.bash_profile 文件中添加 mysql 相应的路径。mysql06节点:

[mysql@mysql06 ~]$ more .bash_profile 
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
User specific environment and startup programs
export PATH=/usr/local/mysql/bin:$PATH:$HOME/.local/bin:$HOME/bin
[mysql@mysql07 ~]$ source .bash_profile

mysql07 节点:

[mysql@mysql07 ~]$ more .bash_profile 
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi
User specific environment and startup programs
export PATH=/usr/local/mysql/bin:$PATH:$HOME/.local/bin:$HOME/bin
[mysql@mysql07 ~]$ source .bash_profile

第六步,针对 MySQL Cluster 集群环境的数据节点,在配置好环境变量之后,要想使用数据节点,你必须要先对其进行初始化操作,使其生效生成初始化数据文件,这是和管理节点、SQL节点所不一样的地方。具体操作是在 mysql06 和 mysql07 节点上执行如下命令。mysql06节点:

[mysql@mysql06 ~]$ ndbd --initial

mysql07 节点:

[mysql@mysql07 ~]$ ndbd --initial

然后我们就可以在 mysql06 和 mysql07 节点上,查看到已经生成了相应的初始化数据文件。mysql06节点:

[root@mysql06 ndb_2_fs]# ls -l /mysql/mydata/
total 52
drwxr-x--- 11 root root    99 Mar  8 22:34 ndb_2_fs
-rw-r--r--  1 root root 47989 Mar 10 06:52 ndb_2_out.log
-rw-r--r--  1 root root     4 Mar  8 22:34 ndb_2.pid
[root@mysql06 ndb_2_fs]# ls -l /mysql/mydata/ndb_2_fs
total 0
drwxr-x--- 5 root root 48 Mar  8 22:34 D1
drwxr-x--- 3 root root 19 Mar  8 22:34 D10
drwxr-x--- 3 root root 19 Mar  8 22:34 D11
drwxr-x--- 5 root root 48 Mar  8 22:34 D2
drwxr-x--- 3 root root 19 Mar  8 22:34 D8
drwxr-x--- 3 root root 19 Mar  8 22:34 D9
drwxr-x--- 5 root root 33 Mar  9 16:55 LCP
drwxr-x--- 2 root root  6 Mar  8 22:34 LG
drwxr-x--- 2 root root  6 Mar  8 22:34 TS

同时可以可以看到,在 mysql06 和 mysql07 节点上,启动了相应的进程。mysql06 节点:

[mysql@mysql06 ~]$ ps -ef | grep mysql
mysql      1299      1  0 Mar08 ?        00:00:54 /usr/local/mysql/bin/ndbd --initial
mysql      1300   1299  2 Mar08 ?        00:48:52 /usr/local/mysql/bin/ndbd --initial

mysql07 节点:

[mysql@mysql07 ~]$ ps -ef | grep mysql
mysql      1297      1  0 Mar08 ?        00:00:52 /usr/local/mysql/bin/ndbd --initial
mysql      1298   1297  2 Mar08 ?        00:46:51 /usr/local/mysql/bin/ndbd --initial

最后,我们再回到管理节点上,查看下 MySQL Cluster 集群环境的配置信息。

[mysql@mysql03 ~]$ ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show;
Connected to Management Server at: localhost:1186
Cluster Configuration
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.6 (mysql-5.7.36 ndb-7.6.20, Nodegroup: 0, *)
id=3 @192.168.1.7 (mysql-5.7.36 ndb-7.6.20, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.3 (mysql-5.7.36 ndb-7.6.20)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.4 (mysql-5.7.36 ndb-7.6.20)
id=5 @192.168.1.5 (mysql-5.7.36 ndb-7.6.20)

好了,到现在为止,我们用了 3 个小节来对 MySQL Cluster 集群环境的安装配置进行了讲解和演示。整个的安装过程其实是非常简单的,大家可以按照上面讲解的步骤在自己的环境中多多练习。

在下面的几个小节中,我们会对配置好的 MySQL Cluster 环境的日常操作,例如如何启动、如何关闭及当某个节点出现故障时,如何进行修复等内容进行讲解。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
12天前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
28天前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
28天前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
44 1
|
17天前
|
SQL 关系型数据库 MySQL
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
32 0
|
17天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
30 0
|
30天前
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
45 0
|
4月前
|
SQL JSON 数据库
influxdb 端点使用http进行sql查询,写数据
influxdb 端点使用http进行sql查询,写数据
264 0
|
1月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
1月前
|
SQL
使用SQL进行集合查询和数据维护
使用SQL进行集合查询和数据维护
36 0
|
3月前
|
SQL 存储 分布式计算