Mysql-Cluster 集群部署

  • 1.环境介绍(centos7,mysql-cluster-gpl-7.6.6)
  • 2.安装准备
  • 3.集群安装
    • 配置文档
      • a.管理节点
      • b.数据节点、SQL节点
    • 3.1管理节点
    • 3.2数据节点
    • 3.3SQL节点
  • 4.测试
  • 5.异常排查

1.环境介绍(centos7,mysql-cluster-gpl-7.6.6)

名称 ip 端口
管理节点 192.168.198.235 1186
数据节点 192.168.198.186 2202
SQL节点 192.168.198.241、192.168.198.171 3306

【1.管理节点】

管理节点主要是用来对其他的节点进行管理。通常通过配置config.ini文件来配置集群中有多少需要维护的副本、配置每个数据节点上为数据和索引分配多少内存、IP地址、以及在每个数据节点上保存数据的磁盘路径;

管理节点通常管理Cluster配置文件和Cluster日志。Cluster中的每个节点从管理服务器检索配置信息,并请求确定管理服务器所在位置的方式。如果节点内出现新的事件的时候,节点将这类事件的信息传输到管理服务器,将这类信息写入到Cluster日志中;

一般在MySQL Cluster体系中至少需要一个管理节点,另外值得注意的是,因为数据节点和SQL节点在启动之前需要读取Cluster的配置信息,所以通常管理节点是最先启动的;

【2.数据节点】

数据节点用来存放Cluster里面的数据,MySQL Cluster在各个数据节点之间复制数据,任何一个节点发生了故障,始终会有另外的数据节点存储数据;

【3.SQL节点】

SQL节点简单地讲就是mysqld服务器,应用不能直接访问数据节点,只能通过SQL节点访问数据节点来返回数据。任何一个SQL节点都是连接到所有的存储节点的,所以当人任何一个存储节点发生故障的时候,SQL节点都可以把请求转移到另一个存储节点执行。通常来讲,SQL节点越多越好,SQL节点越多,分配到每个SQL节点的负载就越小,系统的整体性能就越好;

2.安装准备

卸载以前安装的Mysql 或者 mariadb

yum -y remove mysql*
yum -y remove mariadb*
#查看是否还有mysql命令
rpm -qa |grep mysql
#查看是否还有mysql目录
find / -name mysql
#检查是否还有mysql环境变量
cat /etc/profile

开启对应端口

firewall-cmd --add-port=1186/tcp --zone=public --permanent
firewall-cmd --add-port=2202/tcp --zone=public --permanent
firewall-cmd --add-port=3306/tcp --zone=public --permanent
systemctl restart firewalld.service

不管是Management Server,还是Data node、SQL node,都需要先安装MySQL集群版本。
安装之前准备好mysql用户和mysql用户组,相关命令:

userdel -r mysql
groupadd mysql
useradd -g mysql mysql

3.集群安装

注:所有服务器上都需要执行以下操作来安装MySQL集群版本。

tar -xzvf mysql-cluster-gpl-7.6.6-linux-glibc2.12-x86_64.tar.gzmkdir /usr/local/mysql
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql

点击进入官网下载所需版本

配置文档

a.管理节点

管理节点需要删除/etc/my.cnf文件,因为ndb_mgmd启动的时候,也会加上/etc/my.cnf的配置内容,否则会有影响

rm -fr etc/my.cnf
mkdir /usr/local/mysql/mysql-cluster
vi /usr/local/mysql/mysql-cluster/config.ini

[ndbd default]:表示每个数据节点的默认配置,在每个节点的[ndbd ]中不用再写这些选项。

NoOfReplicas:副本数量,数据节点数必须是副本数的整数倍。

[ndb_mgmd]:表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。

[ndbd]:表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。

[mysqld]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。

编辑配置文件

#默认配置
[ndbd default]
NoOfReplicas=1 #数据节点数量
ServerPort=2202 #虽然默认端口是2202但是不再次声明可能实际的启动端口并非这个,导致连接失败#管理节点
[ndb_mgmd]
nodeid=1
HostName=192.168.198.235
DataDir=/usr/local/mysql/mysql-cluster#数据节点
[ndbd]
nodeid=2
HostName=192.168.198.186
DataDir=/usr/local/mysql/data#sql节点
[mysqld]
nodeid=3
HostName=192.168.198.241#必须有空的mysqld节点,不然数据节点断开后启动有报错
[mysqld]
nodeid=4[mysqld]
nodeid=5

b.数据节点、SQL节点

他们的配置一样,编辑配置文件 vi /etc/my.cnf

[mysqld]
ndbcluster[mysql_cluster]
# 多个管理节点用,隔开
ndb-connectstring=192.168.198.235

3.1管理节点

管理节点会用到 ndb_mgm和ndb_mgmd,其他可以删除

ndb_mgm,ndb客户端命令
ndb_mgmd,ndb管理节点启动命令
ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客户端管理工具,通过它可以方便的检查Cluster的状态、启动备份、关闭Cluster等功能。

创建相应存放目录

mkdir /usr/local/mysql/bin
cp mysql-cluster-gpl-7.6.6-linux-glibc2.12-x86_64/bin/ndb_mgm* /usr/local/mysql/bin
cd /usr/local/mysql/bin
chmod +x ndb_mgm*

默认创建 /usr/local/mysql/mysql-cluster目录,有时候需要清理掉/usr/local/mysql/mysql-cluster
首次启动要–-initial 在以后的启动过程中不能添加。如果在启动后又添加了一个数据节点,这时修改了配置文件启动时就必须加上–initial参数,不然添加的节点不会作用在mysql-cluster中。

/usr/local/mysql/bin/ndb_mgmd -f /usr/local/mysql/mysql-cluster/config.ini --initial

关闭集群

/usr/local/mysql/bin/ndb_mgm -e shutdown

通过 lsof -i:1186netstat -ntlp | grep ndb_mgmd查看是否成功启动

查看管理节点

/usr/local/mysql/bin/ndb_mgm -e show

3.2数据节点

创建相应存放目录

mkdir /usr/local/mysql/bin
cp mysql-cluster-gpl-7.6.6-linux-glibc2.12-x86_64/bin/ndb_mgm* /usr/local/mysql/bin
cp mysql-cluster-gpl-7.6.6-linux-glibc2.12-x86_64/bin/ndbmtd /usr/local/mysql/bin
cp mysql-cluster-gpl-7.6.6-linux-glibc2.12-x86_64/bin/ndbd /usr/local/mysql/bin
cd /usr/local/mysql/bin
chmod +x ndb_mgm*

(首次启动要 –-initial) 进行NDB节点的初始化工作。在以后的启动过程中,不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件

/usr/local/mysql/bin/ndbd –-initial

显示已成功连接到管理节点,被分配节点id为2


通过 netstat -ntlp | grep ndbd查看是否成功启动

3.3SQL节点

创建相应存放目录

mv /usr/local/src/mysql-cluster-gpl-7.6.6-linux-glibc2.12-x86_64/* /usr/local/mysql
mkdir /usr/local/mysql/sock

安装MySQL(我们可以看到root@localhost 被赋予随机生成的一个密码)

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

复制mysqld到系统服务里面去并重命名为mysqld,以后就可以使用start、stop、restart命令进行操作了

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

启动 service mysqld start 可以看到日志路径: /usr/local/mysql/data/localhost.err

通过 netstat -ntlp | grep mysqld查看是否成功启动

mysql_install_db 这个工具也不再被推荐了, mysql_install_db is deprecated. Please consider switching to mysqld --initialize 另外,在初始化时如果加上 –initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中(在5.6版本中是放在 ~/.mysql_secret 文件里,更加隐蔽,不熟悉的话可能会无所适从)

#启动后修改密码(注意-p 不要和后面的密码分开写,要写在一起,密码必须要与其他服务器上的数据库设置的密码相同),也可进入服务后使用set password for root@localhost = password('新密码');

/usr/local/mysql/bin/mysqladmin -u root -pr=y&?o7fXwo+ password mysql

进入mysql服务

/usr/local/mysql/bin/mysql -u root -p
mysql> show databases;

启用远程登陆
在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为’%’。

mysql>use mysql;mysql>select host, user from user where user = 'root';mysql>update user set host ='%'where user ='root' and host ='localhost';mysql>flush privileges;

4.测试

首先在管理节点查看各个节点的连接状态,如图一切正常


进入241上的mysql进行如下操作:

注意:创建表的时候使用ndb引擎

mysql> create database test;
Query OK, 1 row affected (0.05 sec)mysql> use test;
Database changed
mysql>  create table test(id int,name varchar(10)) engine=ndb ;
Query OK, 0 rows affected (0.25 sec)mysql> insert into test values(1,'test');
Query OK, 1 row affected (0.01 sec)mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | test |
+------+------+
1 row in set (0.00 sec)

进入171上的mysql进行查询:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ndbinfo            |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | test |
+------+------+
1 row in set (0.00 sec)

可见数据已经成功的进行同步

5.异常排查

查看错误信息和日志肯定是首要的切入点

SQl节点: not connected, accepting connect from 192.168.198.241

查看SQL节点的日志路径:vim /usr/local/mysql/data/localdomain.err 发现存储节点连接超时,如下图


于是定位到数据节点服务日志:/usr/local/mysql/data/ndb_2_error.log


日志提示节点空间不足,可通过df -h进行查看,尝试扩展硬盘空间,最终得以解决。

Couldn’t start as daemon, error: 'Failed to lock pidfile ‘/usr/local/mysql/data/ndb_2.pid’, already locked by pid=613, errno: 11’
这个是端口进程被占用,可通过 lsof -i:(对应host)ps -ef | grep mysql 然后 kill -9 PID 后再次启动

Mysql-Cluster 集群部署相关推荐

  1. Mysql Cluster集群实现高可用

    MySQL集群搭建实现高可用 本节所讲内容: l MySQL 集群 概述 l 实战:MySQL 集群 搭建 1  MySQL集群概述和安装环境 MySQL Cluster是MySQL适合于分布式计算环 ...

  2. MySQL cluster集群/NDB集群学习

    公司主业务用的MySQL集群是官方自带的MySQL Cluster,MySQL自带的集群模式,这个集群的模式和MGR.PXC.主从 有点不一样. 一.存储引擎不是innodb,MySQL Cluste ...

  3. mysql cluster rpm包的作用_MySQL之——MySQL Cluster集群搭建详解(基于RPM安装包)

    1.下载MySQL-cluster 7.3.7 http://dev.mysql.com/downloads/cluster/ 2.环境清理及安装 1)清理CentOS6.5自带的mysql服务,其中 ...

  4. MariaDB Galera Cluster 集群部署

    MariaDB Galera Cluster 介绍 Galera Cluster是Codership公司开发的一套免费开源的高可用方案,Galera Cluster即安装了Galera的Mariadb ...

  5. MySQL Cluster集群配置方案

    在为某证券公司设计其OA架构时,初期客户是30万用户在线:然而在项目实施中,客户又提出50万用户同时在线的需求,而且都有写的需求:这样初始的设计 master-master-slave,读写分离满足不 ...

  6. 正式环境使用Mysql MGR集群部署(一看就会)

    1.MySQL 5.7 推出了 MGR(MySQL Group Replication),能让我们方便的创建弹性.高可用.容错的复制拓扑. MGR 单主和多主两个模式. 单主模式:自动选主,每次只能接 ...

  7. Mysql Cluster 集群 windows版本

    VM1:192.168.220.102 管理节点(MGM) VM2:192.168.220.103 数据节点(NDBD1),SQL节点(SQL1) VM3:192.168.220.104 数据节点(N ...

  8. Redis Cluster 集群部署

    2.4:Redis Cluster 部署 2.4.1:部署 Redis Cluster 的前提 时间同步: Redis Node 均采用相同的硬件配置.相同的密码.相同的 Redis 版本: Redi ...

  9. Windows下Mysql Cluster集群启动脚本与启动服务添加方法

    3.2.8    集群启动脚本及启动服务注册 从上面的启动过程我们可以看出,Mysql集群启动命令较复杂,容易造成cmd窗口因误操作关闭而导致的数据库停止,在此我介绍一下如何将这些命令的操作变成win ...

  10. redis 3.0.7 cluster 集群部署

    一.环境描述 DB:redis 3.0.7 最新稳定版 OS:centos 6.6_x64 二.安装步骤 1.基本软件包安装 [root@mysql-121 ~]# yum -y install ru ...

最新文章

  1. Django的第二次尝试
  2. spring第一个小例子(Spring_xjs1)
  3. VLC播放器web插件接口(Part2)
  4. matlab中循环保存数据
  5. hdu 1023 大数 卡特兰数
  6. 3、CommonChunkPlugin提取公共js-以提取一个jquery为例
  7. 设计灵感|三维时代!C4D人物设计案例
  8. 实习生有年终奖吗_“辞职,一定要赶在发年终奖前!”为什么我建议你一定要年前跳槽...
  9. [转]vs2010 MSDN文档安装方法
  10. 山西计算机职业学校排名2015,2015山西专科学校排名及排行榜
  11. 深度学习行人检测简介_深度学习简介
  12. 计算机二级C语言知识点
  13. CRITIC权重指标如何计算?
  14. 极客日报第 35 期:国外运营商拒为小米 10T Pro 启用双卡;苹果明年 9 月或发布电动汽车;谷歌被指与 Facebook 密谋垄断
  15. 网站跳出率高怎么解决?
  16. 运维工程师必会原理知识
  17. Windows系统中VMWare虚拟机屏幕分辨率调整
  18. 原生Python实现KNN算法,并用鸢尾花(iris)数据集测试
  19. 数据结构与算法——23. 用嵌套列表与链表实现树结构
  20. JavaScript深入浅出(进阶)

热门文章

  1. HTML的iframe标签
  2. Win系统上最好用的epub阅读器
  3. 目标检测 YOLO系列算法
  4. eDP接口信号组成认识
  5. Android viewpager2 + indicator 实现页面滑动
  6. 微信应用域名所有权验证管理
  7. Windows 免费 HEVC 解码器 下载
  8. python中frame用法_python:pandas中dataframe的基本用法汇总
  9. linux 文件名带日期,在linux中追加日期到文件名
  10. 固态SSD的认知与保养