
# 配置Doris冷热分离
该章节主要介绍如何配置和使用Doris冷热分离功能。
#### 约束限制
Doris冷热分离功能开启后，转冷的数据不支持备份恢复功能。
#### 前提条件
Doris集群与OBS网络互通，相关操作具体请参考[初始化配置](https://support.huaweicloud.com/utiltg-obs/obs_11_0005.html)。
#### 创建OBS并行文件系统并获取AK/SK和DomainID
**创建OBS并行文件系统**。
1. 登录OBS管理控制台。
2. 选择"并行文件系统 \> 创建并行文件系统"。
3. 填写文件系统名称，例如"doris-obs"。
   
   企业项目需要与MRS集群保持一致，其他参数请根据需要填写。
   
   
4. 单击"立即创建"。
5. 在并行文件系统列表中单击新建的并行文件系统名称，单击"概览"，查看并记录"Endpoint"信息。
   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   用户删除服务或者卸载集群后，可能导致[2]\~[4]创建的并行文件系统下残留脏数据，请用户手动删除。
   
   
**获取AK/SK信息**。
6. 将鼠标移到右上角登录用户名处，在下拉列表中选择"我的凭证"。
7. 在"API凭证"中，记录并保存"账号ID"的值，作为DomainID。
8. 单击"访问密钥"页签，单击"新增访问密钥"，输入验证码或密码。单击"确定"，生成并下载访问密钥，在.csv文件中获取AK/SK信息。
 
#### 创建云服务委托并绑定集群
1. 登录MRS云服务管理控制台。
2. 在服务列表中选择"管理与监管 \> 统一身份认证服务 IAM"。
3. 选择"委托 \> 创建委托"，在创建委托页面设置如下参数，并单击"下一步"：
   
   - 委托名称：填写委托名称，例如：mrs_ecs_obs。
   
   - 委托类型：选择"云服务"。
   
   - 云服务：选择"弹性云服务器 ECS 裸金属服务器 BMS"。
   
   - 持续时间：选择"永久"。
   
   
   
   
4. 在弹出授权页面的搜索框内，搜索"OBS OperateAccess"策略，并勾选"OBS OperateAccess"策略。 
   如果OBS并行文件系统配置了KMS加密，同时需要勾选"KMS Administrator"策略。
   
   
5. 单击"下一步"，在"选择权限范围方案"中选择"全局服务资源"，单击"确定"。
6. 在弹出提示框中单击"知道了"，开始授权。界面提示"授权成功"，单击"完成"，委托创建成功。
7. 在MRS控制台，选择"现有集群"，单击Doris集群名称，进入集群详情页面。
8. 在集群详情的"概览"页签，单击"IAM用户同步"右侧的"同步"，进行IAM用户同步。
9. 单击委托右侧的"管理委托"选择创建的委托名称，例如：mrs_ecs_obs，单击"确定"进行绑定。
 
#### 创建普通账号委托并绑定集群
1. 登录MRS云服务管理控制台。
2. 在服务列表中选择"管理与监管 \> 统一身份认证服务 IAM"。
3. 选择"权限管理 \> 权限"，单击"创建自定义策略"，配置如下参数，并单击"确定"：
   
   - 策略名称：填写策略名称，例如：doris-policy。
   
   - 策略配置方式：选择"JSON视图"。
   
   - 策略内容：
     ```
     {
         "Version": "1.1",
         "Statement": [
             {
                 "Effect":"Allow",
                 "Action":[
                     "OBS:*:*"
                     ]
             }
             ]
     }
     ```
     
   
   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002060746638.png "点击放大")
   
   
4. 选择"委托 \> 创建委托"，在创建委托页面配置以下参数并单击"确定"： 
   - 委托名称：填写委托名称，例如：agency-MRS-to-OBS。
   
   - 委托类型：选择"普通账号"。
   
   - 委托的账号：填写本用户的云账号，即使用手机号开通的账号，不能是联邦用户或者IAM用户。
   
   - 持续时间：选择"永久"。
   
   
   
   
5. 在弹出授权页面的搜索框内，搜索[3]新建的自定义策略，并勾选该策略，例如"doris-policy"。
6. 单击"下一步"，在"选择授权范围"中勾选"全局服务资源"，单击"确定"。
7. 创建完成后，将鼠标放在新建的委托上，记录下委托ID。
8. 在"统一身份认证服务"选择"委托"。
9. 单击[3]中创建的云服务委托名称，例如："mrs_ecs_obs"。
10. 选择"授权记录 \> 授权"，单击"新建策略"，参数配置如下：
    
    - 策略名称：自定义策略名，例如"doris-assume-policy"。
    
    - 策略配置方式：选择"JSON视图"。
    
    - 策略内容：配置如下（其中"{委托id}"为[7]记录的ID）
      ```
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Action": [
                      "iam:agencies:assume"
                  ],
                  "Resource": {
                      "uri": [
                          "/iam/agencies/{委托ID}"
                      ]
                  },
                  "Effect": "Allow"
              }
          ]
      }
      ```
      
    
    
    
    
11. 单击"下一步"，在"选择策略"页面勾选[10]创建的策略名称。
12. 单击"下一步"，在"选择权限范围方案"中选择"全局服务资源"，单击"确定"。
 
#### 开启Doris冷热分离功能
默认情况下，Doris冷热分离功能是关闭的，如果需要使用该功能，请执行以下操作开启。
1. 登录FusionInsight Manager界面，选择"集群 \> 服务 \> Doris \> 配置"。
2. 在搜索框中搜索"obs_cooldown_enable"参数，修改该参数值为"true"。
3. （可选）如果本地磁盘的数据冷却并被存储到OBS上后，在某个时间段又需要将相关数据存储到本地磁盘上，可选择"全部配置 \> BE（角色） \> 自定义"，在自定义参数"be.conf.customized.configs"中新增"moveback_enable"参数，值为"true"。
4. 单击"保存"，单击"确定"，保存配置。
5. 单击"实例"，勾选受影响的FE和BE实例，选择"更多 \> 重启实例"，输入当前用户密码，重启FE和BE实例。
 
#### Doris冷热分离使用实践
1. 登录安装了MySQL的节点，执行以下命令，连接Doris数据库。 
   若集群已启用Kerberos认证（安全模式），需先执行以下命令再连接Doris数据库：
   **export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1**
   **mysql -u** *数据库登录用户* **-p** **-P** *FE查询连接端口* **-h** *Doris FE实例IP地址*
   执行命令后输入数据库登录用户密码。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - Doris FE的查询连接端口，可以通过登录Manager，单击"集群 \> 服务 \> Doris \> 配置"，查询Doris服务的"query_port"参数获取。
   
   - Doris FE实例IP地址可通过登录MRS集群的Manager界面，单击"集群 \> 服务 \> Doris \> 实例"，查看任一FE实例的业务IP地址。
   
   - 用户也可以使用MySQL连接软件或者在Doris WebUI界面连接数据库。
    
   
   
2. 创建Resource。
   
   - 使用permanent创建Resource
     1. 登录FusionInsight Manager界面，选择"集群 \> 服务 \> Doris \> 配置 \> 全部配置 \> FE（角色） \> OBS"，配置以下参数并单击"保存"保存配置：
        - obs_authentication_method：值修改为"permanent"。
        
        - object_storage_security_provider：保持默认值"com.huawei.mrs.MrsObsCredentialsProvider"即可。
         
     
     2. 单击"概览"，选择"更多 \> 重启服务"，输入当前用户密码并单击"确定"重启Doris服务。
     
     3. 在安装了MySQL客户端的节点上连接Doris，详细操作请参考[使用MySQL客户端连接Doris](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_249271.html)。
     
     4. 执行以下命令创建Resource： **CREATE RESOURCE IF NOT EXISTS** *resource_obs_hot_cold* **PROPERTIES (**
        **"type" = "obs",**
        **"obs.endpoint" = "** *xxx* **",**
        **"obs.region" = "** *xxx* **",**
        **"obs.bucket" = "** *xxx* **",**
        **"obs.root.path" = "** *xxx* **",**
        **"obs.access_key" = "** *xxx* **",**
        **"obs.secret_key" = "** *xxx* **"**
        **);**
        
     
     
     ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
     - type：数据存储类型，值为：obs。
     
     - obs.endpoint：[5]查看的Endpoint信息。
     
     - obs.region：Doris服务所在集群所属区域。
     
     - obs.bucket：[3]创建的OBS并行文件系统名称。
     
     - obs.root.path：数据存储的目录，例如"doris_data"，无须写为OBS绝对路径"obs://*并行文件系统名称* /*目录名称* "**。**
     
     - obs.access_key：[8]获取的AK信息。
     
     - obs.secret_key：[8]获取SK的信息。
       
   
   - 使用配置委托方式创建Resource
     1. 登录FusionInsight Manager界面，选择"集群 \> 服务 \> Doris \> 配置 \> 全部配置 \> FE（角色） \> OBS"，配置以下参数并单击"保存"保存配置：
        - obs_authentication_method：值修改为"agency"。
        
        - obs_endpoint：[5]查看的Endpoint信息，例如：obs.*XXX*。
        
        - object_storage_security_provider：保持默认值"com.huawei.mrs.MrsObsCredentialsProvider"即可。
         
     
     2. 单击"概览"，选择"更多 \> 重启服务"，输入当前用户密码并单击"确定"重启Doris服务。
     
     3. 在安装了MySQL客户端的节点上连接Doris，详细操作请参考[使用MySQL客户端连接Doris](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_249271.html)。
     
     4. 执行以下命令创建Resource： **CREATE RESOURCE IF NOT EXISTS** *resource_obs_hot_cold* **PROPERTIES (**
        **"type" = "obs",**
        **"obs.bucket" = "** *[3]* *创建的OBS并行文件系统名称* **",**
        **"obs.root.path" = "** *数据存储的目录* **"**，
        **"obs.region" = "** *Doris服务所在集群所属区域* **"**
        );
        ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
        "obs.root.path"表示数据存储的目录，例如"doris_data"，无须写为OBS绝对路径"obs://*并行文件系统名称* /*目录名称* "**。**
        
      
   
   
   
   
3. 执行以下命令通过Storage Policy设置数据冷却策略： 
   - 通过TTL（time to live）设置数据冷却策略： **CREATE STORAGE POLICY IF NOT EXISTS** *policy_doris_hot_cold* **PROPERTIES("storage_resource" = "** *resource_obs_hot_cold* **", "cooldown_ttl" = "** *1d* **");**
     "cooldown_ttl"的默认单位为秒，取值包括"*1* "、"*1* h"、"*1* d"、"*1* week"。例如，"cooldown_ttl"值为"1d"表示新导入的数据将在一天后开始冷却，并且冷却后的冷数据会存放到[2]创建Resource时配置的OBS对应的路径下。
     
   
   - 通过时间节点设置数据冷却策略： 除了设置TTL以外，在Policy中也支持设置冷却的时间点：
     **CREATE STORAGE POLICY IF NOT EXISTS** *policy_doris_hot_cold2* **PROPERTIES("storage_resource" = "resource_obs_hot_cold", "cooldown_datetime" = "** *2024-01-01 10:00:00* **");**
     
   
   
   
   
4. 设置表或者分区的Storage Policy： 
   - 创建表时设置Storage Policy： **CREATE TABLE** *ORDERS* **(**
     **ORDER_ID VARCHAR(50),**
     **USER_ID BIGINT,**
     **PRODUCT_ID VARCHAR(10),**
     **PRICE DECIMAL(15,2),**
     **CHANNEL VARCHAR(20),**
     **CREATE_DT DATE**
     **)**
     **DUPLICATE KEY(\`ORDER_ID\`)**
     **PARTITION BY RANGE(\`CREATE_DT\`)**
     **(**
     **PARTITION \`p202401\` VALUES LESS THAN ("2024-02-01"),**
     **PARTITION \`p202402\` VALUES LESS THAN ("2024-03-01")**
     **)**
     **DISTRIBUTED BY HASH(\`ORDER_ID\`) BUCKETS 3**
     **PROPERTIES (**
     **"replication_num" = "3",**
     **"storage_policy" = "policy_doris_hot_cold "**
     **);**
     
   
   - 为已存在的表修改属性进行设置： **ALTER TABLE** *ORDERS* **SET("storage_policy" = "policy_doris_hot_cold");**
     
   
   - 创建表时设置某个分区的冷热分离策略： **CREATE TABLE** *ORDERS* **(**
     **ORDER_ID VARCHAR(50),**
     **USER_ID BIGINT,**
     **PRODUCT_ID VARCHAR(10),**
     **PRICE DECIMAL(15,2),**
     **CHANNEL VARCHAR(20),**
     **CREATE_DT DATE**
     **)**
     **DUPLICATE KEY(\`ORDER_ID\`)**
     **PARTITION BY RANGE(\`CREATE_DT\`)**
     **(**
     **PARTITION \`p202401\` VALUES LESS THAN ("2024-02-01") ("storage_policy" = "policy_doris_hot_cold"),**
     **PARTITION \`p202402\` VALUES LESS THAN ("2024-03-01")**
     **)**
     **DISTRIBUTED BY HASH(\`ORDER_ID\`) BUCKETS 3**
     **PROPERTIES (**
     **"replication_num" = "3"**
     **);**
     
   
   - 修改已有表的分区属性进行设置： **ALTER TABLE** *ORDERS* **MODIFY PARTITION (\`p202401\`) SET("storage_policy"="policy_doris_hot_cold");**
     
   
   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 单表或单分区只能关联一个Storage Policy，关联后不能删除Storage Policy，需要先解除二者的关联。
   
   - Storage Policy关联的对象信息不支持修改数据存储path的信息，例如：bucket、endpoint、root_path等信息。
   
   - Storage Policy支持进行创建、修改和删除操作，删除前需要先保证没有表引用此Storage policy。
   
   - Unique模型在开启Merge-on-Write特性时，不支持设置Storage Policy。
    
   
   
5. 执行以下命令查看数据： 
   **show tablets from** *ORDERS* **;**
   以上命令可以查看表的tablet信息，tablet信息中区分了LocalDataSize和RemoteDataSize，LocalDataSize表示存储在本地的数据，RemoteDataSize表示已经冷却并存储到OBS上的数据。
   数据冷却前，查看到的表的tablet信息为：
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002060588330.png "点击放大")
   数据冷却后，查看到的表的tablet信息为：
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002096666897.png "点击放大")
   
   
 
