RDS数据订阅服务使用说明

RDS数据订阅服务使用说明

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

使用场景

历史数据沉淀

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

RDS数据订阅服务使用说明

迁移方式

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集群信息

RDS数据订阅服务使用说明

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增量数据订阅

RDS数据订阅服务使用说明

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
上一篇:HBase TB级数据规模不停机迁移最佳实践


下一篇:BDS-HBase集群之间数据迁移同步的利器