我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL Cluster搭建与测试

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL Cluster搭建与测试

1、服务器准备
1) MySQL节点1 10.41.1.85
2) MySQL节点2 10.41.1.84
3) ndb节点1 10.41.1.83
4) ndb节点2 10.41.1.82
5) 管理节点 10.41.1.81
2、测试环境
5台服务器均一样,不是必须的,所以服务器均已关闭iptables和selinux,生产环境请根据实际情况自行决定
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #永久关闭防火墙
setenforce 0 #临时关闭selinux
sed -i 's#SELINUX=enforcing#SELINUX=disable#g' /etc/selinux/config #永久关闭selinux
getenforce #查看当前状态
3、软件准备
mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
4、管理节点安装配置
建立目录:
mkdir /usr/local/mysql/bin -p
mkdir /data/mysql-cluster -p
准备文件
cp ./mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_mgm /usr/local/mysql/bin/
cp ./mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_mgmd /usr/local/mysql/bin/
环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
source /etc/profile
配置
cd /data/mysql-cluster/
touch config.ini
cat /data/mysql-cluster/config.ini
[NDBD DEFAULT]
NoOfReplicas=1
DataMemory=64M
IndexMemory=16M
#管理节点
[NDB_MGMD]
nodeid=1
hostname=10.41.1.81
datadir=/data/mysql-cluster
#第一个 ndbd 节点:
[NDBD]
nodeid=2
hostname=10.41.1.83
datadir=/data/mysql-cluster/data
#第二个 ndbd 节点:
[NDBD]
nodeid=3
hostname=10.41.1.82
datadir=/data/mysql-cluster/data

SQL节点:

[MySQLD]
nodeid=4
hostname=10.41.1.85
[MySQLD]
nodeid=5
hostname=10.41.1.84
[MySQLD]

6、NDB节点安装(数据节点)
数据节点1: 10.41.1.83
数据节点2: 10.41.1.82
建立用户
useradd mysql
解压mysql cluster
tar zxf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
mv mysql-cluster-gpl-7.2.4-linux2.6-x86_64/ /usr/local/mysql/
授权
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
建立数据目录,并授权(用来在没使用NDB时存放的数据)
mkdir /data/mysql -p
chown -R mysql.mysql /data/mysql/
初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql
授权root
chown -R root .
配置
\cp support-files/my-large.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
source /etc/profile
建立目录(存放NDB节点的数据)
mkdir /data/mysql-cluster/data -p
修改/etc/my.cnf文件
cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
basedir= /usr/local/mysql
ndbcluster
ndb-connectstring=10.41.1.81
[MYSQL_CLUSTER]
ndb-connectstring=10.41.1.81
说明:
如果希望尽可能的各环境保持一致,建议在NDB节点也和SQL节点一样安装整个带有 NDB Cluster 存储引擎的MySQL Server。(NDB节点可以不用初始化数据,自己已经测试,但是我依然会初始化)安装细节和上面的SQL节点完全一样。
7、安装 MySQL 节点
sql节点1: 10.41.1.85
sql节点2: 10.41.1.84
建立用户
useradd mysql
解压mysql cluster
tar zxf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
mv mysql-cluster-gpl-7.2.4-linux2.6-x86_64/ /usr/local/mysql/
授权
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
建立数据目录,并授权(用来在没使用NDB时存放的数据)
mkdir /data/mysql -p
chown -R mysql.mysql /data/mysql/
初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql
授权root
chown -R root .
配置
\cp support-files/my-large.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
source /etc/profile
建立目录(存放NDB节点的数据)
mkdir /data/mysql-cluster/data -p
修改/etc/my.cnf文件
cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
basedir= /usr/local/mysql
ndbcluster
ndb-connectstring=10.41.1.81
[MYSQL_CLUSTER]
ndb-connectstring=10.41.1.81

开始使用Cluster:
8、启动
启动顺序为:管理节点->数据节点->SQL节点(非常重要)
a)启动管理节点:
ndb_mgmd -f /data/mysql-cluster/config.ini
检查:
netstat -ntlp | grep 1186
ps -ef | grep ndb_mgmd | grep -v grep
b)启动NDB(数据节点)
注意:
只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!
ndbd --initial
检查:
ps -ef | grep ndbd | grep -v grep
c)启动SQL节点(启动mysql服务)
/etc/init.d/mysqld start
9、ndb_mgm工具
a)show命令查看集群状态
ndb_mgm> show
Cluster Configuration

[ndbd(NDB)] 2 node(s)
id=2 @10.41.1.83 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0, Master)
id=3 @10.41.1.82 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.41.1.81 (mysql-5.5.19 ndb-7.2.4)

[mysqld(API)] 3 node(s)
id=4 @10.41.1.85 (mysql-5.5.19 ndb-7.2.4)
id=5 @10.41.1.84 (mysql-5.5.19 ndb-7.2.4)
id=6 (not connected, accepting connect from any host)
10、测试1-NDB存储引擎测试
(1)在任意一个SQL节点(我这里选择10.41.1.85)的test_cluster库中创建测试表test_table01(不指定引擎)和test_table02(NDB存储引擎),设置存储引擎为NDB,并插入两条测试数据:
mysql> create table test_table01( id int, name varchar(20) ) engine=ndb;
mysql> create table test_table02( id int, name varchar(20) ) ;
mysql> show tables;
+------------------------+
Tables_in_test_cluster
+------------------------+
test_table01
test_table02
+------------------------+
2 rows in set (0.01 sec)
另一sql节点:
mysql> show tables;
+------------------------+
Tables_in_test_cluster
+------------------------+
test_table02
+------------------------+
1 row in set (0.02 sec)
说明只有ndb引擎才同步。
(2)在test_table02中插入两条测试数据
mysql> insert into t1 select 1,'yayun';
Query OK, 1 row affected (0.11 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into t1 select 1,'atlas';
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
两个sql节点都能查到数据。
mysql> select * from test_table02;
+------+-----------+
id | name
+------+-----------+
1 | cluster01
2 | cluster02
+------+-----------+
2 rows in set (0.00 sec)
显然,两个SQL节点查询的数据是一致。
(3)在SQL节点10.41.1.85上把测试表test_table02引擎改为MyISAM,再次插入测试数据:
mysql> alter table test_table02 engine=myisam;
Query OK, 2 rows affected (0.90 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> insert into test_table02 value(3,'cluster03');#10.41.1.84
ERROR 1412 (HY000): Table definition has changed, please retry transaction
插入数据直接报错。

11、单点故障测试
管理节点,不需要特殊的配置,只需要将管理工具和配置文件放置多台服务器上即可。
SQL节点
10.41.1.84上的MySQL服务停止
管理节点:
[mysqld(API)] 3 node(s)
id=4 @10.41.1.85 (mysql-5.5.19 ndb-7.2.4)
id=5 (not connected, accepting connect from 10.41.1.84)
id=6 (not connected, accepting connect from any host)
10.41.1.85:
mysql> insert into test_table02 value(4,'cluster04');
Query OK, 1 row affected (0.00 sec)
mysql> select from test_table02;
+------+-----------+
id | name
+------+-----------+
2 | cluster02
3 | cluster03
4 | cluster04
1 | cluster01
+------+-----------+
4 rows in set (0.00 sec)
10.41.1.85服务开启:
mysql> select
from test_table02;
+------+-----------+
id | name
+------+-----------+
3 | cluster03
4 | cluster04
1 | cluster01
2 | cluster02
+------+-----------+
4 rows in set (0.01 sec)
数据又同步过来了

NDB(数据节点)
数据节点10.41.1.82上的NDB进程停止
[root@node3 mysql]# ps -ef | grep ndbd
root 15969 1 0 14:37 ? 00:00:04 ndbd --initial
root 15970 15969 1 14:37 ? 00:00:47 ndbd --initial
root 16029 15801 0 15:36 pts/3 00:00:00 grep --color=auto ndbd
killall ndbd
任意sql节点查询:
mysql> select from test_table02;
ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER
无法查询
10.41.1.81:
grep 'NoOfReplicas' /data/mysql-cluster/config.ini
NoOfReplicas=1 #每个数据节点的镜像数量
将配置文件中的NoOfReplicas改为2,按照前面的步骤重新启动集群,无法启动,NoOfReplicas参数无法临时更改,我们开始就需要设置好,不要到后面才想到更改,那时就悲剧了。如果重新ndbd --initial,将会丢失所有数据。
NoOfReplicas=2:
管理节点需要--initial参数启动
ndb_mgmd --initial -f /data/mysql-cluster/config.ini
数据节点(NDB)启动还要用ndbd --initial,数据丢失
mysql> select
from test_table02;
ERROR 1146 (42S02): Table 'test_cluster.test_table02' doesn't exist
mysql> create table test(
-> id int,
-> name varchar(20)
-> ) engine=ndb;
Query OK, 0 rows affected (0.85 sec)

mysql> show tables;
+------------------------+
Tables_in_test_cluster
+------------------------+
test
+------------------------+
1 row in set (0.01 sec)

mysql> insert into test value(1,'one');
Query OK, 1 row affected (0.00 sec)

mysql> insert into test value(2,'two');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+------+
id | name
+------+------+
1 | one
2 | two
+------+------+
2 rows in set (0.00 sec)
再次停掉数据节点10.41.1.82:
两节点都可以正常数据查询
12、MySQL Cluster集群的关闭
关闭顺序:SQL节点->数据节点->管理节点(在MySQL Cluster环境中,NDB节点和管理节点的关闭都可以在管理节点的管理程序中完成,也可以分节点关闭,但是SQL节点却没办法。所以,在关闭整个MySQL Cluster环境或者关闭某个SQL节点的时候,首先必须到SQL节点主机上来关闭SQL节点程序。关闭方法和MySQL Server的关闭一样。)
(1)SQL节点关闭
/etc/init.d/mysqld stop
(2)(NDB)数据节点关闭
ndbd stop
(3)管理节点关闭
ndb_mgm> shutdown或者命令行:ndb_mgm -e shutdown
总结:
参数NoOfReplicas无法临时更改。
selinux,iptables等相关问题。
注:参考大量网络数据。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL Cluster搭建与测试

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL InnoDB Cluster搭建安装教程

本教程详细介绍了如何搭建和安装MySQLInnoDB集群。它涵盖了准备工作、MySQL安装、PerconaXtraDBCluster安装、MySQL配置、MySQL集群创建、启动集群和测试集群等步骤。
MySQL InnoDB Cluster搭建安装教程
2024-04-02

mysql cluster搭建的方法是什么

搭建MySQL Cluster的方法可以分为以下几个步骤:安装MySQL Cluster软件:首先需要下载MySQL Cluster软件,并根据操作系统的要求进行安装。配置MySQL Cluster管理节点:在MySQL Cluster中,
mysql cluster搭建的方法是什么
2024-04-09

怎么在CentOS LAMP环境搭建和测试php与mysql的连接

这篇文章主要介绍“怎么在CentOS LAMP环境搭建和测试php与mysql的连接”,在日常操作中,相信很多人在怎么在CentOS LAMP环境搭建和测试php与mysql的连接问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
2023-06-16

怎么搭建linux测试环境

要搭建一个Linux测试环境,你可以按照以下步骤进行操作:1.选择Linux发行版:首先要选择一个适合测试的Linux发行版,比如Ubuntu、CentOS、Fedora等。2.安装虚拟化软件:你可以选择安装虚拟机软件,比如VirtualB
2023-08-24

Couchbase中环境搭建与Java的测试是怎样的

这篇文章给大家介绍Couchbase中环境搭建与Java的测试是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Couchbase Server (前身是 Membase) 是一个分布式的面向文档的 NoSQL 数
2023-06-17

Android Robotium搭建环境测试微信

因为要在命令行下运行一些android的工具,所以配置一些环境变量会比较方便:遇到问题: java -jar re-sign.jar 出现提示android路径没有配置好:需要配置如下:配置ANDROID_HOME为android sdk的
2022-06-06

编程热搜

目录