RDS数据订阅服务使用说明
RDS数据订阅服务主要解决的RDS上的数据同步到HBase,用户可以在HBase上查到RDS的数据,满足大数据查询分析的需求
使用场景
历史数据沉淀
业务使用MySQL承担交易等关键的在线业务,同时有数据分析的需求,需要做一些复杂查询,但不能影响在线业务。利用BDS异构数据源迁移,把RDS数据实时同步到HBase,可以轻松应对大数据查询需求。
迁移方式
RDS历史数据迁移
RDS实时增量数据迁移
迁移步骤(钉钉联系 @侧田(jianan.xjn))
RDS历史数据迁移
客户自行使用开源的工具完成数据的迁移
RDS实时增量数据迁移
- 客户 - 开通DTS订阅通道
- 客户 - DTS通道上设置延迟报警
- 客户 - 获取DTS通道id、Access Key、Access Key Secret、RegionID等信息
- 客户 - 申请一台ECS并且绑定公网,ECS和云HBase属于同一个VPC,能够打通和HBase集群的网络
- 云HBase值班同学 - 协助部署BDS迁移服务,并对客户提供迁移服务的交互界面
- 客户 - 在HBase里面创建表信息
- 客户 - 录入HBase集群信息、DTS通道信息,提交迁移任务
版本支持
HBase版本:1.x、2.x
RDS版本:订阅通道的限制
BDS迁移服务使用说明
录入HBase集群信息
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迁移到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 | 否 |