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

举报
GaussDB 数据库 发表于 2024/06/18 17:28:30 2024/06/18
【摘要】 什么是内存加速传统的MySQL+Cache架构,用户把数据写入MySQL后,同时还需要将数据更新到缓存中,开发效率低。为了优化MySQL“传统被动缓存方案”,GeminiDB Redis接口推出了内存加速功能。该功能能够实现MySQL到GeminiDB的数据联动,用户只需在MySQL中写入一次数据,  便可以从GeminiDB Redis接口中加速数据读取,实现数据的自动同步, 极大提升开发...

什么是内存加速

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

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

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

1.png


如何使用内存加速

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

第一步:创建GeminiDB实例

  •  登录管理控制台;
  • 在服务列表中选择“数据库 > 云数据库RDS for MySQL”;
  • 在“实例管理”页面,选择指定的实例,单击实例名称;
  • 在左侧导航树,单击“内存加速”;
  • 如果没有开启内存加速,那么“内存加速”页面显示如下;此时需要单击“创建GeminiDB实例”按钮开启内存加速。

1.png

第二步:创建映射规则

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

2.png

使用示例

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”构成。

4.png

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

5.png

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:1

1) "sbirthday"
2) "2015-05-20"
3) "sclass"
4) "1"
5) "sgender"
6) "male"
7) "sname"
8) "zhangsan"

同理,在MySQL中更新数据、删除数据也会及时在GeminiDB中更新,更多示例可参考官网文档:管理映射规则 (https://support.huaweicloud.com/redisug-nosql/nosql_10_0057.html)

常见问题

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

6.PNG

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。