在上一小节中,我们演示了 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 环境的日常操作,例如如何启动、如何关闭及当某个节点出现故障时,如何进行修复等内容进行讲解。