宽表引擎

云原生数据仓库 AnalyticDB MySQL 版集群提供宽表引擎,兼容了开源列式数据库ClickHouse的能力。本文为您介绍宽表引擎的特点以及如何开通并使用宽表引擎。

重要

宽表引擎功能处于邀测中,如果您需要开通该功能,请提交工单联系技术支持。

什么是宽表引擎

宽表引擎完全兼容开源列式数据库ClickHouse的能力和语法,能够处理大量的列式数据,适用于字段较多的表聚合查询分析场景。

宽表引擎的特点和架构图如下:

  • 宽表引擎会使用Interactive型资源组的常驻计算资源执行SQL任务。

  • 宽表引擎基于ReplicatedMergeTree引擎、云盘缓存空间、OSS构建了存储计算分离的云原生架构。

  • 无需定义分库与副本,一键式托管宽表引擎。

  • 宽表引擎提供高可用保障与高性能分布式查询的能力。

image

若您想了解更多开源列式数据库ClickHouse的信息,请参见ClickHouse文档

前提条件

AnalyticDB for MySQL集群需满足以下条件:

  • 产品系列为湖仓版

  • 集群内核版本需为3.2.1.0及以上。

    说明

    查看湖仓版集群的内核版本,请执行SELECT adb_version();。如需升级内核版本,请联系技术支持。

  • 集群中的Interactive型资源组未开启Multi-Cluster功能。

    说明

    您可以在资源组管理页面,单击对应Interactive型资源组操作列的修改,查看开启Multi-Cluster的按钮是否为置灰状态。若按钮为置灰状态,则表示资源组未开启Multi-Cluster功能。

  • 集群中存在计算预留资源大于0 ACU的Interactive型资源组。

注意事项

  • 宽表引擎开启后不允许关闭。

  • 开启宽表引擎的过程中部分节点会重启,会导致部分SQL执行失败,建议在业务低峰期执行。

  • 开启宽表引擎后,不允许创建Multi-Cluster资源组,且计算预留资源不允许缩容至0 ACU。

  • 不支持备份与恢复宽表引擎的数据。

  • 使用宽表引擎时,需要创建宽表引擎账号,该账号与AnalyticDB for MySQL集群的数据库账号为不同的账号体系,即通过宽表引擎账号无法访问AnalyticDB for MySQL集群的表,反之也相同。

费用说明

  • 开启宽表引擎后,会默认开通云盘缓存空间,产生云盘缓存空间费用。费用详情,请参见湖仓版产品定价

  • 使用宽表引擎,会产生数据存储费用,费用单价与湖仓版集群冷数据存储空间的费用相同。费用详情,请参见湖仓版产品定价

开启宽表引擎

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表。在集群列表上方,选择产品系列,然后单击目标集群ID。

  2. 在左侧导航栏,单击集群管理 > 宽表引擎

  3. 配置信息页面中,单击开启宽表引擎后的按钮。开启宽表引擎后,会自动开启云盘缓存空间。

  4. (可选)您可以滑动滑块或在缓存空间设置调整框中单击加号调整云盘缓存空间大小。

创建宽表引擎账号

AnalyticDB for MySQL宽表引擎支持高权限账号和普通账号。两种账号的区别及创建方法如下。

高权限账号和普通账号区别

数据库账号类型

说明

高权限账号

  • 只能通过控制台创建和管理高权限账号。

  • 一个集群中只能创建一个高权限账号,高权限账号可以管理所有普通账号和数据库。

  • 开放了更多权限,可满足个性化和精细化的权限管理需求,例如可按用户分配不同表的查询权限等。

普通账号

  • 既可以通过SQL语句进行创建,也可以通过控制台操作创建普通账号。SQL语句创建方式,详情请参见CREATE USER

  • 一个集群最多可以创建256个普通账号。

  • 需要手动为普通账号授予指定数据库的权限,详情请参见GRANT

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表。在集群列表上方,选择产品系列,然后单击目标集群ID。

  2. 在左侧导航栏,单击集群管理 > 宽表引擎

  3. 账号管理页面中,单击创建账号

  4. 在弹出的创建账号面板中,创建高权限账号普通账号

    参数

    说明

    数据库账号

    账号名称,根据控制台提示输入符合要求的名称。

    账号类型

    请选择高权限账号普通账号

    新密码

    账号的密码,根据控制台提示输入符合要求的账号密码。

    确认密码

    再次输入账号的密码。

    描述(可选)

    备注该账号的相关信息,便于后续账号管理。

连接并使用宽表引擎

湖仓版集群支持在内网或公网环境下通过HTTP、HTTPS、TCP和MySQL协议连接宽表引擎。下文以MySQL客户端为例,介绍了连接宽表引擎的具体步骤。

步骤一:连接宽表引擎

通过内网连接宽表引擎

前提条件
  • MySQL客户端与湖仓版集群所属同一VPC。

  • 已创建宽表引擎的账号。具体操作,请参见创建宽表引擎账号

  • 已将MySQL客户端的IP地址添加至湖仓版集群的白名单中。具体操作,请参见白名单

注意事项
  • 调用AllocateClusterPublicConnection接口开启宽表引擎的公网连接地址,会导致内网连接闪断,请确保您的应用有重连机制。

  • AnalyticDB for MySQL集群切换VPC和交换机后,宽表引擎所绑定的VPC与交换机不会变。

操作步骤
  1. 获取宽表引擎的内网地址及其端口号。

    1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表。在集群列表上方,选择产品系列,然后单击目标集群ID。

    2. 在左侧导航栏,单击集群信息 > 宽表引擎

    3. 配置信息页面中,查看VPC地址VPC MySQL端口号

  2. 连接宽表引擎,语句如下:

    mysql -hurl -Pport -uuser -ppassword

    参数说明:

    • url:步骤1获取的宽表引擎VPC地址

    • port:VPC MySQL端口号固定为9004。

    • user:宽表引擎账号。

    • password:宽表引擎账号的密码。

    示例:

    mysql -hamv-bp1s7butid48s4mw62****.ads.aliyuncs.com -P9004 -utest -p1Ws****    

通过公网连接宽表引擎

前提条件

已将MySQL客户端的IP地址添加至湖仓版集群的白名单中。具体操作,请参见白名单

操作步骤

  1. 获取宽表引擎的公网地址及其端口号。

    1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表。在集群列表上方,选择产品系列,然后单击目标集群ID。

    2. 在左侧导航栏,单击集群信息 > 宽表引擎

    3. 配置信息页面中,单击申请公网地址

    4. 配置信息页面中,查看外网地址公有网络 MySQL端口号

  2. 连接宽表引擎,语句如下:

    mysql -hurl -Pport -uuser -ppassword

    参数说明:

    • url:步骤1获取的宽表引擎外网地址

    • port:公有网络MySQL端口号固定为9004。

    • user:宽表引擎账号。

    • password:宽表引擎账号的密码。

通过SSL链路连接宽表引擎

  1. 下载CA证书。

    1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表。在集群列表上方,选择产品系列,然后单击目标集群ID。

    2. 在左侧导航栏,单击集群信息 > 宽表引擎

    3. 配置信息页面中,查看VPC HTTPS端口号,并单击下载CA证书

  2. 连接宽表引擎,语句如下:

    curl --cacert file https://url:port

    参数说明:

    • file:CA证书所在的路径。

    • url:宽表引擎连接地址。

      • 若您想通过内网连接宽表引擎,请填写VPC地址

      • 若您想通过公网连接宽表引擎,请先申请公网地址,并填写外网地址

    • port:VPC HTTPS端口号固定为8443。

    示例:

    curl --cacert ca.pem https://amv-bp1s7butid48s4mw62****.ads.aliyuncs.com:8443

步骤二:使用宽表引擎

  1. 创建数据库adb_demo

    CREATE DATABASE adb_demo ON CLUSTER default [ENGINE = Replicated];
    说明
    • 创建数据库时,ON CLUSTER default参数为固定参数,不能修改且必须填写,从而保证自动在每个节点上创建数据库。

    • 创建数据库时引擎必须配置为Replicated(默认引擎,可省略),且Replicated后不允许配置zoo_pathshard_namereplica_name参数。

    • 创建数据库的语法及参数说明,请参见CREATE DATABASE

  2. 创建表test

    CREATE TABLE test (
      id Int,
      name String,
      age Int,
      likes String,
      PRIMARY KEY(id)
    ) 
    ENGINE = ReplicatedMergeTree;
    说明
    • 创建表时表引擎必须填写为ReplicatedMergeTree,且ReplicatedMergeTree后不允许配置zoo_pathshard_nameH和replica_name参数,系统会自动填入所需参数。

    • 创建表的语法及参数说明,请参见CREATE TABLE

  3. test表中插入数据。

    INSERT INTO test(id,name,age,likes)VALUES('1','Lili','10','足球');
    INSERT INTO test(id,name,age,likes)VALUES('2','Tom','15','篮球');
    INSERT INTO test(id,name,age,likes)VALUES('3','Jack','20','排球');
    INSERT INTO test(id,name,age,likes)VALUES('4','Lucy','25','羽毛球');
  4. 查询数据。

    SELECT * FROM test;

    返回结果如下:

    +-----------+-----------+-----------+-----------+
    |    id     |   name    |    age    |   likes   |
    +-----------+-----------+-----------+-----------+
    |    1      |   Lili    |    10     |    足球   |
    +-----------+-----------+-----------+-----------+  
    |    2      |   Tom     |    15     |    篮球   |
    +-----------+-----------+-----------+-----------+ 
    |    3      |   Jack    |    20     |    排球   |
    +-----------+-----------+-----------+-----------+ 
    |    4      |   Lucy    |    25     |   羽毛球  |
    +-----------+-----------+-----------+-----------+