一、为什么要用MySQL Cluset分布式集群?

大家可以看这两位大佬的文章:
https://blog.csdn.net/qq_15092079/article/details/82665307
https://www.cnblogs.com/jesselzj/p/5609705.html

二、环境说明

2.1 系统环境

服务器 角色 环境说明
192.168.1.97 管理节点 系统:Ubuntu 16.04.6
192.168.1.99 数据节点 系统:Ubuntu 16.04.6
192.168.1.98 SQL节点 系统:Ubuntu 16.04.4
192.168.1.94 SQL节点 系统:Ubuntu 16.04.4

2.2 软件环境
mysql cluster 集群版本:mysql-cluster-gpl-7.6.12-linux-glibc2.12-x86_64
可到官网下载:https://dev.mysql.com/downloads/cluster/

三、 安装MySQL Cluster

所有服务器均需执行执行以下操作

注意:在安装mysql cluster之前,必须得先检查该服务器上是否已安装了普通mysql,若安装了则需先把mysql删除干净,因为mysql cluster就包括了普通版mysql;

 1. 删除mysql   a. sudo apt-get autoremove --purge mysql-server-5.0(版本可不写5.0)b. sudo apt-get remove mysql-serverc. sudo apt-get autoremove mysql-serverd. sudo apt-get remove mysql-common (必须)2. 清理缓存数据dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

在安装管理节点、数据节点和sql节点时,最好以root用户登录执行,否则有一些步骤需要用到sudo命令来执行。
3.1、开始安装

第一步:tar -xavf mysql-cluster-gpl-7.6.12-linux-glibc2.12-x86_64\ .tar.gz
第二步,解压过后:sudo mkdir /usr/local/mysql
第三步:sudo cp -r /home/xgp/python_tools/mysql-cluster-gpl-7.6.12-linux-glibc2.12-x86_64/* /usr/local/mysql每个服务器都需要一份

四、配置安装管理节点

在服务器 192.168.1.97上执行以下操作。
注意,管理节点的防火墙端口开放,默认是1186。
4.1、 拷贝命令

#将文件ndb_mgm和ndb_mgmd拷贝到/usr/local/bin/目录下
1:sudo cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/
2:sudo chmod +x /usr/local/bin/ndb_mgm*

4.2、配置文件

 # 创建数据库集群配置文件的目录1:sudo mkdir /var/lib/mysql-cluster# 创建并编辑配置文件2:sudo vim /var/lib/mysql-cluster/config.ini3:[ndbd default]NoOfReplicas=1DataMemory=200MIndexMemory=64M[ndb_mgmd]NodeId=1hostname=192.168.1.97datadir=/var/lib/mysql-cluster[ndbd]NodeId=3hostname=192.168.1.99datadir=/usr/local/mysql/data/[mysqld]NodeId=4hostname=192.168.1.94[mysqld]NodeId=5hostname=192.168.1.98[NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。NoOfReplicas:副本数量,数据节点数必须是副本数的整数倍。[NDB_MGMD]:表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。[NDBD]:表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。

4.3、启动管理节点

# 第一次启动
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
# 以后启动
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini
# 如果以后修改配置文件
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reloadndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。
如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,
不然添加的节点不会作用在mysql cluster中

五、 配置安装数据节点

在服务器 192.168.1.99 上执行以下操作。

注意,数据节点的端口开放问题,最好把防火墙关闭,虽然之前版本的默认端口号时2202,但是好像时5.1之后的端口号就没有限制(看哪个端口空闲就用哪个端口),即与sql节点通信的端口号会随机变换。若没有关闭防火墙,后面在管理节点查看集群状态的时候,可能会出现mysql节点老是连接不上的问题。
5.1、配置my.cnf文件

sudo vim /etc/my.cnf
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306
# 以下两句可要可不要,给单张表添加大小
tmp_table_size = 500M
max_heap_table_size = 500M[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid[mysql_cluster]
ndb-connectstring=192.168.1.97:1186

5.2、安装mysql数据库

5.2.1 更改权限#分别添加mysql组和mysql用户groupadd mysqluseradd mysql -g mysql#进入mysql目录cd /usr/local/mysql/#把mysql的目录设置成所有者为rootchown -R root .#创建data目录,并把data目录设置所有者为mysqlmkdir datachown -R mysql data#把mysql的目录改成所属组为mysqlchgrp -R mysql .
5.2.2 执行安装脚本
一:sudo ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
结果如下:2019-11-07T10:20:33.970981Z 1 [Note] A temporary password is generated for root@localhost: ,sFna=hgQ3rP # 初始账号:root,密码:,sFna=hgQ3rP
5.2.3 修改数据库密码# 加入到service服务sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldsudo chmod +x /etc/init.d/mysqldsudo update-rc.d ./mysqld defaults (/etc/init.d 在这个目录下操作)sudo service mysqld start
5.2.4 进入数据库sudo /usr/local/mysql/bin/mysql -uroot -p # 这里输入最开始的原始密码set password=password('新的密码');mysql> show databases;# 结果如下:+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.00 sec)
5.2.5 开启远程1,use mysql2,update user set host = '%' where user = 'root';3,flush privileges;

5.3、启动数据节点

第一次启动如下:sudo /usr/local/mysql/bin/ndbd --initial
非第一次启动如下:sudo /usr/local/mysql/bin/ndbd安装后第一次启动数据节点时要加上--initial参数。在以后的启动过程中,
则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。

六、配置SQL节点

分别在服务器192.168.1.194192.168.1.98上执行以下操作。

6.1、配置my.cnf文件
mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,故需要修改/etc/my.cnf配置文件。

[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306
tmp_table_size = 500M
max_heap_table_size = 500M[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid[mysql_cluster]
ndb-connectstring=192.168.1.97:1186

default-storage-engine,数据库建表时的默认引擎为ndbcluster,否则数据会同步失败。
6.2、安装MySQL数库 同上:5.2 安装mysql数据库步骤
6.3、启动sql节点

service mysqld start

七、测试

7.1、用管理节点查看

ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 1 node(s)
id=3   @192.168.1.99  (mysql-5.7.28 ndb-7.6.12, Nodegroup: 0, *)[ndb_mgmd(MGM)]   1 node(s)
id=1   @192.168.1.97  (mysql-5.7.28 ndb-7.6.12)[mysqld(API)]  2 node(s)
id=4 (not connected, accepting connect from 192.168.1.94)  # 因为 94服务器运维正在维修。
id=5   @192.168.1.98  (mysql-5.7.28 ndb-7.6.12)

7.2、测试数据
连接任何一个sql节点,在此sql节点上操作,创建数据库、创建表结构、增删改等操作,在其他的sql节点上也会同步这些操作,使数据保持一致。在 192.168.1.98上进行操作

#登陆数据库
sudo /usr/local/mysql/bin/mysql -uroot -p
Enter password:输入密码#创建数据库mytest
mysql> create database mytest;#切换到mytest数据库
mysql> use mytest;#创建表结构sys_myfirst
mysql> create table sys_myfirst(id varchar(36) primary key, name varchar(100), memo varchar(255));#在sys_myfirst中添加几条数据
mysql> insert into sys_myfirst(id, name, memo) values('1','test1','hello world!');
mysql> insert into sys_myfirst(id, name, memo) values('2','test2','hello world haha!');
mysql> insert into sys_myfirst(id, name, memo) values('3','test3','hello world hehe!');#查看数据
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name  | memo              |
+----+-------+-------------------+
| 2  | test2 | hello world haha! |
| 1  | test1 | hello world!      |
| 3  | test3 | hello world hehe! |
+----+-------+-------------------+
3 rows in set (0.00 sec)

在sql节点192.168.1.94上查看数据

#这里就省去登陆mysql客户端的步骤了
#查看数据
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name  | memo              |
+----+-------+-------------------+
| 1  | test1 | hello world!      |
| 3  | test3 | hello world hehe! |
| 2  | test2 | hello world haha! |
+----+-------+-------------------+
3 rows in set (0.00 sec)以上是从别人的文章直接粘贴过来的,但是自己已经操作过了,是可行的连接如下:
原文链接:https://blog.csdn.net/qq_15092079/article/details/82665307

八、启动和停止集群

启动顺序:管理节点—数据节点—sql节点

停止顺序:管理节点(会同时停止管理节点和数据节点)—sql节点

以上是看网上的人都是这么说的,但是根据我的实践,其实sql节点可以一直保持启动状态(即使管理节点停止了也没关系,下次启动的时候会自动连接上此sql节点),只要第一次启动的时候遵循上面的顺序即可。
8.1、停止管理节点

#第一种方法
ndb_mgm -e shutdown#第二种方法
ndb_mgm
ndb_mgm> shutdown;

8.2、停止sql节点

# 其实就是停止mysql服务
service mysqld stop

以上配置就结束了,参考大佬连接如下:

https://blog.csdn.net/qq_42784891/article/details/86626163
https://blog.csdn.net/qq_15092079/article/details/82665307

九、总结

总体部署起来不算太难,以后用的时候在写心得

MySQL Cluste—分布式数据库集群搭建相关推荐

  1. MySQL Cluste(入门篇)—分布式数据库集群搭建

    目录 前言 1 概述 1.1 分布式数据库集群 1.2 数据库的分布式和主从的区别 2 环境说明 2.1 系统环境 2.2 软件环境 3 安装MySQL Cluster 4 配置安装管理节点 4.1 ...

  2. MySQL NDB Cluste-分布式数据库集群搭建

    1 概述 1.1 分布式数据库集群 Mysql cluster是适用于分布式计算环境的高可用.高冗余版本的mysql,其技术在分布式系统中为mysql数据提供了冗余特性,增强了安全性,使得单个mysq ...

  3. mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...

    为什么80%的码农都做不了架构师?>>>    <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...

  4. MinIO纠错码、分布式MinIO集群搭建及启动

    文章目录 前言 一.MinIO纠删码 二.分布式集群部署 1.分布式存储可靠性常用的方法 2.分布式MinIO 3.分布式MinIO集群搭建 3.1 下载MinIO 3.2 为每一台虚拟机创建目录并上 ...

  5. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档 MySQL Cluster简介 MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(share ...

  6. mysql cluster linux_【完美】Mysql-cluster数据库集群搭建(linux)

    介绍 <Mysql-cluster数据库集群介绍> 安装系统:Linux CentOS7.4查看是否安装mysqlrpm -qa | grep mysql普通删除rpm -e mysql强 ...

  7. Mycat高可用架构原理_Mycat集群搭建_HA高可用集群_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0027

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 前面我们已经讲了,对于数据库来说,mycat可以,我们通过搭建一主一从,双主双从,来实现数据库集群 ...

  8. 大型分布式数据库集群的研究

    1.为什么要设计成分布式数据库,数据为什么要分区? 当数据量很大的时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影响了最终用户的体验. 在大数据量下对数据库的装载与导出,备份 ...

  9. Ceph分布式文件系统集群搭建详解

    1.Ceph分布式文件系统简介 Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统. Ceph 独一无二地在一个统一的系统中同时提供了对象.块.和文件存储功能. 基开发目标是: ...

最新文章

  1. map 小模板~~~ 写的不好 继续添加
  2. mysql损坏表修复
  3. ACE中的Proactor介绍和应用实例
  4. 计算机语言发展及未来方向
  5. 异步通知实验(信号)
  6. 用.NetCore 编译国产老牌PHP论坛DiscuzX ,世界上最好的语言从此属于.Net 的一员
  7. 基于Windows 7旗舰版搭建WinCE6.0开发环境的过程
  8. NOIP2005复赛 普及组 第1题 陶陶摘苹果
  9. es6 Object.is()方法
  10. 微信小程序实现日历功能(附加签到、迟到、未签的状态显示)
  11. 【Python】区分List 和String
  12. 【Java并发性和多线程】竞态条件与临界区
  13. 一个简单的进程池版的爬虫程序
  14. jQuery中文文档(jQuery 3.1 参考手册+jQuery.api.3.2.1)
  15. C#带命令行参数调用外部程序
  16. 妹子,你早该放弃了...
  17. C语言中 两个分号啥意思,问什么C程序里总是提示缺少分号;,而明明有分号?...
  18. 蚂蚁金服 Service Mesh 技术风险思考和实践
  19. 常用的前端JavaScript方法封装
  20. esim工业路由器,爱陆通4G工业路由器5G工业路由器全网通工业路由器

热门文章

  1. 通达信 移动平均算法_通达信组合指标,如何使用股票池进行自动交易?实现程序化交易...
  2. 【数据结构】单链表的递归算法
  3. EmpireCMS_V7.5的一次审计
  4. 安卓使用无障碍服务监听微信和QQ的收款信息
  5. Linux 安装添加新的字体
  6. php 中insert into,php – INSERT INTO SQL Heredoc正确的语法
  7. 通达信,底峰形(买入信号之一)
  8. 阿里云服务器租用费用_轻量和ECS价格表
  9. KPI考核管理:有效提升企业绩效指标
  10. 大疆A型板使用经验分享(七)——大疆M3508电机和PID控制