文档首页 > > 快速入门> MySQL快速入门> 扩展实例> 设置数据库代理

设置数据库代理

分享
更新时间: 2019/09/11 18:26

读写分离是指通过一个读写分离的连接地址实现读写请求的自动转发。通过RDS的读写分离连接地址,写请求自动访问主实例,读请求按照读权重设置自动访问各个只读实例。本文将介绍如何开通读写分离功能。

限制条件

由于开启或关闭读写分离时,系统会自动删除已有的帐户rdsProxy,然后自动创建新的rdsProxy帐户,因此,建议您不要创建rdsProxy帐户,防止被系统误删除。

  • 仅具有数据库代理权限的用户可使用数据库代理功能。

    如需开启读写分离功能,请联系客服人员申请。

  • 云数据库MySQL 5.6/5.7版的实例支持只读实例和开通读写分离功能。
  • 主备实例规格限制:主备实例CPU 4U及以上(DEC除外)才可以申请开通读写分离功能。
  • 只读实例个数限制:至少1个只读实例。
  • 实例删除限制:开启读写分离功能后,主备实例和最后一个只读实例不能被删除。
  • 实例修改限制:开启读写分离功能后,主实例和只读实例均不允许修改数据库端口、安全组和内网地址。

开启读写分离

仅支持MySQL主备实例(DEC除外),且该主备实例至少存在一个只读实例,才可以开启读写分离。

  1. 登录管理控制台。
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 选择数据库 > 关系型数据库。进入关系型数据库信息页面。
  4. 在实例列表中,单击目标实例的名称,进入实例的“基本信息”页面。
  5. 在左侧导航栏中,单击“数据库代理”,在“读写分离”页面单击“读写分离状态”后的
  6. “开启读写分离”弹出框中,单击“是”,开启实例的读写分离功能。

    • 数据库代理具备连接保持、读写分离能力,响应延时会增加20%以上。开启读写分离后,将新增1个读写分离连接地址,请将应用连接切换到新地址。
    • 读写分离地址:通过读写分离地址连接数据库,可实现读写分离功能。

      该读写分离地址与实例的内网IP地址处于同一VPC和子网,且与实例的内网IP地址并存,互不影响。

    • 只读权重:对于成功开启读写分离功能的实例,您可以设置其只读实例的权重。具体操作请参见设置只读权重
      图1 开启读写分离
      图2 读写分离开启状态

设置只读权重

读写分离功能成功开启后,主实例的只读权重默认为0,不能修改;只读实例可以设置只读权重。

实例的只读权重越高,处理的读请求越多。例如,假设主实例有4个只读实例,只读权重分别为100、200、500、300,则表示主实例不处理读请求(写请求仍然自动发往主实例),四个只读实例按照1:2:5:3的比例处理读请求。

  • 开通读写分离功能后,系统将根据只读实例的规格默认分配权重,后续新增只读实例也将按照默认规则分配权重。
    • 默认权重值=CPU个数*50。权重值范围为100~1000。

      例如:

      • CPU个数为1,1*50=50,则权重值为100。
      • CPU个数为8,8*50=400,则权重值为400。
      • CPU个数为32,32*50=1600,则权重值为1000。

    允许为“正常”或者“存储空间满”状态的实例设置权重,其余状态不允许设置。

  • 手动设置各个实例的读权重,范围为0~1000。
  • 实例系统崩溃时将自动移除权重,实例恢复后权重也将自动恢复。
  • 实例释放后将自动移除权重。
  1. 登录管理控制台。
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 选择数据库 > 关系型数据库。进入关系型数据库信息页面。
  4. 在实例列表中,单击只读实例所在的主实例名称,进入主实例的“基本信息”页面。
  5. 在左侧导航栏中,单击“数据库代理”,在右侧“读写分离”页面单击“设置只读权重”
  6. 在“设置只读权重”弹出框中,设置只读实例的权重。

    图3 设置只读权重

关闭读写分离

  1. 登录管理控制台。
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 选择数据库 > 关系型数据库。进入关系型数据库信息页面。
  4. 在实例列表中,单击只读实例所在的主实例名称,进入主实例的“基本信息”页面。
  5. 在左侧导航栏中,单击“数据库代理”,在“读写分离”页面单击“读写分离状态”后的,关闭读写分离功能。

    图4 读写分离关闭状态

权重分配规则

  • 系统自动设置实例的读权重时,权重值是固定的,如下表所⽰:
    说明:

    默认权重值=CPU个数*50。权重值范围为100~1000。

    例如:

    • CPU个数为1,1*50=50,则权重值为100。
    • CPU个数为8,8*50=400,则权重值为400。
    • CPU个数为32,32*50=1600,则权重值为1000。
    表1 MySQL只读实例权重值列表

    vCPU(个)

    内存(GB)

    权重

    1

    2

    100

    1

    4

    100

    1

    8

    100

    2

    4

    100

    2

    8

    100

    2

    16

    100

    4

    8

    200

    4

    16

    200

    4

    32

    200

    8

    16

    400

    8

    32

    400

    8

    64

    400

    16

    32

    800

    16

    64

    800

    16

    128

    800

    32

    64

    1000

    32

    128

    1000

    32

    256

    1000

    60

    128

    1000

    60

    256

    1000

    60

    512

    1000

  • 通过Hint指定SQL发往主实例或只读实例。

    在SQL开头添加hint注释进行强制路由;

    /*FORCE_MASTER*/强制路由到主节点;

    /*FORCE_SLAVE*/强制路由到只读节点;

    说明:
    • 在读写分离权重分配体系之外,Hint可作为另外一种SQL补充语法来指定相关SQL到主实例或只读实例执行。
    • Hint注释仅作为路由建议,非只读SQL、事务中的场景不能强制路由到只读节点。

测试读写分离效果

通过读写分离地址连接数据库,可实现读写分离功能。您可以使用内部SQL命令对读写分离效果进行验证。

  1. 通过读写分离地址连接数据库,具体请参考开启读写分离
  2. 执行命令查看执行SQL命令的实例。

    可以通过执行show last route查询上一条语句的路由结果,如下图所示。

    图5 结果查询

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区