写点什么

GeminiDB 全面联动 MySQL:热点数据,一键加速

  • 2024-06-26
    广东
  • 本文字数:2103 字

    阅读完需:约 7 分钟

GeminiDB全面联动MySQL:热点数据,一键加速

华为云内存加速的“全自动主动缓存方案”,可通过界面可视化配置,支持用户将 MySQL 表数据映射为 GeminiDB 中的 Hash 等结构,同时还支持数据过滤及过期等功能,配置完成后即可实现自动同步,不仅简单易用还能提升效率。

什么是内存加速


传统的 MySQL+Cache 架构,用户把数据写入 MySQL 后,同时还需要将数据更新到缓存中,开发效率低。为了优化 MySQL“传统被动缓存方案”,GeminiDB Redis 接口推出了内存加速功能。


该功能能够实现 MySQL 到 GeminiDB 的数据联动,用户只需在 MySQL 中写入一次数据, 便可以从 GeminiDB Redis 接口中加速数据读取,实现数据的自动同步, 极大提升开发效率。


如下图所示,“传统被动缓存方案”效率低、不可靠,而华为云内存加速的“全自动主动缓存方案”,可通过界面可视化配置,支持用户将 MySQL 表数据映射为 GeminiDB 中的 Hash 等结构,同时还支持数据过滤及过期等功能,配置完成后即可实现自动同步,不仅简单易用还能提升效率。


如何使用内存加速


在已有的 MySQL 实例内开启内存加速需要两步:创建 GeminiDB 实例和创建映射规则。


第一步:创建 GeminiDB 实例。


  • 登录管理控制台;

  • 在服务列表中选择“数据库 > 云数据库 RDS for MySQL”;

  • 在“实例管理”页面,选择指定的实例,单击实例名称;

  • 在左侧导航树,单击“内存加速”;

  • 如果没有开启内存加速,那么“内存加速”页面显示如下;此时需要单击“创建 GeminiDB 实例”按钮开启内存加速。



第二步:创建映射规则。


GeminiDB 实例创建完成后,内存加速会变成如下的界面,点击“创建映射规则”进一步配置;


使用示例


1. 首先在源实例 MySQL 中创建一个 db1 数据库,并在 db1 中创建一个 students 表,具体的 SQL 如下:


mysql> CREATE DATABASE db1;Query OK, 1 row affected (0.00 sec)mysql> CREATE TABLE db1.students( -> sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL, -> sname VARCHAR(20), -> sclass INT, -> sgender VARCHAR(10), -> sbirthday DATE -> );Query OK, 0 rows affected (0.00 sec)mysql> DESC db1.students;+-----------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------+--------------+------+-----+---------+----------------+| sid | int unsigned | NO | PRI | NULL | auto_increment || sname | varchar(20) | YES | | NULL | || sclass | int | YES | | NULL | || sgender | varchar(10) | YES | | NULL | || sbirthday | date | YES | | NULL | |+-----------+--------------+------+-----+---------+----------------+5 rows in set (0.00 sec)
复制代码


2. 建表后,在“内存加速”界面,创建一条映射规则,将 students 表中的每一行记录转换为一个 Redis 的 hash key。


该 hash 的键(key)由”数据库名:数据表名:sid:<sid 的值>”构成,而域-值(field-value)由选中的“sname,sclass,sgender,sbirthday”构成。



3. 映射规则创建成功后,可以在映射规则列表中看到该规则以及对应的运行状态:



4. 在 MySQL 侧对 students 表插入一条新数据:


mysql> INSERT INTO db1.students (sname, sclass, sgender, sbirthday) VALUES ('zhangsan', 1, 'male', '2015-05-20');Query OK, 1 row affected (0.01 sec)mysql> SELECT * FROM db1.students;+-----+----------+--------+---------+------------+| sid | sname | sclass | sgender | sbirthday |+-----+----------+--------+---------+------------+| 1 | zhangsan | 1 | male | 2015-05-20 |+-----+----------+--------+---------+------------+1 row in set (0.00 sec)
复制代码


由于已配置映射规则,会把 MySQL 该数据自动同步到 GeminiDB 中,此时在 GeminiDB 中使用 hash 命令可以查询到该 key


127.0.0.1:6379> HGETALL db1:students:sid:11) "sbirthday"2) "2015-05-20"3) "sclass"4) "1"5) "sgender"6) "male"7) "sname"8) "zhangsan"
复制代码


同理,在 MySQL 中更新数据、删除数据也会及时在 GeminiDB 中更新,更多示例可参考官网文档:管理映射规则

常见问题:


1. 内存加速功能,会把所有数据全部缓存到 GeminiDB 吗?还是什么策略?


不是,需要用户通过界面操作:指定 MySQL 表空间(db)、表名(table)、字段(field)到 GeminiDB 的转换规则。配置好后,符合规则的数据会自动同步到 GeminiDB。


2. GeminiDB 数据会不断增长膨大,需要扩容吗?如何进行缓存数据管理?


GeminiDB 默认每条数据设置 30 天过期时间,用户也可以灵活调整;如果数据不断增长,需要及时扩容 GeminiDB 存储空间。


3. RDS for MySQL 到 GeminiDB 数据延迟大概在多少?都受哪些因素影响?


可以做到实时同步,建议用户实测。


时延可能受到以下因素限制:


  • RDS for MySQL 到 GeminiDB 本身的物理距离,通常建议同 Region;

  • 避免 GeminiDB 的实例规格过小,通常建议同 CPU 规格。


4. 对源端 MySQL 影响如何?


主要工作原理是订阅 MySQL 的 binlog,对源端几乎无影响。


当前内存加速功能已经在公测,公测范围:北京四、上海一、广州,用户可以创建免费 GeminiDB 规格,快来试用吧!


公测公告:https://support.huaweicloud.com/bulletin-nosql/nosql_OBTnotice_003.html


点击关注,第一时间了解华为云新鲜技术~

发布于: 16 分钟前阅读数: 5
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
GeminiDB全面联动MySQL:热点数据,一键加速_MySQL_华为云开发者联盟_InfoQ写作社区