当前位置: 首页 > news >正文

CentOS-6.3安装MySQL集群

安装要求

安装环境:CentOS-6.3
安装方式:源码编译安装
软件名称:mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
下载地址:http://mysql.mirror.kangaroot.net/Downloads/
软件安装位置:/usr/local/mysql
数据存放位置:/var/mysql/data
日志存放位置:/var/mysql/logs

集群设计

首先设计集群的安装分配方式,我共需要5台服务器,服务器分配如下:
管理节点:    192.168.15.231
sql节点1:   192.168.15.232
sql节点2:   192.168.15.233
数据节点1:  192.168.15.234
数据节点2:  192.168.15.235
设备的连接方式如下图所示:
 

 
注意:目前这种设计存在的问题是管理节点是单点的,231挂掉后整个集群就会瘫痪,先不管这个问题,首先把这个简单的MySQL集群先搭建起来。

检查安装的mysql

检查系统中已经安装过的mysql信息,操作如下:

[root@localhost /]# rpm -qa | grep mysql
[root@localhost /]# service mysql status

如果安装过其他版本的mysql,请卸载,操作如下:

[root@localhost /]# /etc/init.d/mysqld stop  //关闭目前的mysql服务
[root@localhost /]# ps -ef | grep mysql  //检验mysql是否已经关闭
#如果没关闭,执行kill -9 端口号
#执行删除
rpm -e --allmatches --nodeps mysql mysql-server
rm -rf /var/lib/mysql  // 删除mysql的安装目录

管理节点

管理节点安装

安装管理节点(192.168.15.231)

[root@localhost /]# groupadd mysql
[root@localhost /]#  useradd mysql -g mysql
[root@localhost /]# cd /usr/local
[root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[root@localhost local]# chown -R mysql:mysql mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# scripts/mysql_install_db --user=mysql

管理节点配置

[root@localhost ~]#  mkdir /var/lib/mysql-cluster
[root@localhost ~]# cd /var/lib/mysql-cluster
[root@localhost mysql-cluster]# vi + /var/lib/mysql-cluster/config.ini

在config.ini 中添加以下内容:

[NDBD DEFAULT]
NoOfReplicas=1
[TCP DEFAULT]
portnumber=3306
[NDB_MGMD]
#设置管理节点服务器
HostName=192.168.15.231
DataDir=/var/mysql/data[NDBD]
#设置存储节点服务器(NDB节点)
HostName=192.168.15.234
DataDir=/var/mysql/data[NDBD]
#第二个NDB节点
HostName=192.168.15.235
DataDir=/var/mysql/data[MYSQLD]
#设置SQL节点服务器
HostName=192.168.15.232
[MYSQLD]
#第二个SQL节点
HostName=192.168.15.233

管理节点启动

[root@localhost ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
[root@localhost ~]# mkdir /var/mysql/logs
[root@localhost ~]# netstat -lntpu

看到tcp 0 0 0.0.0.0:1186开放说明启动正常
开启管理节点服务器的1186端口

管理节点检验

执行以下操作:

[root@localhost /]# ndb_mgm     // 管理节点
-- NDB Cluster -- Management Client --
ndb_mgm> showConnected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2 (not connected, accepting connect from 192.168.15.234)
id=3 (not connected, accepting connect from 192.168.15.235)[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.15.231  (mysql-5.5.22 ndb-7.2.6)[mysqld(API)]   2 node(s)
id=4 (not connected, accepting connect from 192.168.15.232)
id=5 (not connected, accepting connect from 192.168.15.233)

管理节点关闭

[root@localhost /]# /usr/local/mysql/bin/ndb_mgm -e shutdown#成功后终端打印出以下信息
Connected to Management Server at: 192.168.15.236:1186
3 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.

数据节点

数据节点安装

数据节点1: 192.168.15.234
数据节点2: 192.168.15.235

[root@localhost /]# groupadd mysql
[root@localhost /]# useradd mysql -g mysql
[root@localhost /]# cd /usr/local
[root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[root@localhost local]# chown -R mysql:mysql mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# scripts/mysql_install_db --user=mysql
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

数据节点配置

对数据节点进行配置,执行以下操作:

[root@localhost mysql]# mkdir /var/mysql/data
[root@localhost mysql]# mkdir /var/mysql/logs
[root@localhost mysql]# vi /etc/my.cnf

向文件追加以下内容:

[MYSQLD]
ndbcluster
ndb-connectstring=192.168.15.231
[MYSQL_CLUSTER]
ndb-connectstring=192.168.15.231
[NDB_MGM]
connect-string=192.168.15.231

数据节点启动

启动此处时,管理节点服务器防火墙必须开启1186,3306端口。
注意:只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!
第一次启动如下:

[root@localhost mysql]# /usr/local/mysql/bin/ndbd --initial
2013-01-30 13:43:53 [ndbd] INFO     -- Angel connected to '192.168.15.231:1186'
2013-01-30 13:43:53 [ndbd] INFO     -- Angel allocated nodeid: 2

正常启动方式:

[root@localhost mysql]# /usr/local/mysql/bin/ndbd

数据节点关闭

[root@localhost /]# /etc/rc.d/init.d/mysqld stop
或者
[root@localhost mysql]# /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS!/usr/local/mysql/bin/mysqladmin -uroot shutdown

SQL节点安装

SQL节点安装

SQL节点和存储节点(NDB节点)安装相同,都执行以下操作;
sql节点1: 192.168.15.232
sql节点2: 192.168.15.233

[root@localhost /]# groupadd mysql
[root@localhost /]# useradd mysql -g mysql
[root@localhost /]# cd /usr/local
[root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[root@localhost local]# chown -R mysql:mysql mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# scripts/mysql_install_db --user=mysql
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

SQL节点配置

执行以下操作:

[root@localhost mysql]# mkdir /var/mysql/data     //创建存储数据的文件夹
[root@localhost mysql]# mkdir /var/mysql/logs     //创建存储日志的文件夹
[root@localhost mysql]# vi /usr/local/mysql/my.cnf  //修改配置文件

追加以下内容:

[MYSQLD]
ndbcluster
ndb-connectstring=192.168.15.231
[MYSQL_CLUSTER]
ndb-connectstring=192.168.15.231
[NDB_MGM]
connect-string=192.168.15.231

SQL节点启动

执行以下操作:

[root@localhost mysql]# service mysqld start
Starting MySQL.. SUCCESS!

SQL节点关闭

最直接的方式:

[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -uroot shutdown

[root@localhost /]# /etc/rc.d/init.d/mysqld stop
或者
[root@localhost mysql]# /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS!

功能测试

在管理节点(192.168.15.231)上查看服务状态

[root@localhost ~]# /usr/local/mysql/bin/ndb_mgm-- NDB Cluster -- Management Client --
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.15.234  (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master)
id=3    @192.168.15.235  (mysql-5.5.22 ndb-7.2.6, Nodegroup: 1)[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.15.231  (mysql-5.5.22 ndb-7.2.6)[mysqld(API)]   2 node(s)
id=4    @192.168.15.232  (mysql-5.5.22 ndb-7.2.6)
id=5    @192.168.15.233  (mysql-5.5.22 ndb-7.2.6)

可以看到这里的数据节点、管理节点、sql节点都是正常的。
注意

  1. 在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。
  2. NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。
  3. Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访问别的Sql节点,需要在对应的Sql节点追加用户。虽然在MySql Cluster7.2版本开始提供了”用户权限共享”。

数据同步性测试

在一个数据节点上进行相关数据库的创建,然后到另外一个数据节点上看看数据是否同步。

  1. 1步:

SQL节点1(192.168.15.232)上增加数据:

[root@localhost mysql]#  /etc/rc.d/init.d/mysqld status                //检验mysql是否运行
[root@localhost mysql]# /etc/rc.d/init.d/mysqld start                   //启动mysql
[root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
mysql> show databases;
mysql> create database testdb2;
mysql> use testdb2;
mysql> CREATE TABLE td_test2 (i INT) ENGINE=NDB;
//这里必须指定数据库表的引擎为NDBCLUSTER,与配置文件中的名称相同
mysql> INSERT INTO td_test2() VALUES (1);
mysql> INSERT INTO td_test2() VALUES (152);
mysql> SELECT * FROM td_test2;
  1. 2步:

进入到SQL节点2(192.168.15.233)上查看数据

mysql> use testdb2;
Database changed
mysql> SELECT * FROM td_test2;
+------+
| i    |
+------+
|  126 |
|    1 |
+------+
2 rows in set (0.01 sec)

查看表的引擎是不是NDB:

>show create table td_test2;
  1. 3步:

反向测试,SQL节点2(192.168.15.233)上增加数据:

mysql> create database bb;
mysql> use bb;
mysql> CREATE TABLE td_test3 (i INT) ENGINE=NDB;
mysql> INSERT INTO td_test3 () VALUES (98);
mysql> SELECT * FROM td_test3;

SQL节点1(192.168.15.232)上查看数据:

mysql>  use bb;
Database changed
mysql>  SELECT * FROM td_test3;
+------+
| i    |
+------+
|   98 |
+------+
1 row in set (0.00 sec)

关闭集群

先关闭管理节点,然后关闭SQL节点和数据节点。

集群启动操作顺序

要再次启动集群,按照以下顺序执行:
管理节点 -> 数据节点 –> SQL节点 注意:此次启动数据节点时不要加”–initial”参数。 

安装及测试中的错误

启动中的错误

错误提示:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
解决办法1(端口占用) netstat -anp |grep 3306
kill -9 进程号
解决办法1(权限问题) [root@localhost mysql]# chown -R mysql:mysql /var/mysql          //修改自定义文件夹的访问权限

 

相关文章:

CentOS-6.3安装MySQL集群

安装要求 安装环境:CentOS-6.3 安装方式:源码编译安装 软件名称:mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz 下载地址:http://mysql.mirror.kangaroot.net/Downloads/ 软件安装位置:/usr/local/mysql 数据存放位…...

项目管理的艺术:掌握成本效益分析

引言 在项目管理中,我们经常面临着如何有效地使用有限的资源来实现项目目标的挑战。为了解决这个问题,我们需要使用一种强大的工具——成本效益分析。通过成本效益分析,我们可以评估和比较不同的项目选项,选择最具成本效益的项目…...

护眼灯值不值得买?什么护眼灯对眼睛好

想要选好护眼台灯首先我们要知道什么是护眼台灯,大的方向来看,护眼台灯就是可以保护视力的台灯,深入些讲就是具备让灯发出接近自然光特性的光线,同时光线不会伤害人眼而出现造成眼部不适甚至是视力降低的照明设备。 从细节上看就…...

【设备树笔记整理4】内核对设备树的处理

1 从源头分析_内核head.S对dtb的简单处理 1.1 bootloader向内核传递的参数 (1)bootloader启动内核时,会设置r0,r1,r2三个寄存器: r0一般设置为0;r1一般设置为machine_id (在使用设备树时该参数没有被使用…...

算法通关村第七关——递归和迭代实现二叉树前中后序遍历

1.递归 1.1 熟悉递归 所有的递归有两个基本特征: 执行时范围不断缩小,这样才能触底反弹。终止判断在调用递归的前面。 写递归的步骤: 从小到大递推。分情况讨论,明确结束条件。组合出完整方法。想验证就从大到小画图推演。 …...

Datawhale Django后端开发入门Task01 Vscode配置环境

首先呢放一张运行成功的截图纪念一下,感谢众多小伙伴的帮助呀,之前没有配置这方面的经验 ,但还是一步一步配置成功了,所以在此以一个纯小白的经验分享如何配置成功。 1.选择要建立项目的文件夹,打开文件找到目标文件夹…...

django部署到centos服务器上

具体的操作步骤 步骤一 更新系统和安装依赖, sudo yum update sudo yum install python3 python3-pip python3-devel git步骤二:创建并激活虚拟环境 在终端中执行以下命令: python3 -m venv myenv source myenv/bin/activate可以不创建虚拟…...

IOS开发-XCode14介绍与入门

IOS开发-XCode14介绍与入门 1. XCODE14的小吐槽2. XCODE的功能bar一览3. XCODE项目配置一览4. XCODE更改DEBUG/RELEASE模式5. XCODE单元测试 1. XCODE14的小吐槽 iOS开发工具一直有个毛病,就是新版本的开发工具的总会有一些奇奇怪怪的bug。比如在我的Mac-Pro&#…...

Interactive Marker Publish Pose All the Time (Interactive Marker通过topic一直发送其状态)

以下代码实现了:Interactive Marker通过topic一直发送其状态,而不只是交互时才发送。 几个要点: 通过定时器rospy.Timer实现PublishInteractiveMarkerServer feedback.pose的类型是geometry_msgs/Pose,而不是geometry_msgs/PoseS…...

前后端分离------后端创建笔记(04)前后端对接

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...

一站式自动化测试平台-Autotestplat

3.1 自动化平台开发方案 3.1.1 功能需求 3.1.3 开发时间计划 如果是刚入门、但有一点代码基础的测试人员,大概 3 个月能做出演示版(Demo)进行自动化测试,6 个月内胜任开展工作中项目的自动化测试。 如果是有自动化测试基础的测试人员,大概 …...

Ansible Service模块,使用 Ansible Service模块进行服务管理

Ansible 是一种自动化工具,它可以简化配置管理、应用程序部署和任务自动化等操作。Ansible 的 Service 模块是其中一个重要的模块,它提供了管理服务的功能,使得在远程主机上启动、停止、重启和重新加载服务变得简单和可靠。本文将介绍 Ansibl…...

共识算法初探

共识机制的背景 加密货币都是去中心化的,去中心化的基础就是P2P节点众多,那么如何吸引用户加入网络成为节点,有那些激励机制?同时,开发的重点是让多个节点维护一个数据库,那么如何决定哪个节点写入&#x…...

Oracle查询表字段名并拼接

在数据库使用中,我们常常需要,获取一张表的全部字段,那该如何查询呢? 查询表字段名 SELECT column_name FROM all_tab_columns WHERE table_name table_name; 只需将引号中的table_name,替换为自己的表名&#xff0…...

8 张图 | 剖析 Eureka 的首次同步注册表

注册表对于注册中心尤为重要,所有的功能都是围绕这个注册表展开。比如服务 A 要想访问服务 B,就得知道服务 B 的 IP 地址和端口号吧。如下图所示,传统的方式就是服务 A 知道了服务 B 的地址后,发送 HTTP 请求到对应的 API 地址上。…...

github ssh配置

1、生成公钥 用下面的命令生成公钥 ssh-keygen -t rsa -b 4096 -C 邮箱 生成的公钥默认在文件夹 ~/.ssh/ 下的 id_rsa.pub 2、在github配置本地的公钥 先复制本地公钥文件中的内容 cat ~/.ssh/id_rsa.pub 打开github的settings > SSH and GPG keys > new SSH key …...

c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

单片机一般采用中断方式接受数据,这样便于及时处理 #include "reg51.h" #include "myheader.h" #define uchar unsigned char int szc[10]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int bufferc[6]{0}; int sza[6]{0x01,0x02,0x0…...

腾讯面试题算法还原【游戏安全】

本题的参考链接:https://share.weiyun.com/5Xg2b7v 其实拿到这个题我就感觉在哪里看过,后来想想是在旺仔那里看到的,以下是旺仔写的分析过程可以参考一下https://bbs.kanxue.com/thread-276536.htm 但是这个题要比旺仔拿到的那个要增加些许…...

vue + less 实现动态主题换肤功能

文章目录 前言一、前提条件1. 初始化vue项目2. 安装插件 二、新建文件夹主题theme1.style.less文件2.model.js文件3.theme.js文件theme文件夹最终效果 三、修改vue.config.js文件四、页面上的具体使用1. index.vue 页面2. index.vue 页面注意点说明3. index.vue 效果 五、在js中…...

matlab使用教程(15)—图论基础

1.有向图和无向图 1.1什么是图? 图是表示各种关系的节点和边的集合: • 节点 是与对象对应的顶点。 • 边 是对象之间的连接。 • 图的边有时会有权重 ,表示节点之间的每个连接的强度(或一些其他属性)。 这些定…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...

CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx

“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网(IIoT)场景中,结合 DDS(Data Distribution Service) 和 Rx(Reactive Extensions) 技术,实现 …...