mysql-cluster7.6.8 安装笔记,auto-installer体验

前言

mysql-cluster很早就有,以前用过,各种问题不断弃用了。

已经很久远了,近期又关注了一下,cluster版本已经有了很大的改进,于是又来尝试一下。

截至2018/11/6,mysql-cluster最新稳定版本为7.6.8

因为安装后发现有一个高级的功能尚未支持(后续说明),于是我果断又取了开发版本MySQL Cluster 8.0.13 ,又玩了一遍,遗憾的是仍然还未支持~~

准备

Linux主机两个

远程机windows(auto-installer可以通过web-ui方式远程配置集群,这个服务有msi安装版,也可以从linux运行服务。总之操作时是通过浏览器界面进行)

官网下载linux版本包:mysql-cluster-community-7.6.8-1.el6.x86_64.rpm-bundle.tar

Windows MSI Installer:mysql-cluster-8.0.13-dmr-winx64.msi(这个装了之后可以直接从windows启动web服务,不装也可以通过安装上面的linux包中的服务运行python启动文件开启web服务。这个方便运行installer)

开始

各linux上先进行以下安装

查看已安装的mysql服务
rpm -qa|grep mysql

卸载旧mysql(上面返回的名称)
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

解压安装包
tar -xvf mysql-cluster-community-7.6.8-1.el6.x86_64.rpm-bundle.tar

安装依赖
yum install libaio perl perl-Time-HiRes numactl python-crypto python-paramiko

安装cluster服务
rpm -aivh mysql-cluster-community-server-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-client-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-common-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-libs-7.6.8-1.el6.x86_64.rpm 

安装cluster服务
rpm -aivh mysql-cluster-community-data-node-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-embedded-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-management-server-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-memcached-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-ndbclient-7.6.8-1.el6.x86_64.rpm mysql-cluster-community-nodejs-7.6.8-1.el6.x86_64.rpm

开启相关端口3306等,停用防火墙先完成安装测试
service iptables status
service iptables stop

...?复制启动文件,因为启动文件目录只能配置一个,但默认安装路径是多个,可以硬链接到一个文件夹
cp /usr/sbin/ndb_mgmd /usr/bin/
cp /usr/sbin/ndbmtd /usr/bin/
cp /usr/sbin/mysqld /usr/bin/
(后来发现这步骤可能不需要,主要是autoinstall时说找不到相关文件才做此拷贝)

创建用户mysqlcluster(直接用root会有一个报错,默认不允许以root启动)
useradd mysqlcluster
passwd mysqlcluster

以上,Linux上的服务基本安装完毕了。windows下msi安装,都是傻瓜式安装一路下一步即可。

安装好然后,进入安装目录运行setup.bat即可打开web界面。

(此处查看setup.bat脚本,可以看到是通过python运行ndb_setup.py,如果不安装msi可以在linux找到这个文件运行也是同样效果。linux:/usr/bin/ndb_setup.py,如果未找到可通过locate ndb_setup.py找一下,没有locate可以先yum install mlocate,然后执行updatedb更新索引,再locate  ndb_setup.py即可找到)

运行setup.bat服务启动后会自动弹开浏览器:

上图默认只会有一个new的选项,后两个是我操作过的记录

输入两个相同的密码,continue一个配置就开始了,提示让输入一个配置的名称,作为下次的记录。

它会在你的用户目录下生成一个.mcc加密文件,另外这个pid是当前web服务运行的文件,如果web服务意外终止而pid未删除的话下次setup.bat启动会提示已有服务在运行,手动删除即可。

继续

host list填写多个服务ip,逗号相连。

application area选择运行在什么环境,三个选项:

simple testing 简单测试

web application 生产环境,会提示占用最大的资源,其它本机服务会被影响

realtime 与上一个配置基本类似,但会对超时更敏感,更快的相应失败,也就是timeout更多心跳频率更高。

(右上角有个help,其实文档说明还是很详细的,不过是全英文,每个页面有单独的说明详细到每个选项)

页面往下滚动一点:

这个厉害了,是安装cluster的选项,可从repo仓库、docker仓库或者both同时。

然而到最后发现当前版本并不支持,就是前面提到拉取开发版本的目的。

不过从规划来看,后续服务器上述操作都可以省略了,通过web方式傻瓜式安装,想想都很给力。

继续

open fw ports 在防火墙中帮你打开需要的端口,之前已经关掉了防火墙,可以忽略。

直接点 [save&next] 按钮

这个页面会解析前页填写的host,远程访问,获取相应状态信息,但bin目录填写的不对,需要自己手动调整到对的位置。数据目录可以自行指定,用来存储数据。此处可单独选择修改每个host的信息,也可以批量修改,但批量会有个bug,host也就是ip会批量成相同的~需要再一个个改回来……

[save&next]

这个界面,布置cluster各服务,api node用于api方式调用的监听服务,不太需要可以都移除。

management节点管理节点,属于中心节点,做各种决策,默认有一个,可以在其它服务器再加一个,挂了可以自动切换。

multi data node多线程数据节点,对应还有一个单线程数据节点,最终存储数据的服务节点。

sql node数据服务节点,实际客户端连接的就是这些节点了,向这个节点发sql如果是cluster的操作会发给中心再并行处理。

[save&next]

这个环节可以对各个服务节点进行详细的配置,点击每个服务,右侧点加号即可修改。每一项都有个“?”,还是很细致的。
注意:小节点与根节点都有配置项,根节点上是一些通用配置。

[save&next]

当前页面进来左侧各服务是齿轮图标,就是还没有启动。

已经是最后的环节了,可以看到[install cluster]是灰色的,开始我以为哪里出错了,调了很久,后发现右上角的help文档中有提及:

  • Install cluster: Not available in this version.

不支持你倒是别显示呀……

另外有一个坑,不要轻易刷新页面,随时可能丢失这些配置(虽然前面有保存名称,但……),不过即使丢了你仍可以重新输入正确的配置以找回相同的环境~

继续

[deploy cluster] 自动生成集群的配置

[start cluster]直接启动如果没deploy也会生成配置,并逐一启动服务。

顺利启动后就都是绿灯了。如果红绿灯交替变换,可能是端口没开或网络不畅。

 

客户端连接测试

分别连上两个sql节点,此时还没有密码,需要本机连,做一些基本配置。

设置root密码,以及可远程连接
mysql -uroot -h127.0.0.1 -A
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;

# 修改密码(如果你需要)
# update user set password=PASSWORD('123456') where user='root';

设置默认引擎(如果不需要也可以不配置)
	当前默认引擎
	show variables like '%engine%';
	显示支持引擎
	show engines;
设置默认ndbcluster
set default_storage_engine=ndbcluster;
set global default_storage_engine=ndbcluster;

引擎配置重启后失效,可修改配置文件 my.cnf
default-storage-engine = ndbcluster

为了便于后续测试,配置请求包最大允许100M
set global max_allowed_packet = 100 * 1024 * 1024
-> my.cnf 
max_allowed_packet = 100M

这里my.cnf是installer自动生成的,修改后仍然用installer重启会被覆盖,很坑,于是我改了一下它的源码。
mysql-cluster\share\mcc\frontend\js\mcc\configuration\deploy.js
文件中搜索my.cnf,你会知道在哪加入下列代码的

// slzs 增加配置
addln(configFile, "default-storage-engine=ndbcluster"); // 默认cluster引擎
addln(configFile, "max_allowed_packet=100M");			// 单次请求包最大允许100M

此时已经可以通过客户端工具直接连接数据库了

创建两个连接,分别连两个sql节点

在174上创建一个数据库,刷新176,可以看到同步创建了数据库

 

建表测试

   -> 在174创建一个InnoDB引擎的表test_innodb
   => 在176中没有同步生成

   -> 在174中创建一个ndbcluster引擎的表test_cluster
   => 在176中刷新,发现表同步创建

   -> 向test_cluster写入数据
   => 任意节点操作可互相同步

   -> 在176中修改test_cluster引擎为innodb
   => 174中表被删除,176中表更新为innodb,数据未丢失

   -> 再修改test_cluster引擎为ndbcluster
   => 174表恢复了,此处发现默认排序发生了变化,应该是完全同步了176中的默认排序,之前两个表的默认排序不同,与写入与同步顺序有关

 

支持多种引擎,其它引擎表仍然是单机操作,在应用时可以只连接一台作为主机,同时享受各种引擎便利又可享受cluster自动分片功能,缺点就是牺牲了部分集群特性,负载均衡、宕机切换等。

如果统一用ndbcluster引擎,则牺牲其它引擎的特性,行数据尺寸受限、事物级别READ COMMITTED等。

行数据尺寸这部分会在表设计时约束,比如varchar(2000),会检查各字段定义max的相加的总和进行约束限制,而不是插入数据时异常。

实际应用测试一下。

--> 见下篇

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值