Mysql-Cluster 集群部署
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:1186
或netstat -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 集群部署相关推荐
- Mysql Cluster集群实现高可用
MySQL集群搭建实现高可用 本节所讲内容: l MySQL 集群 概述 l 实战:MySQL 集群 搭建 1 MySQL集群概述和安装环境 MySQL Cluster是MySQL适合于分布式计算环 ...
- MySQL cluster集群/NDB集群学习
公司主业务用的MySQL集群是官方自带的MySQL Cluster,MySQL自带的集群模式,这个集群的模式和MGR.PXC.主从 有点不一样. 一.存储引擎不是innodb,MySQL Cluste ...
- mysql cluster rpm包的作用_MySQL之——MySQL Cluster集群搭建详解(基于RPM安装包)
1.下载MySQL-cluster 7.3.7 http://dev.mysql.com/downloads/cluster/ 2.环境清理及安装 1)清理CentOS6.5自带的mysql服务,其中 ...
- MariaDB Galera Cluster 集群部署
MariaDB Galera Cluster 介绍 Galera Cluster是Codership公司开发的一套免费开源的高可用方案,Galera Cluster即安装了Galera的Mariadb ...
- MySQL Cluster集群配置方案
在为某证券公司设计其OA架构时,初期客户是30万用户在线:然而在项目实施中,客户又提出50万用户同时在线的需求,而且都有写的需求:这样初始的设计 master-master-slave,读写分离满足不 ...
- 正式环境使用Mysql MGR集群部署(一看就会)
1.MySQL 5.7 推出了 MGR(MySQL Group Replication),能让我们方便的创建弹性.高可用.容错的复制拓扑. MGR 单主和多主两个模式. 单主模式:自动选主,每次只能接 ...
- Mysql Cluster 集群 windows版本
VM1:192.168.220.102 管理节点(MGM) VM2:192.168.220.103 数据节点(NDBD1),SQL节点(SQL1) VM3:192.168.220.104 数据节点(N ...
- Redis Cluster 集群部署
2.4:Redis Cluster 部署 2.4.1:部署 Redis Cluster 的前提 时间同步: Redis Node 均采用相同的硬件配置.相同的密码.相同的 Redis 版本: Redi ...
- Windows下Mysql Cluster集群启动脚本与启动服务添加方法
3.2.8 集群启动脚本及启动服务注册 从上面的启动过程我们可以看出,Mysql集群启动命令较复杂,容易造成cmd窗口因误操作关闭而导致的数据库停止,在此我介绍一下如何将这些命令的操作变成win ...
- redis 3.0.7 cluster 集群部署
一.环境描述 DB:redis 3.0.7 最新稳定版 OS:centos 6.6_x64 二.安装步骤 1.基本软件包安装 [root@mysql-121 ~]# yum -y install ru ...
最新文章
- Django的第二次尝试
- spring第一个小例子(Spring_xjs1)
- VLC播放器web插件接口(Part2)
- matlab中循环保存数据
- hdu 1023 大数 卡特兰数
- 3、CommonChunkPlugin提取公共js-以提取一个jquery为例
- 设计灵感|三维时代!C4D人物设计案例
- 实习生有年终奖吗_“辞职,一定要赶在发年终奖前!”为什么我建议你一定要年前跳槽...
- [转]vs2010 MSDN文档安装方法
- 山西计算机职业学校排名2015,2015山西专科学校排名及排行榜
- 深度学习行人检测简介_深度学习简介
- 计算机二级C语言知识点
- CRITIC权重指标如何计算?
- 极客日报第 35 期:国外运营商拒为小米 10T Pro 启用双卡;苹果明年 9 月或发布电动汽车;谷歌被指与 Facebook 密谋垄断
- 网站跳出率高怎么解决?
- 运维工程师必会原理知识
- Windows系统中VMWare虚拟机屏幕分辨率调整
- 原生Python实现KNN算法,并用鸢尾花(iris)数据集测试
- 数据结构与算法——23. 用嵌套列表与链表实现树结构
- JavaScript深入浅出(进阶)