MySQL NDB Cluster使用docker compose一键部署

news2025/3/1 4:40:11

本文主要用来学习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容器之间可以通过服务名访问,
  # 所以我在创建容器以及后面的配置文件中没有指定IP
  ndb_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/mysql
    ports:
      - "1186:1186"
    # 指定网络
    networks:
      - my_cluster
  
  ndb_data1:
    image: mysql/mysql-cluster:8.0
    container_name: ndb_data1
    command: [
      'ndbd'
    ]
    volumes:
      - ./config.cnf:/etc/mysql-cluster.cnf
      - ./my.cnf:/etc/my.cnf
      - ./ndbd1:/var/lib/mysql
    networks:
      - my_cluster
  ndb_data2:
    image: mysql/mysql-cluster:8.0
    container_name: ndb_data2
    command: [
      'ndbd'
    ]
    volumes:
      - ./config.cnf:/etc/mysql-cluster.cnf
      - ./my.cnf:/etc/my.cnf
      - ./ndbd2:/var/lib/mysql
    networks:
      - my_cluster
  
  ndb_mysqld1:
    image: mysql/mysql-cluster:8.0
    container_name: ndb_mysqld1
    command: [
      'mysqld',
      '--default-authentication-plugin=mysql_native_password'
    ]
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: mycluster
    volumes:
      - ./config.cnf:/etc/mysql-cluster.cnf
      - ./my.cnf:/etc/my.cnf
      - ./mysql1:/var/lib/mysql
    networks:
      - my_cluster
    ports:
      - "3306:3306"
    depends_on:
      - ndb_management
      - ndb_data1
      - ndb_data2

  ndb_mysqld2:
    image: mysql/mysql-cluster:8.0
    container_name: ndb_mysqld2
    command: [
      'mysqld',
      '--default-authentication-plugin=mysql_native_password'
    ]
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - ./config.cnf:/etc/mysql-cluster.cnf
      - ./my.cnf:/etc/my.cnf
      - ./mysql2:/var/lib/mysql
    networks:
      - my_cluster
    ports:
      - "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的最简单的环境已经搭建起来了,鼓掌👏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于html+css的盒子展示7

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

系统集成项目管理工程师软考第三章习题(每天更新)

第一章指路:系统集成项目管理工程师软考第一章习题(已完结)_程序猿幼苗的博客-CSDN博客 第二章指路:系统集成项目管理工程师软考第二章习题(已完结)_程序猿幼苗的博客-CSDN博客 第3章信息系统集成专业技术…

基于密集学习的半监督目标检测

文章目录Dense Learning based Semi-Supervised Object Detection摘要本文方法实验结果Dense Learning based Semi-Supervised Object Detection 摘要 提出了一种基于密集学习(DSL)的无锚点的半监督目标检测算法用于分配多层级和精确的密集像素伪标签的自适应过滤器用于生成稳…

C++13:搜索二叉树

目录 搜索二叉树概念 模拟实现搜索二叉树 插入函数实现 插入函数实现(递归) 查找函数实现 删除函数实现 删除函数实现(递归) 中序遍历实现 拷贝构造函数实现 析构函数实现 赋值重载 我们在最开始学习二叉树的时候,…

【网络】Internet 协议版本 6 (IPv6)

文章目录IPv6 寻址文本表示形式地址类型IPv6 路由邻居发现IPv6 自动配置自动配置类型IPv6 移动性禁用或启用 IPv6配置步骤代码启用操作系统启用来源Internet 协议版本 6 (IPv6) 是 Internet 的网络层的标准协议套件。 IPv6 旨在解决当前版本的 Internet 协议套件(称…

二叉树前中后层遍历(递归/非递归)(简单易懂(*^ー^))

文章目录二叉树的遍历1 先序遍历1.1 递归1.2 非递归2 中序遍历2.1 递归2.2 非递归3 后序遍历3.1 递归3.2 非递归4 层序遍历5 前中后层序完整可运行代码(C)二叉树的遍历 1 先序遍历 1.1 递归 先序遍历(Preorder Traversal),即根左右的顺序遍…

Anaconda3安装配置/创建删除虚拟环境/在特定虚拟环境下安装库

1. Anaconda3彻底卸载 先说Anaconda3的卸载,在Anaconda3安装路径下有一个Uninstall-Anaconda3.exe,右键以“管理员身份运行”,可执行完全卸载 2. 下载与安装Anaconda3 官网地址https://repo.anaconda.com/ 点击Anaconda Distribution&…

自学大数据第14天NoSQL~MongoDB及其命令

这几天主要是看了一下mongodb的一些知识,网上也有一些教程,今天主要是复习一下mongodb 启动mongodb 在连接mongodb前首先要创建数据存放目录与日志存放目录,还得保证当前用户对这两个目录有相应的读写操作 mongod --dbpath/usr/local/mongodb/data/db/ --logpath/usr/lcoal/mon…

(四)【软件设计师】计算机系统—基础单位进制

文章目录一、计算机基础单位二、进制1.进制表示符号2.进制之间的转换:(1)十进制转换为二进制(例子:173)(2)十进制转换为八进制(3)十进制转换为十六进制(4)二进制转换为十进制&#x…

Linux入门 - 最常用基础指令汇总

目录 ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令 && rm 指令 man指令(重要) cp指令(重要) mv指令(重要) cat指令 more指令 less指令(重要) head指令…

交换机PCB板布局布线注意事项

由于板卡在工作中会受到各种各样的干扰,这些干扰不仅影响系统运行的稳定性,同时也有可能带来误差,因此考虑如何抑制干扰,提高电磁兼容性是PCB布局布线时的一项重要任务。海翎光电的小编现将PCB布局布线中需要主要考虑的因素列在下…

银行数字化转型导师坚鹏:深度解读《中华人民共和国数据安全法》

深度解读《中华人民共和国数据安全法》 ——中国数据安全立法 助力企业稳健发展课程背景: 很多金融机构存在以下问题: 不清楚数据安全法立法背景? 不知道如何理解数据安全法相关政策? 不清楚如何数据安全进行合规建设&#xf…

【前端之旅】Vue入门笔记

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

计算机组成原理第二章数据的表示与运算(中)

提示:且行且忘且随风,且行且看且从容 文章目录前言2.2.0 奇偶校验码(大纲已删)2.2.1 电路的基本原理 加法器设计2.2.2 并行进位加法器2.2.3 补码加减运算器2.2.4 标志位的生成2.2.5 定点数的移位运算2.2.62.2.6.1 原码的乘法运算2.2.6.2 补码的乘法运算2…

Linux下异步socket客户端

文章目录socket 客户端1. 创建socketsocket()函数返回值2. 设置socket的属性connect函数sockaddr_in结构体inet_pton函数3. fcntl设置非阻塞4. recv函数socket 客户端 1. 创建socket socket()函数 #include <sys/socket.h> int socket(int domain, int type, int proto…

四、线程安全,synchronized,volatile(JMM)【4/12 5/12 6/12】【多线程】

4. 多线程带来的的风险-线程安全 (重点) 4.1 观察线程不安全 static class Counter {public int count 0;void increase() {count;} } public static void main(String[] args) throws InterruptedException {final Counter counter new Counter();Thread t1 new Thread(()…

数据结构——排序(4)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年4月12日 内容&#xff1a;数据结构排序内容讲解 目录 前言&#xff1a; 1.快速排序中的递归&#xff1a; 2.小区间优化&#xff1a; 3.递归改非递归&#xff1a; 4.归并排序&#xff1a; 5.归并排序的非递归形式&…

Revit中如何绘制倾斜的屋顶及一键成板?

Revit中如何绘制倾斜的屋顶&#xff1f;如下图所示&#xff0c;像这种坡屋顶有两种方法进行绘制。 第一种&#xff1a;定义坡度。 1、点击建筑选项卡中的屋顶按钮。选择使用矩形工具。 2、在选项栏中&#xff0c;偏离值修改为500&#xff0c;把屋顶迹线绘制出来。 3、取消这三…

软件测试今天你被内卷了吗?

认识一个人&#xff0c;大专学历非计算机专业的&#xff0c;是前几年环境好的时候入的行&#xff0c;那时候软件测试的要求真的很低&#xff0c;他那时好像是报了个班&#xff0c;然后入门的&#xff0c;但学的都是些基础&#xff0c;当时的他想的也简单&#xff0c;反正也能拿…

【面试】限流算法有哪些?

文章目录前言1.固定窗口限流算法1.2 固定窗口限流的伪代码实现1.2 固定窗口算法的优缺点2.漏桶算法3.令牌桶算法4. 滑动窗口限流算法4.1 什么是滑动窗口限流算法4.2 滑动窗口限流算法的伪代码实现4.3 滑动窗口限流算法的优缺点漏桶算法 VS 令牌桶算法总结参考 & 鸣谢前言 …