RDS数据订阅服务使用说明

2019-03-08 15:38:08 347

RDS数据订阅服务使用说明

RDS数据订阅服务主要解决的RDS上的数据同步到HBase,用户可以在HBase上查到RDS的数据,满足大数据查询分析的需求

使用场景

历史数据沉淀

业务使用MySQL承担交易等关键的在线业务,同时有数据分析的需求,需要做一些复杂查询,但不能影响在线业务。利用BDS异构数据源迁移,把RDS数据实时同步到HBase,可以轻松应对大数据查询需求。

image.png

迁移方式

RDS历史数据迁移

RDS实时增量数据迁移

  • DTS服务提供对RDS binlog收集,实时抓取源RDS实例的binlog,并提供数据订阅的功能
  • BDS迁移服务订阅DTS所收集的数据,将实时的数据写入到HBase

迁移步骤(钉钉联系 @侧田(jianan.xjn)

RDS历史数据迁移

客户自行使用开源的工具完成数据的迁移

RDS实时增量数据迁移

  1. 客户 - 开通DTS订阅通道
  2. 客户 - DTS通道上设置延迟报警
  3. 客户 - 获取DTS通道id、Access Key、Access Key Secret、RegionID等信息
  4. 客户 - 申请一台ECS并且绑定公网,ECS和云HBase属于同一个VPC,能够打通和HBase集群的网络
  5. 云HBase值班同学 - 协助部署BDS迁移服务,并对客户提供迁移服务的交互界面
  6. 客户 - 在HBase里面创建表信息
  7. 客户 - 录入HBase集群信息、DTS通道信息,提交迁移任务

版本支持

HBase版本:1.x、2.x
RDS版本:订阅通道的限制

BDS迁移服务使用说明

录入HBase集群信息

image.png

HDFS HA 的填写例子
集群名:xxxxx
HDFS URI:hdfs://100.81.140.116:8025,100.81.140.120:8025
HBase在HDFS根目录:/hbase
dfs.nameservices: hbase-cluster
clusterKey:  100.81.140.116,100.81.140.120,100.81.140.122:2185:/hbase

HDFS 非HA 的填写例子
集群名:xxxxx
HDFS URI:hdfs://100.81.140.116:8025
HBase在HDFS根目录:/hbase
dfs.nameservices:
clusterKey: 100.81.140.116,100.81.140.120,100.81.140.122:2185:/hbase


DTS增量数据订阅

image.png

RDS迁移到HBase Mapping例子

[
  {
    "rds_table_name": "hhh_test.phoenix_test",
    "hbase_table_name": "default:phoenix_test",
    "config": {
      "skip_delete": true
    },
    "columns_mapping": [
      {
        "name": "cf1:hhh",
        "src_columns": [
          "id",
          "title"
        ],
        "expression": "{{ concat(title, id) }}"
      },
      {
        "name": "cf1:*",
        "src_columns": [
          "*"
        ]
      }
    ],
    "rowkey_mapping": {
      "src_columns": [
        "id"
      ],
      "expression": "{{ concat('idg', id) }}"
    }
  }
]

Mapping说明

参数 描述 必选
rowkey_mapping 定义rowkey的计算方式,src_columns指定用源表哪些列计算rowkey,expression是可选的计算表达式,该计算表达式为jtwig语法,当用户需要对源表的列进行简单计算得到rowkey时可以用
hbase_table_name 目的hbase表名
rds_table_name RDS的表名
columns_mapping 定义源到目的表的转换映射信息,name为hbase列名,需要注意带上列组名,src_columns为源表的列,和rowkey的定义一样,也支持expression表达式
skip_delete 是否跳过删除操作,true为跳过,false为不跳过 否,默认为true,即跳过删除语句
  • 支持简单的表达式,如下
{
    "name": "cf1:address",
     "src_columns": ["address"],
    "expression": "{{ concat('idg', id) }}"
 }
  • 支持动态列,没有匹配到的列会走默认的匹配
{
    "name": "cf1:*",
    "src_columns": ["*"]
}
  • DML支持情况
操作 支持 备注
INSERT 对应HBase的PUT
UPDATE 对应HBase的PUT
DELETE 用户可以配置是否同步源端的DELETE,默认不同步
  • DDL支持情况
操作 支持 备注
CREATE TABLE 用户在MySQL新建表后,如果需要同步到HBase,需自行在HBase建立对应的表
DROP TABLE
ALTER TABLE ADD COLUMN 同步到默认列组,如果没有默认列组则忽略同步该列
ALTER TABLE DROP COLUMN
ALTER TABLE RENAME COLUMN 新数据同步到默认列组,如果没有默认列组则忽略同步该列,老数据不变
ALTER TABLE MODIFY COLUMN HBase无类型,所以源表列类型变更无影响
所有索引DDL

大数据 RDS hbase hdfs 根目录 集群 Image 数据迁移 同步 aliyun 数据订阅 表达式 数据同步

作者

侧田
TA的文章

相关文章