探索MySQL-Cluster奥秘系列之测试 NDB 数据引擎(9)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 前面,我们已经对于MySQL-Cluster集群环境准备好了,那么接下来,我们就要在这个环境中做一些基本的测试,在这一小节中,我们来对NDB存储引擎的实际运行效果进行一个简单的测试。

在前面我们讲到了,MySQL Cluster 集群环境能够正常运行的一个条件是只支持 NDB 的存储引擎,究竟是不是这样呢?这一小节,我们就来对这个问题进行测试。

我们此次主要分成两部分进行测试。

  • 第一部分:在一个 SQL 节点上,创建一个非 NDB 存储引擎的表,然后在另一个 SQL 节点上观察这张表的同步情况。
  • 第二部分:在一个 SQL 节点上,创建一个 NDB 存储引擎的表,然后在另一个 SQL 节点上观察这张表的同步情况,同时对这个表做增删改操作,在另一个节点上观察其变化情况。

分成两部分进行测试,可以检测出 MySQL Cluster 对于 NDB 和非 NDB 存储引擎在数据同步上是否有区别,最终验证前面讲到的 MySQL Cluster 集群环境只适用于 NDB 存储引擎这一结论。

明确了测试思路之后,接下来我们要先创建一个数据库(登录到 mysql04 节点上进行创建数据库的操作),数据库的名字命名为 testdb。如下所示:

[mysql@mysql04 ~]$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.36-ndb-7.6.20-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database testdb;
Query OK, 1 row affected (0.03 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ndbinfo            |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
6 rows in set (0.00 sec)

然后登录到 mysql05 节点上进行查看,testdb 是否同样可以看到。

[mysql@mysql05 ~]$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.36-ndb-7.6.20-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ndbinfo            |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
6 rows in set (0.00 sec)

OK,上述内容说明当前 MySQL Cluster 集群的整体运行情况是正常的,接下来我们开始测试。

非 NDB 存储引擎

在 mysql04 节点上创建一张 InnoDB 存储引擎的表 t1,并对其插入两条数据。

mysql> use testdb
Database changed
mysql> create table t1 (id int,name char(10)) engine=innodb;
Query OK, 0 rows affected (0.05 sec)
mysql> insert into t1 (id,name) values(1,'a'),(2,'b');
Query OK, 2 rows affected (0.07 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+
2 rows in set (0.00 sec)

然后登录到 mysql05 节点上,查看是否已同步过来。

mysql> use testdb;
Database changed
mysql> show tables;
Empty set (0.01 sec)

可以看到,对于 InnoDB 存储引擎的表 MySQL Cluster 集群环境不支持同步功能。其实不止是 InnoDB存储引擎,对于其它的非 NDB 存储引擎的数据,MySQL Cluster 集群架构同样是不支持的。

接下来,我们来看一下 NDB 存储引擎表的情况是怎么样的?

NDB存储引擎

在 mysql04 节点上创建一张 NDB 存储引擎的表 t2,并对其插入两条数据。

mysql> use testdb;
Database changed
mysql> create table t2 (id int,name char(10)) engine=ndb;
Query OK, 0 rows affected (0.12 sec)
mysql> insert into t2(id,name) values(1,'a'),(2,'b');
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from t2;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+
2 rows in set (0.00 sec)

然后,我们登录到 mysql05 节点上进行查看。

mysql> use testdb;
Database changed
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| t2               |
+------------------+
1 row in set (0.01 sec)
mysql> select * from t2;
+------+------+
| id   | name |
+------+------+
|    2 | b    |
|    1 | a    |
+------+------+
2 rows in set (0.08 sec)

我们看到,对于 NDB 存储引擎的表 t2,已经同步到了 mysql05 节点上,同时对于表 t2 中的数据,在mysql05 节点上也是可以进行查看的。

为了验证其完整的同步功能,我们在 mysql05 节点上对 t2 表做一个 update 操作,然后在 mysql04 节点上查看,是否同样生效。

接下来,我们在 mysql05 节点上将 t2 表中 id=2 这行数据的 name 字段改为了'bbb'。

mysql> update t2 set name='bbb' where id=2;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from t2;
+------+------+
| id   | name |
+------+------+
|    2 | bbb  |
|    1 | a    |
+------+------+
2 rows in set (0.00 sec)

然后登录到 mysql04 节点上进行查看。

mysql> select * from t2;
+------+------+
| id   | name |
+------+------+
|    2 | bbb  |
|    1 | a    |
+------+------+
2 rows in set (0.00 sec)

我们可以看到,对于 update 的操作,同样是可以同步的(当然对于 delete 等操作均是支持的,在这里我就不再演示了)。

经过上面的测试,我们可以得出明确的答案:对于 MySQL Cluster 集群架构仅支持 NDB 存储引擎。这一小节我们就讲到这里,在下一小节中,我们来讲解 SQL 节点故障修复方面的内容。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
20天前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
117 4
|
4天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
27 6
|
4天前
|
关系型数据库 MySQL 数据处理
针对MySQL亿级数据的高效插入策略与性能优化技巧
在处理MySQL亿级数据的高效插入和性能优化时,以上提到的策略和技巧可以显著提升数据处理速度,减少系统负担,并保持数据的稳定性和一致性。正确实施这些策略需要深入理解MySQL的工作原理和业务需求,以便做出最适合的配置调整。
29 6
|
23天前
|
SQL 存储 缓存
MySQL是如何保证数据不丢失的?
文章详细阐述了InnoDB存储引擎中Buffer Pool与DML操作的关系。在执行插入、更新或删除操作时,InnoDB为了减少磁盘I/O,会在Buffer Pool中缓存数据页进行操作,随后将更新后的“脏页”刷新至磁盘。为防止服务宕机导致数据丢失,InnoDB采用了日志先行(WAL)机制,通过将DML操作记录为Redo Log并异步刷新到磁盘,结合双写机制和合理的日志刷新策略,确保数据的持久性和一致性。尽管如此,仍需合理配置参数以平衡性能与数据安全性。
MySQL是如何保证数据不丢失的?
|
25天前
|
存储 人工智能 自然语言处理
知识库优化增强,支持多种数据类型、多种检索策略、召回测试 | Botnow上新
Botnow近期对其知识库功能进行了全面升级,显著提升了数据处理能力、检索效率及准确性。新版本支持多样化的数据格式,包括PDF、Word、TXT、Excel和CSV等文件,无需额外转换即可直接导入,极大地丰富了知识来源。此外,还新增了细致的文本分片管理和编辑功能,以及表格数据的结构化处理,使知识管理更为精细化。 同时,平台提供了多种检索策略,包括混合检索、语义检索和全文检索等,可根据具体需求灵活选择,有效解决了大模型幻觉问题,增强了专业领域的知识覆盖,从而显著提高了回复的准确性。这些改进广泛适用于客服咨询、知识问答等多种应用场景,极大提升了用户体验和交互质量。
44 4
|
3天前
|
存储 监控 安全
在自动化测试环境中,如何确保测试数据的安全性和隐私性
在自动化测试环境中,如何确保测试数据的安全性和隐私性
|
27天前
【Application Insights】使用Powershell命令向Application Insgihts发送测试数据
【Application Insights】使用Powershell命令向Application Insgihts发送测试数据
|
27天前
|
JSON Kubernetes Linux
【Application Insights】使用CURL命令向Application Insgihts发送测试数据
【Application Insights】使用CURL命令向Application Insgihts发送测试数据
|
21天前
|
存储 关系型数据库 MySQL
|
21天前
|
安全 数据安全/隐私保护 架构师
用Vaadin打造坚不可摧的企业级应用:安全性考虑全解析
【8月更文挑战第31天】韩林是某金融科技公司的架构师,负责构建安全的企业级应用。在众多Web框架中,他选择了简化UI设计并内置多项安全特性的Vaadin。韩林在其技术博客中分享了使用Vaadin时的安全考虑与实现方法,包括数据加密、SSL/TLS保护、结合Spring Security的用户认证、XSS防护、CSRF防御及事务性UI更新机制。他强调,虽然Vaadin提供了丰富的安全功能,但还需根据具体需求进行调整和增强。通过合理设计,可以构建高效且安全的企业级Web应用。
28 0