# 教程：已有数据的物理集群转换逻辑集群
#### 场景介绍
大规模数据库集群通常会同时包含很多业务数据，不同业务有不同的数据表，可以通过[DWS资源负载管理](https://support.huaweicloud.com/mgtg-dws/dws_01_1510.html)功能创建多个资源池来实现不同业务的资源隔离。DWS支持将不同业务用户分配给不同资源池，以便减少业务之间资源（CPU资源、内存资源、IO资源和存储资源）竞争。
但随着业务规模不断扩大，集群系统中的业务数目越来越多，通过划分多个资源池来管理越来越难以控制资源竞争。由于DWS的分布式架构，业务数据被分散存储在多个节点上即每个表都会分布在数据库集群的所有DN节点上，因此每次数据表操作都可能会涉及所有DN节点，导致网络压力增大和系统资源大量消耗，仅通过扩大集群规模也很难解决，DWS建议用户划分多个逻辑集群来解决业务数量扩大带来的网络压力和资源消耗问题。
通过划分独立的逻辑集群，将新增的业务分配到独立的逻辑集群上，这样新增业务对原有业务的影响会很小。而原有逻辑集群中的业务规模如果扩大，也可以通过对原有逻辑集群扩容来解决。
如[图1]所示，假设某企业原有业务数据表都在原物理集群dws-demo（绿色部分），切换到逻辑集群lc1（蓝色部分）后，物理集群再通过扩容方式，新增一套新的逻辑集群lc2，原有业务数据表统一切换到逻辑集群lc1，新的业务数据表统一写入到逻辑集群lc2，实现新老业务的数据隔离。而新的逻辑集群lc2关联的用户u2，通过授权可以跨逻辑集群访问逻辑集群lc1的表。
- **集群规模**：从原始的物理集群3节点，扩容到6节点并拆分成2套逻辑集群。
- **业务隔离**：新、老业务数据隔离在不同逻辑集群中。
 
图1跨逻辑集群访问数据   
![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617505207.png "点击放大")
#### 视频介绍
<video controls="controls" preload="none" id="object195971211185816" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/dws-video/1725610352396127180.mp4" title="已有业务数据的物理集群转换成逻辑集群" poster="https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002369142274.png" height="307.0000" width="600.0000"></video>
#### 创建集群并准备表数据
1. 参见[创建DWS存算一体集群](https://support.huaweicloud.com/mgtg-dws/dws_01_0019.html)章节创建集群。
2. 连接集群数据库后，以系统管理员dbadmin创建表name，并插入2条数据。 
   ```
   CREATE TABLE name (id int, name varchar(20));
   INSERT INTO name VALUES (1,'joy'),(2,'lily');
   ```
   
   
 
#### 转换成逻辑集群lc1
**转换期间，用户可执行增删改查等简单DML语句，执行数据库对象等复杂DDL语句会阻塞业务，请选择业务低峰窗口期进行。**
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左导航栏选择**"集群 \> 集群列表"** ，单击指定集群名称进入**"集群详情"**页面。
3. 打开**"逻辑集群开关"**。
4. 在上侧导航栏选择**"逻辑集群"**进入逻辑集群页面。
5. 单击**"添加逻辑集群"** ，根据需求填写配置，单击**"提交"** 后新增逻辑集群。
   
   切换期间当前集群不可用，请耐心等待约2分钟（转换时间因业务数据量大小不同，有所差异），待逻辑集群页面出现lc1，表示转换成功。
   
   
 
#### 扩容节点到逻辑集群中
1. 新增3个空闲节点，详情请参见[添加节点](https://support.huaweicloud.com/mgtg-dws/dws_01_0818.html#ZH-CN_TOPIC_0000002617625151__section1755822564916)。
2. 在需要扩容的逻辑集群所在行的**"操作"** 列单击**"扩容"** 。
   
   在扩容开始前如果集群满足巡检条件，界面会显示**巡检** 模块，单击**"开始巡检"** 先完成一次巡检（如果需要终止巡检任务可单击**"终止任务"** ），巡检中会显示巡检进度，用户需保证巡检通过，通过后可单击**"下一步"** 进行变更操作，详情请参见[查看巡检](https://support.huaweicloud.com/mgtg-dws/dws_01_01755.html)。
   
   
3. 右边页面弹出扩容页面，打开**"在线扩容"** ，选择扩容到逻辑集群中。确认无误后，勾选**"我已知晓变更可能存在的风险，同意进行变更"**。
4. 单击**"提交"**。请耐心等待约10分钟，扩容成功。
 
#### 添加逻辑集群lc2
1. 在集群列表页面，单击指定集群名称进入**"集群详情"** 页面，在上侧导航栏单击**"逻辑集群"**。
2. 进入逻辑集群页面，单击**"添加逻辑集群"**。
3. 右边弹出添加逻辑集群页面，根据需求填写配置，单击**"提交"**后新增逻辑集群。请耐心等待约2分钟，逻辑集群添加成功。
 
#### 创建逻辑集群关联用户并实现跨逻辑查询数据
1. 以系统管理员连接数据库，执行以下SQL语句查询原业务表name。 
   验证转换后，业务数据查询正常。
   ```
   SELECT * FROM name;
   ```
   
   
2. 执行以下语句创建u1关联逻辑集群lc1，u2关联逻辑集群lc2。 
   ```
   CREATE USER u1 NODE GROUP "lc1" PASSWORD '{password}';
   CREATE USER u2 NODE GROUP "lc2" PASSWORD '{password}';
   ```
   
   
3. 以用户u1登录数据库，创建新表u1.t1并插入两条数据，同时授权用户u2可以访问该表。 
   ```
   CREATE TABLE u1.t1 (id int, name varchar(20));
   INSERT INTO u1.t1 VALUES (1,'joy'),(2,'lily');
   GRANT USAGE ON SCHEMA u1 TO u2;
   GRANT SELECT ON TABLE u1.t1 TO u2;
   ```
   
   
4. 以用户u2登录数据库，查询原业务表t1数据，提示无权访问逻辑集群lc1。结果表明，即使用户u1已经授权了u2可以访问该表，但是由于这张表在不同的逻辑集群，所以仍然无法访问，证明逻辑集群间数据隔离。 
   ```
   SELECT * FROM u1.t1;
   ```
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617625313.png "点击放大")
   
   
   
5. 切回系统管理员dbadmin窗口，将逻辑集群lc1的访问权限授予用户u2。 
   ```
   GRANT USAGE ON NODE GROUP lc1 TO u2;
   ```
   
   
6. 再次切到用户u2窗口，查询表t1成功。结果验证绑定了逻辑集群lc2的用户可以跨逻辑集群查询到原业务表t1。实现逻辑集群间的数据共享。 
   ```
   SELECT * FROM u1.t1;
   ```
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587065626.png "点击放大")
   
   
   
 
