
# 使用示例：搭配ALT进行只读升主
本章节以只读节点升主节点为例，介绍搭配ALT进行只读节点升主节点的步骤及效果。小版本升级和规格变更的流程类似。
#### 使用须知
如果出现业务中断，请参考[注意事项](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_11_2006.html#ZH-CN_TOPIC_0000001973317902__section0451103114349)。
#### 前提条件
已完成[购买实例](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_4000.html)。
#### 操作步骤
#### 步骤1：创建数据库代理
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在实例管理页面，选择目标TaurusDB实例，单击实例名称，进入实例概览页面。
4. 在左侧导航栏中，单击"数据库代理"，进入数据库代理页面。
5. 单击"新增代理"。
6. 在新增代理页面，设置以下参数，并单击"立即购买"。 
   图1新增代理   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002698110293.png "点击放大")
   
   图2权重设置   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002689335611.png "点击放大")
   
   表1数据库代理参数 
   | **参数名称**  | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 代理实例名称    | 长度在4个到64个字符之间，必须以字母开头，区分大小写，可以包含字母、数字、中划线或下划线，不能包含其他特殊字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 代理模式      | TaurusDB数据库代理支持读写、TP只读和AP只读三种代理模式，可根据业务需要选择合适的代理模式。 - 读写模式：所有写请求只发往主节点，所有读请求按照读权重配比或者活跃连接数情况分发到已选节点。节点的读权重值默认为100。  - TP只读模式：不接收写请求。所有读请求按照读权重配比或者活跃连接数情况分发到已选只读节点，不会转发到主节点，即使主节点被选为服务节点。 - TP只读模式仅支持读请求业务，写业务请求会有异常提示。  - 在TP只读模式下，不支持DDL、DML操作和临时表操作。    - AP只读模式：不接收写请求。所有读请求按照读权重配比分发到已选节点。目前是公测阶段，如需使用，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)。 - 路由模式只支持权重负载，AP节点权重不能全部为0。  - 不支持Binlog拉取功能。  - 不支持会话一致性，仅支持最终一致性。  - 不支持事务拆分。  - 不支持行列自动分流。  - 不支持会话连接池。  - 不支持ALT。  - 不支持新节点自动加入。     |
   | 一致性级别     | TaurusDB实例内核版本为2.0.28.1及以上时支持设置一致性级别。内核版本的查询方法请参见[如何查看云数据库 TaurusDB实例的版本号](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0141.html)。 数据库代理支持如下一致性级别： - 最终一致性 开启数据库代理后，同一会话内，连续多次SELECT请求会根据权重配比，路由到不同的数据库节点，由于主节点与只读节点之间存在复制时延，并且各个只读节点的复制时延大小可能不同，可能会导致每次SELECT请求得到的结果存在差异，因此默认情况下，数据库代理只能保证数据的最终一致。 如果需要减轻主节点压力，让尽量多的读请求路由到只读节点，您可以选择最终一致性。   - 会话一致性 由于最终一致性可能会导致多次SELECT请求的结果存在差异，数据库代理进一步提供了会话级别的数据一致性，保证了在同一会话内，每次SELECT请求都可以获取到该会话中写入操作后的最新数据。 开启会话一致性需要数据库代理的内核版本为2.7.4.0及以上。   - 全局一致性 全局级别的数据一致性保证在不同会话内，数据一致，即写入数据后，立即执行查询类操作，能够准确查到修改后的数据。 建议在业务读多写少的场景下选择全局一致性。 全局一致性需要TaurusDB实例内核版本为2.0.57.240900及以上，还需要数据库代理内核版本为2.25.06.000及以上。 更多关于一致性级别的内容请参见[修改TaurusDB代理的一致性级别](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_11_0041.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 路由模式      | 数据库代理支持如下路由模式： - 权重负载：根据您设置的读权重比例分发读请求。  - 负载均衡：根据数据库节点的活跃连接数情况进行读请求分发，将读请求分发到活跃连接数较少的节点上。 负载均衡模式需要保证数据库代理的内核版本为2.22.07.000及以上。   - 可用区就近负载：根据可用区匹配，代理节点将读请求优先分发到同一可用区的数据库节点。 可用区就近负载模式需要保证数据库代理引擎版本为2.23.12.000及以上。    更多关于路由模式的内容请参见[修改TaurusDB代理的路由模式](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_11_0053.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 代理实例规格    | 根据实际需要选择代理实例规格。 - 鲲鹏通用计算增强型：2 vCPUs \| 4 GB、4 vCPUs \| 8GB、8 vCPUs \| 16 GB  - 通用增强型：2 vCPUs \| 4 GB、4 vCPUs \| 8 GB、8 vCPUs \| 16 GB                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 子网        | 该功能当前是公测状态，如需使用，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)。 开通数据库代理时可指定代理实例子网。如果TaurusDB实例所在子网为扩展网段，则不支持跨子网开启数据库代理，需要与TaurusDB实例在同一子网。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | IP分配方式    | 支持自动分配和手动分配IPv4地址。 - 自动分配：开通数据库代理时TaurusDB会自动为您配置IPv4代理地址。  - 手动分配：您可以输入子网号段内未使用的IPv4地址，作为TaurusDB实例的代理地址。您可以单击"查看已使用IP地址"，查看已被使用的IP地址。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 代理实例节点数量  | 默认为2个节点。最小支持2个节点，最大支持16个节点。 推荐代理实例节点数量 =（主节点CPU核数+所有只读节点CPU核数总和）/（4\*代理实例CPU核数），计算结果向上取整。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 可用区分配方式   | 支持选择可用区分配方式。 - 自动分配：随机分配代理节点所在可用区，优先与TaurusDB节点所在可用区保持一致。  - 手动分配：按照用户指定的可用区进行分配                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 节点可用区     | 选择代理节点的可用区。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 新节点自动加入   | 开启新节点自动加入开关后，新增的只读节点会自动添加到该数据库代理实例中。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 新节点权重     | 当路由模式为权重负载时，需要设置新节点的读权重。节点的读权重默认为100，读权重越高，处理的读请求越多。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 行存/列存自动引流 | 自动分流功能开启后，数据库代理基于业务流入的SQL语句的实际执行代价来实现自动分流，从而实现SQL查询的最大性能。详细使用及约束请参见[使用行列分流实现OLAP的复杂查询](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0165.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 选择数据库节点   | 勾选需要加入到数据库代理中处理读请求的节点，列表中展示的节点包含TaurusDB节点（主节点、只读节点）和HTAP节点（BE节点、FE节点）。 - 路由模式为负载均衡时，不需要配置读权重。数据库代理会根据节点的活跃连接数情况进行读请求分发，将读请求分发到活跃连接数较少的节点上。  - 路由模式为权重负载时，需要设置主节点和只读节点的读权重。数据库代理会根据您设置的读权重比例分发读请求。 例如：代理实例已选择1个主节点和2个只读节点，读权重配置为100、200、200。 在读写模式下，主节点和2个只读节点将按照1：2：2的比例处理读请求。即主节点处理20%的读请求，2个只读节点分别处理40%的读请求，写请求自动发往主节点。 在只读模式下，主节点权重在进行读请求处理分配时不生效，由2个只读节点分别处理50%的读请求。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      
   
   
7. 确认数据库代理信息。 
   - 如果需要重新选择，请单击"上一步"，修改基本信息。
   
   - 信息确认无误，单击"提交"，提交创建数据库代理请求。
   
   
   
   
8. 查看代理实例及关联的数据库节点。 
   数据库代理开通后，在数据库代理页面可查看到已创建成功的代理实例。
   图3查看创建成功的代理实例   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002215127621.png "点击放大")
   
   单击左侧导航栏中的"实例概览"，进入TaurusDB实例概览页面。单击页面右上方![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002015402534.png)，选择"查看实例拓扑图"，在实例拓扑图中可查看对应代理实例关联的数据库节点。将鼠标悬浮在节点信息处，可查看该节点的详细信息。
   图4查看代理实例关联节点信息   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002179650470.png "点击放大")
   
   
   
 
#### 步骤2：开启ALT
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面，选择目标TaurusDB实例，单击实例名称，进入"实例概览"页面。
4. 在左侧导航栏中单击"数据库代理"，选择目标代理实例。
5. 单击代理实例名称，进入代理实例"基本信息"页面。
6. 在"实例信息"模块的"ALT"处，单击![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002009957753.png)。
7. 在弹框中，单击"确定"，开启ALT。 
   图5开启ALT   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002283252873.png "点击放大")
   
   
   ALT开启后，如需关闭，单击![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002184810177.png)关闭。关闭ALT会重启代理实例，关闭所有代理的ALT后，TaurusDB实例也会重启。
   
   
8. 开启后，实例状态由"数据库代理实例配置ALT中"变为"正常"，表示实例开启ALT成功，可在代理基本信息页面查看。
9. 如果您需要在只读节点变更期间，保证读业务尽可能不中断，单击"只读ALT"处的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002614029277.png)，弹框中单击"确定"，开启只读ALT。
   
   图6开启只读ALT   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002583669496.png "点击放大")
   
   
   
 
#### 步骤3：应用连接到数据库代理
1. 在TaurusDB控制台查看代理地址和端口。
   
   单击目标TaurusDB实例，进入实例概览页面。在左侧导航栏单击"数据库代理"，在代理实例列表中查看代理地址和端口号。
   图7查看代理地址和端口   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002215142693.png "点击放大")
   
   
   
2. 登录弹性云服务器。 
   详细内容请参考[《弹性云服务器用户指南》](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0134.html)。
   
   
3. 执行如下命令，通过代理地址连接TaurusDB实例。 
   ```
   mysql -h host -P port -u userName -p
   ```
   示例：
   ```
   mysql -h 192.168.0.61 -P 3306 -u root -p
   ```
   出现如下提示时，输入数据库账号对应的密码：
   ```
   Enter password:
   ```
   表2参数说明 
   | 参数         | 说明                                                                                         |
   |:---|:---|
   | *host*     | [1]中获取到的代理地址。  |
   | *port*     | [1]中获取到的数据库端口。 |
   | *userName* | 用户名，即TaurusDB数据库管理员账号，默认为root。                                                             |
      
   
   
 
#### 步骤4：进行手动只读升主
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面的实例列表中，选择对应实例，单击实例名称，进入实例概览页面。
4. 在"节点信息"列表中，选择目标只读节点，在"操作"列单击"只读升主"。 
   图8只读升主   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002015330758.png "点击放大")
   
   
   
5. 在弹框中单击"是"。 
   - 切换时可能会出现30秒左右的闪断，请确保应用具备重连机制。
   
   - 切换过程中节点运行状态为"只读升主中"，此过程大概需要几秒或几分钟。
   
   
   
   
6. 若您已开启高危操作保护，在"身份验证"弹框中单击"获取验证码"，正确输入验证码并单击"确定"，页面自动关闭。 
   通过进行二次认证再次确认您的身份，进一步提高账号安全性，有效保护您安全使用云产品。关于如何开启操作保护，具体请参考[《统一身份认证服务用户指南》](https://support.huaweicloud.com/usermanual-iam/iam_07_0002.html#section2)的内容。
   
   
7. 切换完成后，节点运行状态变为"正常"，您可查看到原先的只读节点和主节点的角色已经互换。
 
#### 步骤5：测试ALT效果
当ALT功能开启，使用Sysbench，Tpcc-MySQL或MySQL客户端等工具连接到数据库代理地址，只读升主过程中用户的连接不会中断，只会出现短时间的卡顿后很快恢复。
以下分别是使用Sysbench，Tpcc-MySQL和MySQL客户端工具进行主备切换的效果示意。
- **使用Sysbench进行只读升主的示例**
  ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000001973477778.png "点击放大")
  
- **使用Tpcc-MySQL进行只读升主的示例**
  ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002009957757.png "点击放大")
  
- **使用MySQL命令行工具进行只读升主的示例**
  如下图所示，用户自定义变量、会话变量、数据库在主备切换前后保持一致。
  ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002009998229.png "点击放大")
  如下图所示，不同的事务排干超时时间，可能会影响到当前会话的ALT能力。
  ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000001973318014.png "点击放大")
  
 
