InnoDB Cluster 与 NDB Cluster 对比及部署指南

InnoDB Cluster 与 NDB Cluster 对比及部署指南

一、核心区别对比

特性InnoDB ClusterNDB Cluster
存储引擎InnoDBNDB (内存优先)
架构设计基于Group Replication分布式架构(数据节点+管理节点+SQL节点)
一致性模型最终一致性/强一致性强一致性
数据持久化磁盘存储为主内存存储为主,定期快照
适用场景通用OLTP高吞吐实时处理
扩展性垂直扩展为主水平线性扩展
延迟中等极低
SQL功能支持完整SQL支持部分SQL功能限制

二、服务器部署步骤

InnoDB Cluster 部署

1. 环境准备(所有节点)
# 安装MySQL Server 8.0+
sudo apt-get install mysql-server mysql-shell -y# 启动MySQL
sudo systemctl start mysql
2. 配置节点(所有节点)
# 编辑配置文件 /etc/mysql/my.cnf
[mysqld]
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=OFF
group_replication_local_address= "当前节点IP:33061"
group_replication_group_seeds= "节点1IP:33061,节点2IP:33061,节点3IP:33061"
server_id=1  # 每个节点唯一
log_bin=mysql-bin
binlog_format=ROW
3. 初始化集群(第一个节点)
mysqlsh
\connect root@节点1IP:3306# 在MySQL Shell中
dba.configureInstance('root@节点1IP:3306')
var cluster = dba.createCluster('myCluster')
4. 添加其他节点
// 在MySQL Shell中
cluster.addInstance('root@节点2IP:3306')
cluster.addInstance('root@节点3IP:3306')
5. 部署MySQL Router(可选)
sudo apt-get install mysql-router -y
mysqlrouter --bootstrap root@集群任一节点IP:3306 --directory /opt/mysqlrouter
/opt/mysqlrouter/start.sh

NDB Cluster 部署

1. 环境准备
# 在所有节点安装
sudo apt-get install mysql-cluster -y
2. 管理节点配置(/etc/mysql-cluster/config.ini)
[ndb_mgmd]
hostname=管理节点IP
datadir=/var/lib/mysql-cluster[ndbd default]
noofreplicas=2
datadir=/var/lib/mysql-cluster[ndbd]
hostname=数据节点1IP[ndbd]
hostname=数据节点2IP[mysqld]
hostname=SQL节点1IP[mysqld]
hostname=SQL节点2IP
3. 启动管理节点
ndb_mgmd -f /etc/mysql-cluster/config.ini
4. 启动数据节点
ndbd --initial
5. 启动SQL节点
systemctl start mysql
6. 验证集群
ndb_mgm
show

三、Docker部署步骤

InnoDB Cluster (Docker)

1. 创建网络
docker network create mysql-cluster-net
2. 启动第一个节点
docker run -d --name=mysql1 --net=mysql-cluster-net \-e MYSQL_ROOT_PASSWORD=rootpass \-v mysql1-data:/var/lib/mysql \mysql:8.0 \--server-id=1 \--log-bin=mysql-bin \--binlog-format=ROW \--gtid-mode=ON \--enforce-gtid-consistency=ON \--plugin-load=group_replication.so \--group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" \--group_replication_start_on_boot=OFF \--group_replication_local_address="mysql1:33061" \--group_replication_group_seeds="mysql1:33061,mysql2:33061,mysql3:33061"
3. 初始化集群
docker exec -it mysql1 mysqlsh --uri root@localhost:3306
// 在MySQL Shell中
dba.configureInstance('root@localhost:3306', {password: 'rootpass'})
dba.createCluster('myCluster')
4. 添加其他节点
docker run -d --name=mysql2 --net=mysql-cluster-net \-e MYSQL_ROOT_PASSWORD=rootpass \-v mysql2-data:/var/lib/mysql \mysql:8.0 \--server-id=2 \--log-bin=mysql-bin \--binlog-format=ROW \--gtid-mode=ON \--enforce-gtid-consistency=ON \--plugin-load=group_replication.so \--group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" \--group_replication_start_on_boot=OFF \--group_replication_local_address="mysql2:33061" \--group_replication_group_seeds="mysql1:33061,mysql2:33061,mysql3:33061"
// 在MySQL Shell中
cluster.addInstance('root@mysql2:3306', {password: 'rootpass'})

NDB Cluster (Docker)

1. 创建网络
docker network create ndb-cluster-net
2. 启动管理节点
docker run -d --name=ndb-mgmd --net=ndb-cluster-net \-v ./config.ini:/etc/mysql-cluster/config.ini \mysql/mysql-cluster ndb_mgmd
3. 启动数据节点
docker run -d --name=ndb1 --net=ndb-cluster-net \mysql/mysql-cluster ndbd
4. 启动SQL节点
docker run -d --name=mysql1 --net=ndb-cluster-net \-e MYSQL_ROOT_PASSWORD=rootpass \mysql/mysql-cluster mysqld
5. 验证集群
docker exec -it ndb-mgmd ndb_mgm
show

四、关键注意事项

  1. InnoDB Cluster:

    • 至少需要3个节点实现高可用
    • 确保节点间时间同步(NTP)
    • 生产环境建议配置MySQL Router
  2. NDB Cluster:

    • 需要至少2个数据节点实现冗余
    • 数据节点内存配置很关键(DataMemory参数)
    • 对网络延迟非常敏感
  3. Docker部署:

    • 生产环境建议使用固定IP或DNS名称
    • 数据卷应持久化到宿主机
    • 考虑资源限制(CPU/内存)

五、常用管理命令

InnoDB Cluster

# 查看集群状态
mysqlsh -e "dba.getCluster().status()"# 故障转移
mysqlsh -e "dba.getCluster().forceQuorumUsingPartitionOf('root@主节点:3306')"

NDB Cluster

# 备份集群
ndb_mgm -e "start backup"# 查看内存使用
ndb_mgm -e "all report memoryusage"

两种集群解决方案各有优势,InnoDB Cluster更适合传统OLTP场景,而NDB Cluster适合需要极高吞吐量和低延迟的特殊场景。

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

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

相关文章

PySide环境配置及工具使用

文章目录 [toc]1 概述1.1 PySide 能做什么?1.2 PySide 的优点1.3 PySide 的缺点1.4 示例代码(简单窗口) 2 环境准备2.1 安装必要软件2.2 修改 pip 源 3 PySide23.1 环境要求3.2 配置PySide23.3 工具配置 4 PySide64.1 环境4.2 配置PySide64.3…

数据标注师学习内容

目录 文本标注词性标注实体标注 图像标注语音标注 文本标注 词性标注 第一篇 第二篇 实体标注 点击这里 关系标注 事件标注 意图标注 关键词标注 分类标注 问答标注 对话标注 图像标注 拉框标注 关键点标注 2D标注 3D标注 线标注 目标跟踪标注 OCR标注 图像分类标注 语音…

【linux】文件与目录命令 - rsync

文章目录 1. 基本用法2. 常用参数3. 用法举例4. 注意事项 rsync 命令用于快速同步文件和目录,可用于本地和远程传输,支持增量同步、压缩、权限保留等特性。 1. 基本用法 语法: rsync [选项] 源 目标功能: 高效增量同步&#xff…

互联网大厂Java求职面试:电商系统高并发设计

互联网大厂Java求职面试:电商系统高并发设计 文章内容 面试官(技术总监)与郑薪苦的对话 面试官: “郑薪苦,欢迎来到我们的面试。今天我们会围绕一个非常热门的话题——电商系统的高并发设计进行深入探讨。你之前在某…

Nginx跨云反向代理排错:解密配置参数的“陷阱”

前言:在当今的云计算环境中,跨云平台的应用部署变得越来越常见。为了验证跨云平台反向代理的可行性,我们进行了一次测试。本次测试将后端程序部署在阿里云服务器,同时使用在腾讯云注册的已备案国内域名。我们在腾讯云控制台将域名…

股票账户的管理和交易

中国证券登记结算有限责任公司(简称“中国结算”)确实是负责股票的账户管理(开户、销户)和登记、存管、清算、交收等后台业务的中央机构。它确保了股票所有权的准确记录和交易后资金与证券的最终转移。 而股票的交易业务&#xff…

Arcgis地理配准变换方法说明

零阶多项式 - 将使用零阶多项式来平移数据。 当已对数据进行地理配准但通过微小的平移可以更好的排列数据时,通常使用该多项式。 执行零阶多项式平移只需要一个连接线。相似性多项式 - 将使用一阶变换,尝试保持原始栅格的形状。 RMS 错误会高于其他多项式…

深入理解 C++ volatile 与 atomic:五大用法解析 + 六大高频考点

一、volatile volatile是C中一个非常重要的关键字。volatile关键字告诉编译器,被修饰的变量可能会在程序控制之外被改变,因此编译器不能对该变量的访问进行优化。什么意思呢?现代处理器架构中,有寄存器,L1缓存&#x…

跨主机管理Docker容器化应用的操作与技巧

哈喽,大家好,我是左手python! 环境准备与 Docker 安装 在开始跨主机管理 Docker 容器化应用之前,需要确保所有主机上都安装了 Docker 引擎,并且这些主机之间可以通过 SSH 协议进行通信。本节将详细介绍环境准备和 Doc…

编程实践:sigmastar330 调用IVE图像处理加速

说明:本专栏文章有两种解锁方案 1:付费订阅,畅享所有文章 2:免费获取,点击下方链接,关注,自动获取免费链接 https://free-img.400040.xyz/4/2025/04/29/6810a50b7ac8b.jpg 主题:利用IVE进行图像处理加速 Sigmastar 支持的硬件操作,基本都在:mi_ive.h 文件中,本文…

Nginx+PHP+MySQL安装参考

NginxPHPMySQL安装参考 CentOS7环境 配置CentOS7网络: CentOS(最小安装)默认是不打开网络的 启动网络 vi打开:/etc/sysconfig/network-scripts/ifcfg-ens33 文件 将 “ONBOOT:no”属性修改为:“ONBOOT:yes” 重启网络服务 # sudo service …

JavaScript中的反射魔法:揭秘Reflect对象的核心方法(下)

JavaScript中的Reflect对象:高级方法解析(下) 在JavaScript中,Reflect对象不仅提供了基础的对象操作方法(如get、set等),还包含了许多高级API,用于更精细地控制对象行为。本文将继续…

【数字人开发】Unity+百度智能云平台实现长短文本个性化语音生成功能

一、创建自己的应用 百度智能云控制台网址:https://console.bce.baidu.com/ 1、创建应用 2、获取APIKey和SecretKey 3、Api调试 调试网址:https://console.bce.baidu.com/support/?timestamp1750317430400#/api?productAI&project%E8%AF%AD%E9%…

银河麒麟 | ubuntu 搭建属于自己的邮件服务器

目录 遇权不绝就转root 更新系统 安装 Postfix 配置 Postfix 重启 Postfix 安装 Dovecot 配置 Dovecot 编辑 Dovecot 的 IMAP 配置文件 编辑 Dovecot 的用户认证配置文件 编辑 Dovecot 的服务配置文件 重启 Dovecot 安装发送邮箱功能 发送邮件 测试 遇权不绝就转…

嵌入式通信协议框架的四层架构设计与实现

文章目录 一、硬件抽象层:数据收发的基石1.1 设计要点1.2 代码示例 二、协议管理层:智能路由中枢2.1 设计要点2.2 代码示例 三、协议处理层:协议具体实现3.1 设计要求3.2代码示例3.2.1 协议公共定义3.2.2 协议一设计3.2.3 协议二设计 四、应用…

RA信号处理

ra_snr_gui.m 作用:统计不同信噪比下,五种信号的峰值旁瓣比RA和低高频均值比RM,绘制结果,参考图3.11和3.12 DFCW_RA_SNR.m 作用:产生正交离散频率编码信号,并计算峰值旁瓣比RA和低高频均值比 RM LFM_RA_S…

【go的测试】单测之gomock包与gomonkey包

目录 使用gomock包 1. 安装mockgen 2. 定义接口 3. 生成mock文件 4. 在单测中使用mock的函数 5. gomock 包的使用问题 使用gomonkey包 1. mock 一个包函数 2. mock 一个公有成员函数 3. mock 一个私有成员函数 使用gomock包 1. 安装mockgen go get -u github.com/go…

html实现登录与注册功能案例(不写死且只使用js)

目录 案例需求 实现思路 代码参考 login.html register.html 运行效果 升级思路 案例需求 需要一个登录界面和注册页面实现一个较为完整的登录注册功能 1.登录界面没有登录限制需求(降低难度),实现基本的登录判断需求,弹窗…

PHP is the best language.

PHP很好写。 众所周知Python很好写,Python 也能开发 Web 应用,但和 PHP 相比,在“直接处理网页”这件事上,PHP 更加贴近底层和原生。 想快速搭建原型或者 B 端后台工具,不妨用 PHP Laravel 来搞,真的很香…

Mybatis-Plus 在 getOne() 的时候要加上 .last(“limit 1“)

1.先写结论: 1.为了确保 SQL 查询只返回一条记录(当查询返回多条时会报错->多为代码本身问题)。 2.防止数据库执行全表扫描 3.参考网址:问题记录:MyBatis-Plus 中 ServiceImpl 类的 getOne_mybatis_无他&唯手熟尔-2048…