本文主要用来学习MySQL NDB Cluster
解决学习过程中的痛点:需要开启N台VMware虚拟机,电脑不堪重负
使用docker部署,完美解决

本文使用的docker image: mysql/mysql-cluster:8.0

创建mysql_cluster目录,后续操作都在这个目录下

创建docker-compose.yaml

# docker exec -it ndb_management ndb_mgm
# docker exec -it ndb_mysqld1 mysql -uroot -p
# docker exec -it ndb_mysqld2 mysql -uroot -p
version: '3'
networks:my_cluster:driver: bridge
services:# 服务名,在同一个网络下的docker容器之间可以通过服务名访问,# 所以我在创建容器以及后面的配置文件中没有指定IPndb_management:image: mysql/mysql-cluster:8.0# 容器名,docker exec等命令用的container_name: ndb_management# 容器启动命令# command会传给entrypoint.sh并启动不同的服务# 这个就只是启动的 ~ $ ndb_mgmd --ndb-nodeid=1 ...command: ['ndb_mgmd','--ndb-nodeid=1','--reload','--initial']# 容器卷,用来配置集群# 集群配置文件为config.cnf# 对应到容器里面的/etc/mysql-cluster.cnf,至于为什么,大家可以去看下镜像的源码volumes:- ./config.cnf:/etc/mysql-cluster.cnf- ./my.cnf:/etc/my.cnf- ./ndb_mgmd:/var/lib/mysqlports:- "1186:1186"# 指定网络networks:- my_clusterndb_data1:image: mysql/mysql-cluster:8.0container_name: ndb_data1command: ['ndbd']volumes:- ./config.cnf:/etc/mysql-cluster.cnf- ./my.cnf:/etc/my.cnf- ./ndbd1:/var/lib/mysqlnetworks:- my_clusterndb_data2:image: mysql/mysql-cluster:8.0container_name: ndb_data2command: ['ndbd']volumes:- ./config.cnf:/etc/mysql-cluster.cnf- ./my.cnf:/etc/my.cnf- ./ndbd2:/var/lib/mysqlnetworks:- my_clusterndb_mysqld1:image: mysql/mysql-cluster:8.0container_name: ndb_mysqld1command: ['mysqld','--default-authentication-plugin=mysql_native_password']environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: myclustervolumes:- ./config.cnf:/etc/mysql-cluster.cnf- ./my.cnf:/etc/my.cnf- ./mysql1:/var/lib/mysqlnetworks:- my_clusterports:- "3306:3306"depends_on:- ndb_management- ndb_data1- ndb_data2ndb_mysqld2:image: mysql/mysql-cluster:8.0container_name: ndb_mysqld2command: ['mysqld','--default-authentication-plugin=mysql_native_password']environment:MYSQL_ROOT_PASSWORD: 123456volumes:- ./config.cnf:/etc/mysql-cluster.cnf- ./my.cnf:/etc/my.cnf- ./mysql2:/var/lib/mysqlnetworks:- my_clusterports:- "3307:3306"depends_on:- ndb_management- ndb_data1- ndb_data2

创建my.cnf

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
# 配置mysqld的初始化和启动参数,像这里我指定ndb_mgmd的地址为docker中的服务名
[mysqld]
ndbcluster
ndb-connectstring=ndb_management
user=mysql[mysql_cluster]
ndb-connectstring=ndb_management[ndbd]
connect-string=ndb_management[ndb_mgm]
connect-string=ndb_management

创建config.cnf

# file "config.ini" - showing minimal setup consisting of 1 data node,
# 1 management server, and 3 MySQL servers.
# The empty default sections are not required, and are shown only for
# the sake of completeness.
# Data nodes must provide a hostname but MySQL Servers are not required
# to do so.
# If you don't know the hostname for your machine, use localhost.
# The DataDir parameter also has a default value, but it is recommended to
# set it explicitly.
# Note: [db], [api], and [mgm] are aliases for [ndbd], [mysqld], and [ndb_mgmd],
# respectively. [db] is deprecated and should not be used in new installations.
# 配置ndb_mgmd启动时的集群相关信息
[ndbd default]
NoOfReplicas= 2[mysqld  default]
[ndb_mgmd default]
[tcp default][ndb_mgmd]
NodeId=1
hostname=ndb_management
DataDir=/var/lib/mysql[ndbd]
hostname=ndb_data1
DataDir=/var/lib/mysql[ndbd]
hostname=ndb_data2
DataDir=/var/lib/mysql
# MySQL API 节点不用特意指定hostname
[mysqld]
[mysqld]

完成相关卷目录创建

启动 docker-compose up -d

docker-compose前3行注释写了怎么进入数据库和ndb_mgm

最后MySQL NDB Cluster的最简单的环境已经搭建起来了,鼓掌

MySQL NDB Cluster使用docker compose一键部署相关推荐

  1. MySQL NDB Cluster部署方案与实践

    MySQL Cluster集群 一.概述 ​ MySQL Cluster是MySQL适用于分布式计算环境的高实用.高冗余版本.他采用了NDB Cluster存储引擎,允许在一个Cluster中运行多个 ...

  2. MySQL NDB Cluster

    1. MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署"内存中"数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求 ...

  3. 单机 docker 部署fastfds_云服务器使用docker可视化一键部署Wrodpress个人博客,操作简单,适合小白...

    原文链接在我的博客: 教你云服务器使用docker可视化一键部署Wrodpress个人博客,操作简单,适合小白 - Kyellow's blog​kyellow.gitee.io 前段时间领取了一台云 ...

  4. MySQL NDB Cluster 搭建

    格拉德韦尔在<异数>:成功之人并非天资超人一等,而是付出了持续不断的努力.只要经过1万小时的锤炼,任何人都能从平凡变成超凡.要成为某个领域的专家,需要10000小时:如果每天工作八个小时, ...

  5. APT安装MySQL NDB Cluster

    提醒 MySQL APT库支持在Debian和Ubuntu系统上安装MySQL NDB Cluster.因为Ubuntu 20.04或更高版本不支持mysql-cluster-community-au ...

  6. 【MySQL】MySQL NDB Cluster安装

    MySQL集群是一个无共享的(share-nothing).分布式节点架构的存储方案,目的是提供容错性和高性能. MySQL NDB Cluster架构如图: MySQL NDB Cluster架构按 ...

  7. Docker——compose简述部署

    前言 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置: ●支持健康检查,允许存储键值对: ●基于Golong语言,可移植性强: ●支持ACL访问控制: 与Doc ...

  8. MySQL NDB Cluster 集群简介

    简介 MySQL Cluster 是一个实时.高度可扩展且符合 ACID 要求的事务型数据库,既可以实现 99.999% 的可用性,又具备开源产品低 TCO 的优势.MySQL Cluster 采用一 ...

  9. IDEA官方 Docker 插件一键部署应用到远程服务器

    环境: jdk1.8及以上. Maven 3.2+ idea docker docker开启远程连接访问 首先我们要开启docker的远程连接访问.保证不是docker所在的服务器,也能够远程访问do ...

最新文章

  1. python程序实例电话本-零基础案例,别再错过了,动手Python做一个电话本小程序!...
  2. python程序员工作怎样-怎样才能成为一名Python程序员
  3. 无法创建接口的实例_什么是接口?
  4. App性能优化之内存优化
  5. MATLAB(六)数据处理
  6. 从应用启动看Activity的创建过程
  7. web前端基础(09html5多媒体)
  8. STM32学习—MCUISP一键下载
  9. 如何改变Android-studio中的APP的名字和图标
  10. OSI七层协议大白话解读
  11. Spark 学习: spark 原理简述与 shuffle 过程介绍
  12. Method类及其用法
  13. 有关龙的成语(词语)、故事、诗歌
  14. [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计)
  15. JointJS几个实用功能的简单实现
  16. Linux系列---搭建单机模式的ES
  17. http://www.v2ex.com/ 技术论坛
  18. 元宇宙系列--元宇宙介绍
  19. web前端——浏览器兼容问题
  20. mysql数据库连接失败_mysql数据库连接失败问题排查

热门文章

  1. [摘录]第11章 造就优势谈判的驱动力
  2. Babylon.js 深入 - 第 1 章 - 动画(1)
  3. 分享一个漂亮的NetBeans配色方案
  4. INTEL CPU型号详解分类:电脑硬件
  5. ISIJ 2018 玛雅文字
  6. js 关于双击会触发两次单击的解决方法
  7. C语言入门——a+b问题
  8. MapReduce算法(计算出10月1日这天全天停运的车辆,)
  9. python制作五子棋_python制作简单五子棋游戏
  10. 计算机专业英语选词填空,专业英语考试+单词翻译+单项选择+选词填空+成成呕心沥血之作.doc...