- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 内核介绍
- 用户指南
- 最佳实践
- 性能白皮书
-
API参考
- 使用前必读
- API概览
- 如何调用API
-
API(推荐)
- 查询数据库引擎的版本
- 查询数据库规格
-
实例管理
- 创建数据库实例
- 重启数据库实例
- 删除/退订数据库实例
- 创建只读节点
- 删除/退订只读节点
- 包年/包月实例存储扩容
- 修改实例名称
- 重置数据库密码
- 变更实例规格
- 查询专属资源池列表
- 查询专属资源信息详情
- 设置实例秒级监控
- 查询实例秒级监控
- 节点重启
- 内核版本升级
- 开关SSL
- 绑定弹性公网IP
- 解绑弹性公网IP
- 手动主备倒换
- 设置可维护时间段
- 修改安全组
- 修改内网地址
- 修改实例端口
- 修改实例备注
- 申请内网域名
- 修改内网域名
- 查询内核版本信息
- 设置自动变配
- 查询自动变配
- 资源预校验
- 查询实例列表
- 查询实例详情信息
- 批量查询实例详情
- 设置回收站策略
- 查询回收站策略
- 查询回收站实例信息
- 批量修改节点名称
- 查询自动变配历史记录
- 设置Serverless配置策略
- 修改节点故障倒换优先级
- 查询弹性公网IP
- 备份管理
- 参数模板管理
- 配额管理
- 数据库代理
- 日志管理
- 标签管理
- 数据库用户管理
- 数据库管理
- 流量管理
- 任务中心
- 智能诊断
-
HTAP-标准版
- 恢复StarRocks数据同步
- 暂停StarRocks数据同步
- HTAP数据同步表配置校验
- 创建StarRocks实例
- 查询StarRocks实例
- 删除StarRocks实例
- 重启StarRocks实例
- 重启StarRocks节点
- StarRocks资源检查
- HTAP引擎资源查询
- 获取HTAP实例存储类型
- HTAP查询规格信息
- 查询HTAP实例列表
- 创建StarRocks数据同步
- 删除StarRocks数据同步
- 查询StarRocks数据同步状态信息
- HTAP数据同步库配置校验
- 查询StarRocks数据同步配置信息
- 查询StarRocks数据同步的库参数配置
- 查询StarRocks数据库
- 查询数据库账号
- 创建数据库账号
- 删除数据库账户
- 修改数据库账号密码
- 修改数据库账号权限
- StarRocks实例规格变更
- 查询参数
- 修改参数
- StarRocks实例开启行列分流
- 参数对比
- StarRocks内核版本升级
- 多租特性
- API(即将下线)
- 权限策略和授权项
- 附录
- SDK参考
- 常见问题
-
故障排除
- 备份恢复
- 连接类
-
SQL类
- 建表时timestamp字段默认值无效
- 索引长度限制导致修改varchar长度失败
- delete大表数据后,再查询同一张表时出现慢SQL
- 更新emoji表情数据报错Error 1366
- 存储过程和相关表字符集不一致导致执行缓慢
- 报错ERROR [1412]的解决方法
- 存在外键的表无法删除
- GROUP_CONCAT结果不符合预期
- 创建二级索引报错Too many keys specified
- distinct与group by优化
- 为什么有时候用浮点数做等值比较查不到数据
- 开通数据库代理后,还是有大量select请求分发到主节点
- 表空间膨胀问题
- MySQL创建用户提示服务器错误(ERROR 1396)
- 执行alter table xxx discard/import tablespace报错
- 数据库报错Native error 1461的解决方案
- 创建表失败报错Row size too large的解决方案
- Order by limit分页出现数据重复问题
- 执行select * from sys.innodb_lock_waits报错
- 参数类
- 性能资源类
-
基本使用类
- 查看TaurusDB的存储容量
- 修改库名和修改表名
- 字符集和字符序的默认选择方式
- 自增字段值跳变的原因
- 表的自增AUTO_INCREMENT初值与步长
- 修改表的自增AUTO_INCREMENT值
- 自增主键达到上限,无法插入数据
- 自增字段取值
- 自增属性AUTO_INCREMENT为何未在表结构中显示
- 空用户的危害
- 慢日志显示SQL语句扫描行数为0
- 错误日志页面显示handle_sync_msg_from_slave my_net_read error:-1
- 执行SQL语句报错:ERROR 1290 (HY000): The MySQL server is running with the --sql-replica-on option so it cannot execute this statement的原因及解决方案
- 通用参考
链接复制成功!
使用应用程序连接HTAP实现OLAP的复杂查询
本章节主要介绍使用应用程序直连HTAP实现OLAP的复杂查询的流程。
前提条件
- TaurusDB实例需要按照如下表格进行参数设置。
表1 参数说明 参数名称
参数值
修改方式
default_authentication_plugin
mysql_native_password
binlog_expire_logs_seconds
86400
说明:
Binlog的保留时间建议大于1天:60(秒)*60(分钟)*24(小时)=86400,防止由于binlog时间设置过短,导致增量复制失败。
log_bin
ON
rds_global_sql_log_bin
ON
binlog_format
ROW
通过SHOW VARIABLES;命令查看参数的值,如需修改,请提交工单处理。
binlog_row_image
FULL
通过SHOW VARIABLES;命令查看参数的值,如需修改,请提交工单处理。
log_bin_use_v1_row_events
OFF
通过SHOW VARIABLES;命令查看参数的值,如需修改,请提交工单处理。
- TaurusDB实例已创建数据库和表。
操作步骤
步骤1:购买HTAP标准版实例
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 在页面左上角单击
,选择“数据库 > 云数据库 TaurusDB”。
- 在“实例管理”页面的实例列表中,选择目标实例,单击实例名称进入实例概览页面。
- 在左侧导航栏选择“HTAP实时分析”,单击“创建HTAP实例”,进入创建HTAP实例页面。
- 在“实例信息”区域,确认当前TaurusDB实例信息。
图1 确认TaurusDB实例信息
- 配置HTAP标准版实例参数。
图2 配置HTAP标准版实例参数
表2 标准版HTAP实例参数说明 参数
说明
计费模式
支持“按需计费”及“包年/包月”。
HTAP实例类型
支持单机和集群。
- 单机:只有一个FE节点与一个BE节点。单机版仅适用于功能体验和测试,不承诺SLA。
- 集群:最少三个FE节点或BE节点,最多10个FE节点或BE节点。
存储类型
支持极速型SSD和超高IO。
- 极速型SSD:极速型SSD云盘,结合25GE网络和RDMA技术,为您提供单盘高达100万的随机读写能力和单路低时延性能。
- 超高IO:采用多磁盘条带化技术,将IO负载均衡到多块磁盘上以提升读写带宽,最大吞吐量为1.7GB/s。
可用区类型
目前支持单可用区类型。
可用区
选择目标可用区。
时区
由于世界各国家与地区经度不同,地方时也有所不同,因此会划分为不同的时区。时区可在创建实例时选择,后期不可修改。
内网安全组
默认为TaurusDB内网安全组,建议与TaurusDB保持一致。
性能规格
支持通用增强型。
BE节点规格
选择BE节点规格。
BE节点是标准版HTAP的后端节点,主要负责数据存储和SQL计算等工作。
BE节点存储
设置BE节点能够使用的存储空间。默认存储空间为50GB,最大可扩容至32000GB。
BE节点数量
- 单机版实例只有1个BE节点。
- 集群版实例可设置3~10个BE节点,单次最多可批量申请10个节点。
FE节点规格
选择FE节点规格。
FE节点是标准版HTAP的前端节点,主要负责管理元数据、管理客户端连接、进行查询规划、查询调度等工作。
FE节点存储
设置FE节点能够使用的存储空间。默认存储空间为50GB,最大可扩容至1000GB。
FE节点数量
- 单机版实例只有1个FE节点。
- 集群版实例可设置3~10个FE节点,单次最多可批量申请10个节点。
管理员账户名
默认为root。
管理员密码
所设置的密码长度为8~32个字符,至少包含大写字母、小写字母、数字、特殊字符三种字符的组合,其中允许输入~!@#%^*-_=+?,()&$|.特殊字符。请您输入高强度密码并定期修改,以提高安全性,防止出现密码被暴力破解等安全风险。
确认密码
必须和管理员密码相同。
购买时长(包年/包月)
选择所需的时长,系统会自动计算对应的配置费用,时间越长,折扣越大。
自动续费(包年/包月)
- 默认不勾选,不进行自动续费。
- 勾选后实例自动续费,自动续费周期与原订单周期一致。
- 参数配置完成后,单击右下角“立即创建”。
- 确认信息无误后,单击“提交”。
- 进行订单确认。
- 如果需要重新修改实例信息,单击“上一步”。
- 如果订单确认无误,单击“去支付”,在订单页面完成支付即可。
- 实例创建成功后,用户可在“HTAP实时分析”页面对其进行查看和管理。
步骤2:将TaurusDB数据同步至HTAP标准版实例
- 在“实例管理”页面的实例列表中,选择目标实例,单击实例名称进入实例概览页面。
- 在左侧导航栏选择“HTAP实时分析”。
- 单击目标HTAP实例名称,进入实例的“基本信息”页面。
- 在左侧导航栏选择“数据同步”,单击“创建数据同步”。
- 在创建数据同步页面,进行参数设置。
图3 创建数据同步
- 当前不支持数据库名称为中文的库同步,目标库、任务名不支持中文,且目标库最少三个字符。
- 从只读节点同步数据:选择“是”,勾选实例下的目标只读节点,会从目标只读节点进行全量数据同步,以避免全量同步阶段对主节点产生查询压力。如果仅有一个只读节点,默认选择该节点为目标节点。全量同步过程中需保证只读节点可用,否则全量同步失败后需重新开始同步。
- 同步任务名:同步任务名在3到128个字符之间,由字母、数字、下划线组成,不能包含其他特殊字符。
- 目标库:目标库在3到128个字符之间,由字母、数字、下划线组成,不能包含其他特殊字符。
- 库同步设置:单击下拉列表选择需要进行数据同步的目标库,可根据实际需求修改HTAP节点的数据库参数。
图4 库同步设置
- 同步范围:根据实际情况选择同步范围,支持对所有表或部分表进行同步。
- 表黑白名单:当同步范围选择部分表时,需要设置表黑白名单。根据实际情况需要对选择的表进行黑名单和白名单设置。
说明:
- 白名单和黑名单设置可根据实际需要选择其一进行设置,无法同时配置。如配置白名单,则只同步白名单中选择的表。如配置黑名单,则不同步黑名单中选择的表。
- 需要同步的表,需要包含主键或非空unique key,否则无法同步到HTAP节点。
- 后台数据合并任务及查询过程中可能额外使用磁盘空间,建议保留50%的空闲磁盘空间供系统额外使用。
- 在设置表黑白名单时可以在搜索框中一次性输入多张表,表之间可以通过逗号(“,”)、空格(“ ”)、换行分隔。在多表输入之后,单击
,与库中表相匹配的表会被默认勾选,出现在已选表中。
- 表同步设置:根据实际需要开启或关闭表同步设置。
- 选择开启后
- 左侧选择已经同步的表进行相应的列操作,支持order by, key columns, distributed by, partition by, data_model,buckets, replication_num,enable_persistent_index,如果同时设置多个操作,那么操作之间通过“;”连接。
详细的语法可以参考表3。
表3 操作语法 操作类型
具体语法
order by
order by(column1, column2)或者order by column1,column2
key columns
key columns(column1, column2)或者key columns column1,column2
distributed by
distributed by (column1, column2) buckets 3
说明:
buckets可选,如果不设置采用默认值。
partition by
分为表达式分区,List分区等。详见分区语法示例。
data_model
用于指定表类型,取值范围可以是主键表(primary key),明细表(duplicate key)或者更新表(unique key)。
具体语法如下:
data_model=primary key或者data_model=duplicate key或者data_model=unique key
replication_num
replication_num=3
说明:
取值不能超过BE节点数,否则会校验失败。
enable_persistent_index
表示是否持久化索引,具体语法如下:
enable_persistent_index=true或者enable_persistent_index=false
组合场景
data_model=duplicate key;key columns column1, column2;
分区语法示例:
表达式分区,仅需在建表时设置分区表达式(时间函数表达式或列表表达式)。在数据导入时,HTAP会根据数据和分区表达式的定义规则自动创建分区。
时间函数表达式分区:如果经常按照连续日期范围来查询和管理数据,则只需要在时间函数分区表达式中,指定一个日期类型(DATE或DATETIME)的分区列,以及指定分区粒度(年、月、日、小时),HTAP会根据导入的数据和分区表达式,自动创建分区并设置分区的起止时间。
语法:
PARTITION BY expression ... [ PROPERTIES( 'partition_live_number' = 'xxx' ) ] expression ::= { date_trunc ( <time_unit> , <partition_column> ) | time_slice ( <partition_column> , INTERVAL <N> <time_unit> [ , boundary ] ) }
表4 参数说明 参数
是否必填
说明
expression
是
目前仅支持date_trunc和time_slice函数。并且如果您使用 time_slice函数,则可以不传入参数boundary,因为在该场景中该参数默认且仅支持为floor,不支持为ceil。
time_unit
是
分区粒度,目前仅支持为hour、day、month或year,暂时不支持为week。如果分区粒度为hour,则仅支持分区列为DATETIME类型,不支持为DATE类型。
partition_column
是
分区列。
- 仅支持为日期类型(DATE或DATETIME),不支持为其它类型。如果使用date_trunc函数,则分区列支持为DATE或DATETIME类型。如果使用time_slice函数,则分区列仅支持为DATETIME类型。分区列的值支持为NULL。
- 如果分区列是DATE类型,则范围支持为[0000-01-01 ~ 9999-12-31]。如果分区列是DATETIME类型,则范围支持为[0000-01-01 01:01:01 ~ 9999-12-31 23:59:59]。
- 目前仅支持指定一个分区列,不支持指定多个分区列。
示例:假设您经常按天查询数据,则建表时可以使用分区表达式 date_trunc() ,并且设置分区列为 event_day ,分区粒度为 day,实现导入数据时自动按照数据所属日期划分分区。将同一天的数据存储在一个分区中,利用分区裁剪可以显著提高查询效率。
CREATE TABLE site_access1 ( event_day DATETIME NOT NULL, site_id INT DEFAULT '10', city_code VARCHAR(100), user_name VARCHAR(32) DEFAULT '', pv BIGINT DEFAULT '0' ) DUPLICATE KEY(event_day, site_id, city_code, user_name) PARTITION BY date_trunc('day', event_day) DISTRIBUTED BY HASH(event_day, site_id);
列表达式分区:如果您经常按照枚举值来查询和管理数据,则您只需要指定表示类型的列为分区列,HTAP会根据导入的数据的分区列值,来自动划分并创建分区。
语法:
PARTITION BY expression ... [ PROPERTIES( 'partition_live_number' = 'xxx' ) ] expression ::= ( <partition_columns> ) partition_columns ::= <column>, [ <column> [,...] ]
表5 参数说明 参数
是否必填
说明
partition_columns
是
分区列。
- 支持为字符串(不支持BINARY)、日期、整数和布尔值。不支持分区列的值为NULL。
- 导入后自动创建的一个分区中只能包含各分区列的一个值,如果需要包含各分区列的多值,请使用List分区。
示例:假设经常按日期范围和特定城市查询机房收费明细,则建表时可以使用分区表达式指定分区列为日期 dt 和城市 city。这样属于相同日期和城市的数据分组到同一个分区中,利用分区裁剪可以显著提高查询效率。CREATE TABLE t_recharge_detail1 ( id bigint, user_id bigint, recharge_money decimal(32,2), city varchar(20) not null, dt varchar(20) not null ) DUPLICATE KEY(id) PARTITION BY (dt,city) DISTRIBUTED BY HASH(`id`);
List 分区
数据按照您显式定义的枚举值列表进行分区,适用于按枚举值来查询和管理数据。您需要显式列出每个 List 分区所包含的枚举值列表,并且值不需要连续。
List分区适用于存储具有少量枚举值列的数据、并且经常按列的枚举值来查询和管理数据的场景。例如表示地理位置、状态、类别的列。列的每个值都代表一种独立的类别。按照列的枚举值对数据进行分区,可以提高查询性能和方便数据管理。尤其适用于一个分区中需要包含各分区列的多个值的场景。例如表中存在 City 列表示个体所属的城市,并且您经常按照州和城市查询和管理数据,则建表时可以使用 City 列作为分区列进行 List 分区,指定同属一个州的多个城市的数据分在同一分区 PARTITION pCalifornia VALUES IN ("Los Angeles","San Francisco","San Diego"),可以加速查询和方便数据管理。
说明:
必须在建表时就创建分区,导入时不支持自动创建分区,如果表中不存在数据对应的分区,会报错。
语法:PARTITION BY LIST (partition_columns)( PARTITION <partition_name> VALUES IN (value_list) [, ...] ) partition_columns::= <column> [,<column> [, ...] ] value_list ::= value_item [, value_item [, ...] ] value_item ::= { <value> | ( <value> [, <value>, [, ...] ] ) }
表6 参数说明 参数
是否必填
说明
partition_columns
是
分区列。
分区列的值支持为字符串(除BINARY)、日期(DATE和DATETIME)、整数和布尔值。分区列的值不支持为NULL。
partition_name
是
分区名称。
建议您按照业务场景设置合理的分区名称,便于区别不同分区包含的数据分类。
value_list
是
分区中分区列的枚举值列表。
示例一:假设经常按照州或城市查询机房收费明细,则建表时可以指定分区列为城市city ,并且指定每个分区所包含城市同属一个州,这样可以加速查询特定州或城市的数据,并且方便按照特定州或城市进行数据管理。
CREATE TABLE t_recharge_detail2 ( id bigint, user_id bigint, recharge_money decimal(32,2), city varchar(20) not null, dt varchar(20) not null ) DUPLICATE KEY(id) PARTITION BY LIST (city) ( PARTITION pCalifornia VALUES IN ("Los Angeles","San Francisco","San Diego"), -- 这些城市同属一个州 PARTITION pTexas VALUES IN ("Houston","Dallas","Austin") ) DISTRIBUTED BY HASH(`id`);
示例二:假设经常按日期范围和特定州或城市查询机房收费明细,则建表时可以指定分区列为日期dt和城市city。这样属于特定日期和特定州或城市的数据分组到同一个分区中,以加速查询和方便数据管理。
CREATE TABLE t_recharge_detail4 ( id bigint, user_id bigint, recharge_money decimal(32,2), city varchar(20) not null, dt varchar(20) not null ) ENGINE=OLAP DUPLICATE KEY(id) PARTITION BY LIST (dt,city) ( PARTITION p202204_California VALUES IN ( ("2022-04-01", "Los Angeles"), ("2022-04-01", "San Francisco"), ("2022-04-02", "Los Angeles"), ("2022-04-02", "San Francisco") ), PARTITION p202204_Texas VALUES IN ( ("2022-04-01", "Houston"), ("2022-04-01", "Dallas"), ("2022-04-02", "Houston"), ("2022-04-02", "Dallas") ) ) DISTRIBUTED BY HASH(`id`);
- 输入对表进行列操作的语句后,需单击此区域右侧的“校验”。
- 左侧选择已经同步的表进行相应的列操作,支持order by, key columns, distributed by, partition by, data_model,buckets, replication_num,enable_persistent_index,如果同时设置多个操作,那么操作之间通过“;”连接。
- 选择关闭后,直接执行6。
- 选择开启后
- 配置完成后,单击“创建同步任务”。
- 操作成功后,单击“返回同步列表”,返回数据同步页面。在数据同步界面可以查看任务名、源库、目标库、状态、删除任务等详细信息。
说明:
返回到数据同步页面,会生成一条待同步的数据同步任务。此时该任务的状态为“同步阶段:等待同步”。如需启动此任务,需单击操作列“同步”。
- 操作成功后,单击“返回同步列表”,返回数据同步页面。在数据同步界面可以查看任务名、源库、目标库、状态、删除任务等详细信息。
图5 查看任务状态
说明:
从 TaurusDB 同步数据到 HTAP 标准版实例主要分为两个阶段:全量同步阶段和增量同步阶段。
在全量同步阶段,对 TaurusDB 的使用有以下限制:
- 在开始全量同步前,请预估同步所需的时间,并相应调整 TaurusDB binlog 的保存时间。这样可以避免在切换到增量同步时,由于 binlog 点位已被删除而导致任务失败。建议将 binlog 保存时间至少设置为 1 天。
- 全量同步过程中,请勿在源数据库执行 DDL 操作,特别是耗时较长的 DDL 操作,否则可能导致任务异常。
- 请尽量保持 TaurusDB 主备机的稳定,避免触发主备切换、重启等操作。否则,可能导致任务异常,或新主机因查询压力过大而影响 TP 侧业务。
- 在全量同步过程中,请保持 AP 侧实例的稳定,避免重启等操作,否则全量同步任务可能会重新开始。
当HTAP实例的状态显示为“同步阶段:增量同步中”,表示该实例全量同步完成,进入增量阶段。