Mysql NDB Cluster 搭建

文章目录

  • 准备
    • 简单说
      • 集群的横向扩展
    • 查资料
      • 动手做
      • 配置相关的配置文件
        • MGM config.ini
        • NDB my.cnf
        • SQL-Node my.cnf
  • 参考

准备

简单说

  • Mysql NDB Cluster,大家都明白是 Mysql 数据库的一种高可用解决方案,是为了解决单点机器故障后,不能继续为我们的应用提供数据库支持的问题而产生的。
  • 那么,Mysql NDB Cluster 本身能做什么?不能做什么呢?
  • 能,横向扩展增加单点 Mysql 数据库,保证整个集群无论时候,只要有一台机器活着,就能说是这个集群在对外输出数据。
  • 不能,负载均衡,故障转移
  • 而官方说的,负载均衡、故障转移相关都是与Mysql Router 或者 Mysql 的 java-connector.jar 结合起来实现的。

集群的横向扩展

集群的作用大概解决三个问题:

  1. 高可用(数据库的存活)
  2. 数据库响应速度(可以多节点同时处理一个请求)
  3. 数据库上限(灵活的加入一个节点后,使用SQL调整表空间上限)
  • 注意:ndbcluster 表空间不支持自动扩展大小
  • 需要手动 SQL 操作表空间

查资料

  • 我是按照参考里的MySQL Cluster搭建与测试进行搭建的。VMware 我选的 10,比较稳定。系统选的 Linux,用的 Centos7,建议使用参考里的阿里巴巴镜像库去下载,比较快。

动手做

  • 需要先移除一个依赖
    • mariadb-libs
    yum remove mariadb-libs
    
  • 需要先安装四个依赖
    • DBI
    yum install perl-DBI
    
    • MethodMaker ,如果安装失败的话,直接下载RPM包离线安装即可
    yum install perl-Class-MethodMaker
    
    • libaio
    yum install libaio
    
    • net-tools
    yum install net-tools
    
  • Mysql Cluster SQL Server Node
    • 按照顺序安装各个rpm包, common -> libs -> client -> server
    • 启动 Mysql Server 可以用命令 systemctl start mysqld.service
    • ps -A 可以查看 mysql 进程是否启动
    • 在安装好后,我们可以在目录 /etc/my.cnf 中找到一个 mysqld.log 的路径,顺着路径打开它可以看到 2019-04-19T09:36:30.208338Z 1 [Note] A temporary password is generated for root@localhost: rytg/2u78kjM 类似于这么一句话,其中 rytg/2u78kjM 就是我们数据库的初始密码
    • mysql -u root -p 用来登录我们的MySQL Server
    • 第一次登陆需要重置密码 教你重置 Linux 下的 Mysql 密码
    • 我们在连接3306端口的时候可能遇到连不上的情况,这里我建议大家直接关掉虚拟机的防火墙 systemctl [stop|start|restart] firewalld 比较省劲儿,如果实在想解决端口连接的问题,可以点这里
    • 远程连接授权,可以参考这里
    • 停掉 Mysql Server 服务,systemctl stop mysqld.service,在更改了 my.cnf的配置文件后,使用 mysqld启动 Mysql Server 服务
  • Mysql Cluster SQL NDB Node
    • rpm 相关的包
  • Mysql Cluster SQL MGM Node
    • rpm 相关的包

配置相关的配置文件

MGM config.ini

[ndbd default]
NoOfReplicas=2
[ndb_mgmd]
Hostname=192.168.147.138
[ndbd]
HostName=192.168.147.139
[ndbd]
HostName=192.168.147.140
[mysqld]
HostName=192.168.147.136
[mysqld]
HostName=192.168.147.137

NDB my.cnf

[mysql_cluster]
ndb-connectstring=192.168.147.138

SQL-Node my.cnf

ndbcluster
ndb-connectstring=192.168.147.138
user=root												# 这里需要加上,不然在日志里会报出个“Please read "Security" section of the manual to find out how to run mysqld a”

[MYSQL_CLUSTER]
ndb-connectstring=192.168.147.138

  1. 在开始安装 rpm 包的时候,比如 common 包,也许会遇到冲突的情况,需要解决下
[root@SQL-Node-1 src]# rpm -i --test mysql-cluster-community-common-7.6.9-1.el7.x86_64.rpm
警告:mysql-cluster-community-common-7.6.9-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
	file /usr/share/mysql/czech/errmsg.sys from install of mysql-cluster-community-common-7.6.9-1.el7.x86_64 conflicts with file from package mariadb-libs-1:5.5.60-1.el7_5.x86_64
	file /usr/share/mysql/danish/errmsg.sys from install of mysql-cluster-community-common-7.6.9-1.el7.x86_64 conflicts with file from package mariadb-libs-1:5.5.60-1.el7_5.x86_64
	...	[这里省略好多]

此时可以使用,将冲突的包删除,再执行安装

[root@SQL-Node-1 src]# yum -y remove mariadb-libs
  1. 在安装 client 时候也许会报出如下错误
[root@SQL-Node-1 src]# rpm -ivh mysql-cluster-community-client-7.6.9-1.el7.x86_64.rpm
警告:mysql-cluster-community-client-7.6.9-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
	perl(Class::MethodMaker) 被 mysql-cluster-community-client-7.6.9-1.el7.x86_64 需要

此时需要我们离线下载 perl-Class-MethodMaker 的 rpm 包手动进行安装
可以在参考中找到提示

参考

  • CentOS7 安装 MySQL Cluster 7.6.7
  • MySQL Cluster搭建与测试
  • 阿里巴巴镜像库
  • Class-MethodMaker 下载地址
  • tar.gz安装与卸载
  • linux 下如何安装 tar.gz包
  • 解决Can’t locate ExtUtils/MakeMaker.pm in @INC
  • 解决ExtUtils::MM_Unix::tool_xsubpp : Can’t find xsubpp at /usr/…
  • 这是一个下载rpm包的好网站
  • 手把手教你用Mysql-Cluster-7.5搭建数据库集群

你可能感兴趣的:(failover,mysql,mysql,cluster)