更新时间:2024-08-05 GMT+08:00

管理映射规则

通过创建映射规则,可以实现MySQL实例到GeminiDB实例的数据自动同步。本章节主要介绍如何创建、修改和删除映射规则,以及创建映射规则后的使用示例。

注意事项

  • 目前仅支持MySQL到GeminiDB Redis接口Hash类型的转换。
  • 新规则的Redis键前缀+键分隔符不能是已有规则的Redis键前缀+键分隔符的子前缀,反之亦然。例如新规则的前缀为 "pre1:",键分隔符为 "," ,老规则前缀为 "pre1",分隔符为":", 这种情况不允许创建新规则。
  • 如果修改映射规则中MySQL实例的表名后,则需要重新配置映射规则。
  • 暂不支持ENUM、SET、JSON三种数据类型的同步。
  • 如果对映射规则中键(Key)字段中的一个或多个字段执行改名、删除等操作时,会使映射规则失效。

创建映射规则

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在“实例管理”页面,选择目标实例名称。
  5. 在左侧导航栏选择“内存加速”,在“映射规则”页面单击“创建映射规则”。

    图1 映射规则

  6. 在“创建映射规则”页面,填写并选择相关信息。

    1. 配置规则名称。
      规则名称:设置映射规则名称。规则名称不能包含#和中文,长度不超过256个字符,且规则名称在同一个GeminiDB实例中不可重复。
      图2 规则名称
    2. 源实例配置。
      • 数据库名:选择需要加速实例的数据库。
      • 表名:选择需要加速实例中的表。
      图3 源实例配置
    3. 加速实例端配置。
      • Redis键前缀:可选。默认的前缀格式为“数据库名:数据表名:字段名1:字段名2...”,长度不超过1024个字符。如果用户自定义了Redis键前缀,那么以自定义前缀为准。
      • 值存储类型:缓存的数据类型,当前仅支持Hash。
      • DB号(0-999):加速实例中保存缓存数据的DB号,默认为0。
      • TTL(单位:秒,默认值为30天。):加速实例中缓存数据的过期时间,默认30天(2592000秒),输入-1为不过期。
      • 键分隔符:Redis键前缀与键(Key)、以及键(Key)各字段之间的分隔符,长度为1个字符。
      图4 加速实例端配置

    4. 单击“键(Key)设置”,选择加速实例的键(Key)字段,单击“确定”。

      如果加速实例键(Key)由多个源实例字段组成,那么需要具备唯一性(这些字段在MySQL实例中要能成功创建出唯一索引);可以单击“上移”和“下移”调整各字段在键(Key)中的先后顺序。

      图5 键(Key)设置

      设置完成后,会在界面中显示键(Key)的构成方式,如下图所示:

      图6 键(Key)
    5. 配置加速实例的域-值。
      将源实例中需要的字段,右移到加速实例的字段中。
      图7 配置加速实例字段
    6. 配置信息填写完成后,单击“提交”,完成映射规则创建。

使用示例

  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。该Hash的键(Key)由”数据库名:数据表名:sid:<sid的值>”构成,域-值由选中的“sname,sclass,sgender,sbirthday”构成。
    图8 配置映射规则
  3. 映射规则创建成功后,可以查看映射规则及映射信息。
    图9 映射信息
  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)
  5. 由于映射规则的存在,会把该数据自动同步到GeminiDB实例中。此时在GeminiDB实例中执行命令即可查询到该数据:
    127.0.0.1:6379> KEYS *
    1) "db1:students:sid:1"
    
    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"
  6. 在MySQL实例侧对students表再次插入一条新数据:
    mysql> INSERT INTO db1.students (sname, sclass, sgender, sbirthday) VALUES ('lisi', 10, 'male', '2015-05-22');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM db1.students;
    +-----+----------+--------+---------+------------+
    | sid | sname    | sclass | sgender | sbirthday  |
    +-----+----------+--------+---------+------------+
    |   1 | zhangsan |      1 | male    | 2015-05-20 |
    |   2 | lisi     |     10 | male    | 2015-05-22 |
    +-----+----------+--------+---------+------------+
    2 rows in set (0.00 sec)
  7. 新数据会被同步到GeminiDB实例中:
    127.0.0.1:6379> KEYS *
    1) "db1:students:sid:1"
    2) "db1:students:sid:2"
    
    127.0.0.1:6379> HGETALL db1:students:sid:2
    1) "sbirthday"
    2) "2015-05-22"
    3) "sclass"
    4) "10"
    5) "sgender"
    6) "male"
    7) "sname"
  8. 在 MySQL实例侧对students表执行更新数据操作:
    mysql> UPDATE db1.students SET sclass=12, sname='wangwu' WHERE sid = 1;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> SELECT * FROM db1.students;
    +-----+--------+--------+---------+------------+
    | sid | sname  | sclass | sgender | sbirthday  |
    +-----+--------+--------+---------+------------+
    |   1 | wangwu |     12 | male    | 2015-05-20 |
    |   2 | lisi   |     10 | male    | 2015-05-22 |
    +-----+--------+--------+---------+------------+
    2 rows in set (0.00 sec)
  9. 在GeminiDB实例中查看数据被更新:
    127.0.0.1:6379> KEYS *
    1) "db1:students:sid:1"
    2) "db1:students:sid:2"
    
    127.0.0.1:6379> HGETALL db1:students:sid:1
    1) "sbirthday"
    2) "2015-05-20"
    3) "sclass"
    4) "12"
    5) "sgender"
    6) "male"
    7) "sname"
    8) "wangwu"
  10. 在MySQL实例侧对students表执行删除数据操作:
    mysql> DELETE FROM db1.students WHERE sid = 1;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM db1.students;
    +-----+-------+--------+---------+------------+
    | sid | sname | sclass | sgender | sbirthday  |
    +-----+-------+--------+---------+------------+
    |   2 | lisi  |     10 | male    | 2015-05-22 |
    +-----+-------+--------+---------+------------+
    1 row in set (0.00 sec)
    
  11. 在 GeminiDB实例中查看数据被删除:
    127.0.0.1:6379> KEYS *
    1) "db1:students:sid:2"

修改映射规则

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在“实例管理”页面,选择目标实例名称。
  5. 在左侧导航栏选择“内存加速”,在“映射规则”页面单击目标规则操作列的“编辑”。

    图10 映射规则

  6. 编辑加速实例的域-值后,单击“提交”,完成映射规则修改。

    图11 编辑映射规则

删除映射规则

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在“实例管理”页面,选择目标实例名称。
  5. 在左侧导航栏选择“内存加速”,在“映射规则”页面单击目标规则操作列的“删除”,即可完成映射规则删除。