千家信息网

怎么配置MySQL Cluster

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,这篇文章主要讲解了"怎么配置MySQL Cluster",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么配置MySQL Cluster"吧!##MyS
千家信息网最后更新 2025年02月12日怎么配置MySQL Cluster

这篇文章主要讲解了"怎么配置MySQL Cluster",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么配置MySQL Cluster"吧!

##MySQL Cluster 的配置说明
管理节点(1 个) 10.10.10.9
SQL 节点(2 个) 10.10.10.10
10.10.10.11
Data节点(2 个) 10.10.10.10
10.10.10.11

##配置主机IP
[root@mysql9 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mysql9 ##因为是克隆的虚拟机,所以需要修改主机名
[root@mysql9 ~]# cat /etc/hosts
127.0.0.1 localhost mysql9 ##因为是克隆的虚拟机,所以需要修改主机名,后面的主机名每台机器不一样。
10.10.10.9 mysql9
10.10.10.10 mysql10
10.10.10.11 mysql11
##上面所做的操作,在所有服务器上面都要执行!

##禁用selinux
修改/etc/selinux/config文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可。
查看selinux状态:
[root@CentOS ~]# getenforce
##关闭iptables ##这个不知道是什么东西,浪费我大量的时间,不关闭的话,启动Data节点会报错:
-bash-4.1$ ndbd --initial
Unable to connect with connect string: nodeid=0,10.10.10.9:1186
Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed.
2015-12-18 23:11:55 [ndbd] ERROR -- Could not connect to management server, error: ''
##下面关闭它:
[root@mysql9 ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
[root@mysql9 ~]# chkconfig iptables off
##上面所做的操作,在所有服务器上面都要执行!

##添加用户和组
[root@db ~]# groupadd mysql
[root@db ~]# useradd -r -g mysql mysql
[root@localhost data]# passwd mysql
更改用户 mysql 的密码 。
新的 密码:
无效的密码: 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
##上面所做的操作,在所有服务器上面都要执行!

##MySQL Cluster 的安装配置
[root@CentOS tmp]# cd /tmp/
[root@CentOS tmp]# ll mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686.tar.gz
-rw-r--r--. 1 root root 472807612 12月 18 01:11 mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686.tar.gz
[root@CentOS tmp]# tar zxf mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686.tar.gz -C /usr/local/
[root@CentOS tmp]# cd /usr/local/
[root@CentOS local]# mv mysql-cluster-gpl-7.4.8-linux-glibc2.5-i686/ mysql
[root@CentOS local]# chown -R mysql:mysql /usr/local/mysql
[root@CentOS local]# vi /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
[root@localhost bin]# source /etc/profile
##上面所做的操作,在所有服务器上面都要执行!

##初始化数据库
[root@CentOS local]# mkdir -p /data/3306
[root@CentOS local]# chown -R mysql:mysql /data
[root@CentOS local]# su - mysql
su: 警告:无法切换到目录/home/mysql: 没有那个文件或目录
-bash-4.1$ mkdir -p /home/mysql
mkdir: 无法创建目录"/home/mysql": 权限不够
-bash-4.1$ exit
logout
[root@CentOS local]# mkdir -p /home/mysql
[root@CentOS local]# su - mysql
-bash-4.1$ cd /usr/local/mysql
-bash-4.1$ ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306
-bash-4.1$ cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
-bash-4.1$ vi /etc/my.cnf
[client]
port = 3306
socket = /data/3306/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
user = mysql
socket = /data/3306/mysql.sock
pid-file = /data/3306/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3306
log-bin = /data/3306/mysql-bin
lower_case_table_names=1
max_connections=1000
character_set_server=utf8
character_set_client=utf8

[mysql]
default-character-set=utf8
[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod 777 /etc/rc.d/init.d/mysqld
[root@CentOS mysql]# service mysqld start
Starting MySQL..... [确定]
[root@CentOS mysql]# netstat -tulnp | grep mysql
tcp 0 0 :::3306 :::* LISTEN 2057/mysqld
[root@CentOS mysql]# service mysqld status
MySQL running (2057) [确定]
[root@CentOS mysql]# service mysqld stop
Shutting down MySQL.. [确定]
##上面所做的操作,在所有服务器上面都要执行!由于我是虚拟机,就是做一遍,其它的复制。
#管理节点,其实不需要mysqld二进制文件,只需要MySQL Cluster服务端程序(ndb_mgmd)和监听客户端程度(ndb_mgm)。
##这里因为是克隆的虚拟机,就一起在管理节点上面也安装了mysqld服务,但后面配置就不会再提到要配置它的地方了。

##管理节点配置步骤
##在mysql用户下面执行!
(1)在服务器10.10.10.9 的/data下创建目录mysql-cluster,并在目录中创建配置文件config.ini。
-bash-4.1$ cd /data/
-bash-4.1$ mkdir mysql-cluster
-bash-4.1$ cd mysql-cluster/
-bash-4.1$ touch config.ini
(2)根据这里的测试集群环境,config.ini 文件配置如下:
-bash-4.1$ vi config.ini
##配置文件里面的配置,在等号两边最好加上空格,本人在这里是吃了大亏,耽误了大量的时间、精力。
##一度以为没有是哪里没有配对,结果后来最终发现还是配置文件的问题导致后面启不来!
[ndbd default]
noofreplicas = 1 #每个数据节点的镜像数量
datamemory = 50M #每个数据节点中给数据分配的内存(这个M一定要大写)
indexmemory = 20M #每个数据节点中给索引分配的内存

[ndb_mgmd]
#配置管理节点
hostname = 10.10.10.9 #管理节点IP
datadir = /data/mysql-cluster #管理节点数据目录,管理节点启动成功后在该目录下面会存在很多日志信息等。

[ndbd]
hostname = 10.10.10.10 ##指定data节点选项
datadir = /data/mysql-cluster/data

[ndbd]
hostname = 10.10.10.11 ##指定data节点选项
datadir = /data/mysql-cluster/data

[mysqld]
hostname = 10.10.10.10 ##指定sql节点选项

[mysqld]
hostname = 10.10.10.11 ##指定sql节点选项

上面的配置文件中,包括很多的组,组名用"[]"括起来,这里我们最关心的是3 类节点组的配置,分别定义如下。
? [NDB_MGMD]:表示管理节点的配置,只能有一个。
? [NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项。只能有一个。
? [NDBD]:表示每个数据节点的配置,可以有多个。
? [MYSQLD]:表示SQL 节点的配置,可以有多个,分别写上不同SQL 节点的IP 地址;也可以不用写IP 地址,只保留一个空节点,表示任意一个IP 地址都可以进行访问。此节点的个数表明了可以用来连接数据节点的SQL 节点总数。
每个节点都要有一个独立的id 号,可以手工填写,比如"id=2",也可以不写,系统会按照配置文件的填写顺序自动分配。

##SQL 节点和Data 节点的配置
#SQL节点,可以将之视为传统的MySQL Server。Data节点,也是一个MySQL Server,并在my.cnf中指定少数几个参数即可。
##这里由于环境限制,SQL 节点和Data 节点的是放在同一台虚拟机上面的,环境中其实也仅仅安装了一个mysqld服务。后面提到的修改my.cnf配置,就是这个。
##网上很多地方都提到SQL 节点和Data 节点跟普通的mysqld服务没上面区别,要把普通的mysqld变为SQL 节点和Data 节点只需要在my.cnf配置里面添加少数几个参数即可。
##但我还是不太明白,后面启动Data 节点并没有用到任何mysqld相关的大小,所以我理解,其实Data 节点也是不需要安装mysqld服务的。需要bin里面的命令。
##在mysql用户下面执行!在10.10.10.10和10.10.10.11上面都要做!
SQL 节点和数据节点的配置非常简单,只需要在对MySQL 的配置文件(my.cnf)中增加如下内容即可(参数含义见后面注释):
[root@CentOS ~]# chown mysql:mysql /etc/my.cnf
[root@CentOS ~]# su - mysql
-bash-4.1$ vi /etc/my.cnf
[mysqld]
ndbcluster #运行NDB 存储引擎
ndb-connectstring=10.10.10.9 #定位管理节点

[mysql_cluster]
ndb-connectstring=10.10.10.9 #定位管理节点

[mysqld_safe]
log-error = /data/mysql-cluster/data/mysqld.log
pid-file = /data/mysql-cluster/data/mysqld.pid
##创建目录
-bash-4.1$ mkdir -p /data/mysql-cluster/data

##Cluster 的启动
Cluster 需要各个节点都进行启动后才可以运行,节点的启动顺序为管理节点 -> 数据节点 -> SQL 节点。
(1)在管理节点上,从系统shell 发出下述命令以启动管理节点进程:(10.10.10.9)
-bash-4.1$ pwd
/data/mysql-cluster
-bash-4.1$ ndb_mgmd -f ./config.ini
MySQL Cluster Management Server mysql-5.6.27 ndb-7.4.8
-bash-4.1$ 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 (not connected, accepting connect from 10.10.10.10) ##可以看见未连接(not connected),这是因为还没有启动
id=3 (not connected, accepting connect from 10.10.10.11)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.10.9 (mysql-5.6.27 ndb-7.4.8)

[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 10.10.10.10) ##可以看见未连接(not connected),这是因为还没有启动
id=5 (not connected, accepting connect from 10.10.10.11)

ndb_mgm> exit
-bash-4.1$ ps -ef | grep ndb
mysql 2312 1785 0 18:58 pts/1 00:00:00 ndb_mgm
mysql 2457 1 0 19:24 ? 00:00:03 ndb_mgmd -f ./config.ini
mysql 2495 1595 0 19:31 pts/0 00:00:00 grep ndb

(2)在每台数据节点服务器上(本例为10.10.10.10 和10.10.10.11),运行下述命令启动ndbd 进程:
ndbd 进程是使用NDB 存储引擎处理表中数据的进程。通过该进程,存储节点能够实现分布式事务管理、节点恢复、在线备份等相关的任务。
注意:仅应在首次启动ndbd 时,或在备份/恢复或配置变化后重启ndbd 时使用"--initial"参数,这很重要。原因在于,该参数会使节点删除由早期ndbd 实例创建的、用于恢复的任何文件,包括恢复用日志文件。
-bash-4.1$ ndbd --initial ##10.10.10.10
2015-12-19 01:29:05 [ndbd] INFO -- Angel connected to '10.10.10.9:1186'
2015-12-19 01:29:05 [ndbd] INFO -- Angel allocated nodeid: 2
-bash-4.1$ ndbd --initial ##10.10.10.11
2015-12-19 01:37:36 [ndbd] INFO -- Angel connected to '10.10.10.9:1186'
2015-12-19 01:37:36 [ndbd] INFO -- Angel allocated nodeid: 3

(3)依次启动SQL 节点上的MySQL 服务(本例为10.10.10.10 和10.10.10.11)。
-bash-4.1$ service mysqld start
也可以用:-bash-4.1$ mysqld_safe --defaults-file=/etc/my.cnf 2>&1 > /dev/null &

(4)节点全部成功启动后,用ndb_mgm 工具的show 命令查看集群状态:
##ndb_mgm 工具是ndb_mgmd(MySQL Cluster Server)的客户端管理工具,通过它可以方便地检查Cluster 的状态、启动备份、关闭Cluster 等功能。
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.10.10.10 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 0, *)
id=3 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.10.9 (mysql-5.6.27 ndb-7.4.8)

[mysqld(API)] 2 node(s)
id=4 @10.10.10.10 (mysql-5.6.27 ndb-7.4.8)
id=5 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8)

##测试 MySQL Cluster
##上文提到过,如果要使用Cluster,则表的存储引擎必须为NDB,其他类型存储引擎的数据将不会保存到数据节点中。
1.NDB 存储引擎测试
(1)在任意一个SQL 节点(这里用10.10.10.10)的test 库中创建测试表t1,设置存储引擎为NDB,并插入两条测试数据:
mysql> create table t1(id int) engine=ndb;
mysql> insert into t1 values(1);
mysql> insert into t1 values(2);
(2)在另外一个SQL 节点(10.10.10.11),查询test 库中的t1 表,结果如下:
mysql> select * from t1; ##显然,两个SQL 节点查询到的数据是一致的。
(3)在SQL 节点10.10.10.10 上将测试表t1 的存储引擎改为MyISAM,再次插入测试记录:
mysql> alter table t1 engine=myisam;
mysql> insert into t1 values(3);
(4)在SQL 节点10.10.10.11 上再次查询表t1,结果如下:
mysql> select * from t1; ##可以发现,表t1 已经无法查询。
ERROR 1146 (42S02): Table 'test.t1' doesn't exist
(5)在SQL 节点10.10.10.10 上再次将t1 的存储引擎改为NDB:
mysql> alter table t1 engine=ndb;
(6)在SQL 节点10.10.10.11 上再次查询,结果如下:
mysql> select * from t1;
+------+
| id |
+------+
| 2 |
| 3 |
| 1 |
+------+
3 rows in set (0.01 sec)
##显然,表t1 的数据被再次同步到了数据节点。所有SQL 节点又都可以正常查询数据。
##其实可以发现,数据文件还是存放在mysqld的datadir目录里面;而前面指定的"/data/mysql-cluster/data"这些目录放的是集群相关的东西。

2.单点故障测试--SQL 节点发生单点故障。
(1)将SQL 节点10.10.10.10 上的MySQL 服务停止。
-bash-4.1$ mysqladmin -uroot -p shutdown
(2)查看一下Cluster 的状态。
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.10.10.10 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 0, *)
id=3 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.10.9 (mysql-5.6.27 ndb-7.4.8)

[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 10.10.10.10)
id=5 @10.10.10.11 (mysql-5.6.27 ndb-7.4.8)
(3)从节点10.10.10.11 上查看表t1,结果如下。
mysql> select * from t1;
+------+
| id |
+------+
| 2 |
| 3 |
| 1 |
+------+
3 rows in set (0.01 sec)

##关闭MySQL Cluster
Cluster 的关闭命令很简单,只需要在shell 下执行如下命令即可:-bash-4.1$ ndb_mgm -e shutdown
也可以用ndb_mgm 工具进入管理界面后,使用shutdown 命令关闭:ndb_mgm> shutdown
然后再其它节点上关闭mysqld:-bash-4.1$ service mysqld stop
或者:mysqladmin -uroot -p shutdown

##日志管理
MySQL Cluster 提供了两种日志,分别是集群日志(clusterlog)和节点日志(node log)。前者记录了所有Cluster 节点生成的日志,后者仅仅记录了数据节点的本地事件。在大多数情况下,我们都推荐使用集群日志,因为它在一个地方记录了所有节点的数据,更便于进行管理。
clusterlog 一般记录在和配置文件( config.ini ) 同一个目录下, 文件名格式为ndb__cluster.log,其中nodeid 为管理节点号。
可以使用ndb_mgm 客户端管理工具打开或者关闭日志,具体操作如下。
(1)在shell 中执行ndb_mgm 命令。
-bash-4.1$ ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm>
(2)执行clusterlog info 命令查看当前日志状态。
ndb_mgm> clusterlog info
Connected to Management Server at: localhost:1186
Severities enabled: INFO WARNING ERROR CRITICAL ALERT
(3)当前日志是打开的,用clusterlog off 命令关闭日志。
ndb_mgm> clusterlog off
Cluster logging is disabled
(4)再次查看日志状态,发现已经关闭。
ndb_mgm> clusterlog info
Cluster logging is disabled.
(5)执行clusterlog on 命令将再次打开日志。
ndb_mgm> clusterlog on
Cluster logging is enabled.
ndb_mgm> clusterlog info
Severities enabled: INFO WARNING ERROR CRITICAL ALERT

感谢各位的阅读,以上就是"怎么配置MySQL Cluster"的内容了,经过本文的学习后,相信大家对怎么配置MySQL Cluster这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

节点 配置 数据 管理 文件 日志 服务 命令 目录 存储 引擎 测试 再次 服务器 状态 查询 参数 密码 工具 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 时序数据库 范围查询 it软件开发外包合同范本 从事网络安全的民警视力 营口软件开发培训班 数据库备份的bat文件 在计算机网络技术中子网数如何算 遂溪公安局网络安全 软件开发整体就业趋势 郎溪常规软件开发服务价格大全 网络技术中国在国际上的影响 如何看连接的是不是同一个服务器 oracle数据库io 联通海外对接服务器 数据库技术教学视频 中信软件开发中心配电脑 科技金融互联网公司官网 服务器云主机防护 太仓橙仓网络技术有限公司 福建果咖互联网网络科技有限公司 火萤网络技术有限公司怎么样 网络安全产业是支柱产业 如何对软件开发进行进度管理 群硕软件开发上海有限公司怎么样 我们如何提高网络安全知识 你的装备数据库 特别重大网络安全突发事故 河南网络安全技能大赛 怎么自己开发一个数据库 数据库中被写入非法数据 主宰之剑服务器怎么样
0