- 最新动态
- 功能总览
-
服务公告
- 漏洞公告
-
产品公告
- 【停售公告】华为云云数据库RDS for PostgreSQL 12版本于2025年5月1日00:00(北京时间)停售通知
- 【下线公告】华为云云数据库RDS for PostgreSQL 10、11版本于2024年11月1日00:00(北京时间)下线通知
- 【停售公告】华为云云数据库RDS for MySQL 5.6版本于2024年7月1日00:00(北京时间)停售通知
- 【停售公告】华为云云数据库RDS for PostgreSQL 10、11版本于2024年7月1日00:00(北京时间)停售通知
- 【下线公告】华为云云数据库RDS for PostgreSQL 9.5、9.6版本于2024年7月1日00:00(北京时间)下线通知
- 【通知】2024年5月28日起RDS for MySQL内存加速特性开放公测
- 产品发布说明
- 产品介绍
- 计费说明
- 快速入门
- 内核介绍
-
用户指南
- RDS for MySQL用户指南
- RDS for MariaDB用户指南
- RDS for PostgreSQL用户指南
- RDS for SQL Server用户指南
-
最佳实践
- RDS最佳实践汇总
- RDS for MySQL
- RDS for PostgreSQL
-
RDS for SQL Server
- 恢复备份文件到RDS for SQL Server实例的版本限制
- 使用导入导出功能将ECS上的SQL Server数据库迁移到RDS for SQL Server
- 修改RDS for SQL Server实例的参数
- RDS SQL Server支持DMV动态管理视图
- 使用导入导出功能将本地SQL Server数据库迁移到RDS for SQL Server
- 在rdsuser主账号下创建子账号
- 创建tempdb临时数据文件
- Microsoft SQL Server发布与订阅
- RDS for SQL Server添加c#CLR程序集的使用方法
- RDS for SQL Server添加链接服务器
- RDS for SQL Server 如何将线下SSRS报表服务部署上云
- RDS for SQL Server收缩数据库
- 使用DAS在RDS for SQL Server主备实例上分别创建和配置Agent Job和Dblink
- 创建实例定期维护job
- 使用扩展事件
- 性能白皮书
-
API参考
- 使用前必读
- API概览
- 如何调用API
- API v3.1(推荐)
-
API v3(推荐)
- 查询API版本
- 查询数据库引擎的版本
- 查询数据库规格
- 查询数据库磁盘类型
- 获取磁盘空间使用量
-
实例管理
- 创建数据库实例
- 创建数据库实例(v5接口)
- 按需转包周期
- 停止实例
- 开启实例
- 修改实例名称
- 修改实例备注
- 申请内网域名
- 修改内网域名
- 查询实例域名
- 查询实例IPv6域名
- 获取实例的复制状态
- 查询数据库可变更规格接口
- 变更数据库实例的规格
- 扩容数据库实例的磁盘空间
- 设置自动扩容策略
- 查询自动扩容策略
- 单机转主备实例
- 重启数据库实例
- 删除数据库实例
- 查询数据库实例列表
- 绑定和解绑弹性公网IP
- 切换主备实例的倒换策略
- 手动倒换主备
- 更改主备实例的数据同步方式
- 设置实例读写状态
- 迁移主备实例的备机
- 设置可维护时间段
- 升级内核小版本
- 设置秒级监控策略
- 查询秒级监控策略
- 开启实例TDE(SQL Server)
- 查询实例TDE状态(SQL Server)
- 解除节点只读状态
- 灾备实例
- 数据库安全性
- 备份与恢复
- 大版本升级
- 获取日志信息
- 实例诊断
- SQL限流(PostgreSQL)
- 数据库代理(MySQL)
- 管理数据库和用户(MySQL)
- 管理数据库和用户(PostgreSQL)
- 管理数据库和用户(SQL Server)
- 参数管理
- 插件管理(PostgreSQL)
- 配置只读延迟库(PostgreSQL)
- 回收站
- 标签管理
- 配额管理
- 获取任务信息
- 历史API
- 权限和授权项
- 附录
- SDK参考
-
常见问题
-
产品咨询
- 使用RDS要注意些什么
- RDS实例是否会受其他用户实例的影响
- 不同RDS实例的CPU和内存是否共享
- 创建RDS实例需要多长时间
- 为何使用了RDS后网站登录较慢
- 主备同步存在多长时间的延迟
- 多台弹性云服务器是否可以使用同一个RDS数据库
- RDS购买磁盘加密后,备份文件会加密吗
- 什么是RDS实例可用性
- 云数据库RDS支持跨AZ高可用吗
- RDS是否支持主备实例变更为单机实例
- RDS for MySQL与TaurusDB的区别
- 云数据库RDS是否支持CloudPond
- RDS for MySQL实例支持哪些加密函数
- RDS for MySQL是否兼容MariaDB
- RDS for MySQL是否支持TokuDB
- RDS for MySQL开启GTID后有哪些限制
- RDS for MySQL是否有单表尺寸限制
- 登录RDS实例时能使用加密密码认证吗
- RDS实例内网IP和私有IP的区别
- 找不到我的RDS资源怎么办
- 资源冻结/释放/停止/删除/退订
- 资源及磁盘管理
-
数据库连接
- RDS实例连接失败怎么办
- RDS数据库连接数满的排查思路
- RDS数据库实例支持的最大数据连接数是多少
- 内网方式下ECS无法连接RDS实例的原因
- 客户端问题导致连接RDS实例失败
- 服务端问题导致连接RDS实例失败
- 应用程序是否需要支持自动重连RDS数据库
- RDS绑定公网IP后无法ping通的解决方案
- RDS跨地域内网能访问吗
- 为什么RDS实例重置密码后新密码没有生效
- 可以访问RDS备实例吗
- 如何查看RDS for MySQL数据库的连接情况
- 连接RDS for SQL Server数据库时,连接超时是否会自动退出
- RDS for SQL Server连接不上的判断方法
- 外部服务器能否访问RDS数据库
- ECS内网访问RDS,是否受带宽限制
- 如何安装SQL Server Management Studio
- 数据库迁移
-
数据库权限
- RDS的root账号为什么没有super权限
- RDS ManageAccess权限和DAS权限有什么区别
- 本地客户端连接RDS实例后如何查看已授权的数据库
- 使用DAS登录RDS数据库是否有人数限制,密码多次输入错误有无锁死机制
- RDS for MySQL是否支持多账号
- 普通用户在postgres数据库下创建对象失败
- 删除RDS for PostgreSQL数据库中的角色失败
- RDS for PostgreSQL数据迁移过程中由于权限问题导致迁移报错
- 如何给RDS for PostgreSQL数据库中的用户赋予REPLICATION权限
- 更改云数据库 RDS for PostgreSQL数据库中表的OWNER报错
- RDS for SQL Server 2017 企业版主备实例的登录名权限如何同步到只读实例
- RDS for SQL Server中主实例的账号删除重建后,权限是否会自动同步
- 数据库存储
- 数据库基本使用
- 备份与恢复
- 只读实例和读写分离
- 数据库监控
- 扩容及规格变更
-
数据库参数修改
- RDS是否支持使用SQL命令修改全局参数
- 如何修改RDS实例的时区
- 如何设置RDS for MySQL 8.0字符集的编码格式
- 如何设置RDS for MySQL的表名是否区分大小写
- 如何设置RDS for MySQL实例开启查询缓存
- 如何设置RDS for MySQL实例的密码过期策略
- 如何修改RDS for MySQL实例的事务隔离等级
- 如何确保RDS for MySQL数据库字符集正确
- 如何使用utf8mb4字符集存储emoji表情到RDS for MySQL实例
- RDS for PostgreSQL的哪些参数设置不合理会导致数据库不可用
- 如何设置RDS for PostgreSQL实例的临时文件磁盘占用上限
- 如何设置RDS for PostgreSQL实例支持test_decoding插件
- 如何在RDS for SQL Server数据库添加ndf文件的路径
- 如何修改RDS for SQL Server字符集的排序规则
- 日志管理
- 网络安全
- 版本升级
- RDS API&SDK等开发者相关
-
产品咨询
-
故障排除
-
RDS for MySQL
- 备份恢复
- 主备复制
- 参数类
-
性能资源类
- CPU使用率高问题排查与优化
- 内存使用超限风险与优化
- 磁盘性能带宽超上限
- 联合索引设置不当导致慢SQL
- 数据库磁盘满导致被设置read_only
- Binlog未清理导致磁盘占用高
- 业务死锁导致响应变慢
- MySQL只读实例磁盘占用远超主实例
- RDS for MySQL CPU升高定位思路
- 冷热数据问题导致sql执行速度慢
- 表碎片率过高可能导致的问题
- 复杂查询造成磁盘满
- 怎么解决查询运行缓慢的问题
- 长事务导致规格变更或小版本升级失败
- RDS for MySQL数据库报错Native error 1461的解决方案
- RDS for MySQL增加表字段后出现运行卡顿现象
- 长事务导致UNDO增多引起磁盘空间满
- RDS for MySQL如何定位一直存在的长事务告警
- RDS for MySQL部分SQL的commit时间偶现从几毫秒陡增到几百毫秒
- ibdata1为什么会变大
-
SQL类
- RDS for MySQL执行SQL报错无法识别双引号
- 更新emoji表情数据报错Error 1366
- 索引长度限制导致修改varchar长度失败
- 建表时timestamp字段默认值无效
- 自增属性AUTO_INCREMENT为什么未在表结构中显示
- 存储过程和相关表字符集不一致导致执行缓慢
- RDS MySQL报错ERROR [1412]的解决方法
- 创建二级索引报错Too many keys specified
- 存在外键的表删除问题
- distinct与group by优化
- 字符集和字符序的默认选择方式
- MySQL创建用户提示服务器错误
- delete大表数据后,再次查询同一张表时出现慢SQL
- 设置事件定时器后未生效
- 为什么有时候用浮点数做等值比较查不到数据
- 开通数据库代理后有大量select请求分发到主节点
- 执行RENAME USER失败的解决方法
- 有外键的表无法删除报错ERROR[1451]的解决方案
- 表字段类型转换失败的解决方法
- RDS for MySQL创建表失败报错Row size too large的解决方案
- RDS for MySQL数据库报错ERROR [1412]的解决方案
- 外键使用不规范导致实例重启失败或执行表操作报错ERROR 1146: Table 'xxx' doesn't exist
- RDS for MySQL在分页查询时报错:Out of sort memory, consider increasing server sort buffer size
- RDS for MySQL创建用户报错:Operation CREATE USER failed
- RDS for MySQL使用grant授权all privileges报语法错误
- RDS for MySQL 5.6版本实例创建表报错
- 无主键表添加自增主键后导致主备节点查询数据不一致
- RDS for MySQL插入数据提示Data too long for column
-
连接类
- 连接数据库报错Access denied
- mariadb-connector SSL方式连接数据库失败
- RDS for MySQL建立连接慢导致客户端超时报connection established slowly
- root账号的ssl_type修改为ANY后无法登录
- 通过DAS登录实例报错Client does not support authentication protocol requested by server
- 通过DAS授权或取消授权时报错Your password does not satisfy the current policy requirements
- 客户端TLS版本与RDS for MySQL不一致导致SSL连接失败
- 使用root账号连接数据库失败
- RDS for MySQL客户端连接实例后会自动断开
- RDS for MySQL实例无法访问
- RDS for MySQL数据库修改authentication_string字段为显示密码后无法登录
- RDS for MySQL升级版本后,导致现有配置无法正常连接到MySQL-server
- 客户端超时参数设置不当导致连接超时退出
- RDS for MySQL在启用了SSL验证连接功能后,导致代码(php/java/python)等连接数据库失败
- istio-citadel证书机制导致每隔45天出现断连
- 数据库版本升级后Navicat客户端登录实例报错1251
-
其他使用问题
- 慢日志显示SQL语句扫描行数为0
- SQL诊断结果中记录的行数远小于慢日志中的扫描行数
- RDS for MySQL慢日志里面有毫秒级别的SQL
- 查看RDS存储空间使用量
- 错误日志报错The table is full
- 审计日志上传策略说明
- 自增字段取值
- 表的自增AUTO_INCREMENT初值与步长
- 表的自增AUTO_INCREMENT超过数据中该字段的最大值加1
- 自增字段值跳变的原因
- 修改表的自增AUTO_INCREMENT值
- 自增主键达到上限,无法插入数据
- 空用户的危害
- pt-osc工具连接RDS for MySQL主备实例卡住
- 购买RDS实例支付报错:Policy doesn't allow bss:order:update to be performed
- RDS for MySQL是否可以修改数据库名称
- 购买RDS实例报错:无IAM的agency相关权限
- RDS for PostgreSQL
- RDS for SQL Server
-
RDS for MySQL
- 视频帮助
- 产品术语
-
更多文档
-
用户指南(阿布扎比区域)
- 产品介绍
- MySQL快速入门
- PostgreSQL快速入门
- SQL Server快速入门
- MySQL用户指南
- PostgreSQL用户指南
- SQL Server用户指南
- 常见问题
- API参考 (阿布扎比区域)
- 用户指南(巴黎区域)
- API参考(巴黎区域)
-
用户指南(吉隆坡区域)
- 产品介绍
- MySQL快速入门
- PostgreSQL快速入门
- SQL Server快速入门
- MySQL用户指南
- PostgreSQL用户指南
- SQL Server用户指南
- 常见问题
- API参考(吉隆坡区域)
-
用户指南(安卡拉区域)
- 产品介绍
- RDS for MySQL快速入门
- RDS for PostgreSQL快速入门
- RDS for MySQL用户指南
- RDS for PostgreSQL用户指南
-
常见问题
- 产品咨询
- 资源及磁盘管理
-
数据库连接
- RDS实例连接失败怎么办
- 外部服务器能否访问RDS数据库
- RDS数据库连接数满的排查思路
- RDS数据库实例支持的最大数据连接数是多少
- 如何创建和连接ECS
- 内网方式下ECS无法连接RDS实例的原因
- 客户端问题导致连接失败
- 服务端问题导致连接失败
- 应用程序是否需要支持自动重连数据库
- 如何通过JDBC连接RDS for PostgreSQL数据库
- 绑定公网IP后无法ping通的解决方案
- 如何定位本地IP地址
- RDS跨地域内网能访问吗
- 为什么重置密码后新密码没有生效
- 如何设置MySQL8.0字符集的编码格式
- ECS和RDS部署在不同的VPC网络不通怎么办
- 如何查看当前时间所有连接数据库的IP
- RDS备实例能够访问吗
- 如何判断RDS for MySQL数据库是否被连接使用
- 数据库迁移
- 数据库权限
- 数据库存储
- 安装客户端
- 数据库基本使用
- 备份与恢复
- 数据库监控
- 扩容及规格变更
- 数据库参数修改
- 网络安全
- 版本升级
- 修订记录
- API参考(安卡拉区域)
-
用户指南(阿布扎比区域)
- 通用参考
链接复制成功!
使用RDS for MySQL数据库代理实现读写分离
创建RDS for MySQL实例后,您可以开通数据库代理,通过代理地址实现读写请求的自动转发。写请求自动访问主节点,读请求按照数据库代理的路由模式分发到各个节点,降低主节点的负载。
本章节介绍使用数据库代理实现读写分离的过程,主要流程如下:
使用须知
- 在开通数据库代理前,需要有已购买成功的RDS for MySQL实例。
- 主实例和只读实例的状态必须均为“正常”。
- 数据库代理支持的区域和版本限制,请参见数据库代理约束与限制。
中国-香港、亚太-曼谷、亚太-新加坡区域默认开通单个数据库代理,即1个RDS for MySQL实例下只能购买1个数据库代理实例。适用于单个业务场景,灵活性低,无法实现业务隔离,仅有单一访问数据库的入口。
- 更多功能介绍,请参见RDS for MySQL数据库代理简介。
- 更多区域限制,请参见数据库代理约束与限制。
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在实例列表中,单击目标实例的名称,进入实例的“概览”页面。
- 在左侧导航栏中,单击“数据库代理”。
您还可以在实例的“概览”页面,单击“读写分离地址”后的“申请”,跳转到“数据库代理”页面。
- 在“数据库代理”页面单击“创建数据库代理”。
- 在开启数据库代理页面,设置以下参数,单击“下一步”。
图1 选择权重负载图2 选择负载均衡
表1 基本信息 参数
描述
计费模式
路由模式
- 权重负载:开启读写分离功能后,用户自行设置主备实例和只读实例的权重。
- 负载均衡:开启了Proxy负载均衡,可以选择该模式。支持基于负载的自动调度策略,读请求将在多个只读节点中按照活跃连接数自动调度,来保证多个只读节点间的负载均衡。
开启数据库代理后,可以修改路由模式,具体操作请参见设置延时阈值和路由模式。
主库接受读
“负载均衡”模式需设置。
- 选择“是”,查询SQL可以发送到主节点和只读节点。
- 选择“否”,查询SQL将仅发送到只读节点,来降低主节点的负载,确保主节点稳定。
性能规格
选择代理实例的规格。创建后可以根据业务需求变更规格,具体请参见变更数据库代理的规格。
如需查看性能指标,请参见表2。
子网
选择代理实例所在的子网。
代理节点数量
支持2~8个节点。创建后可以修改,具体请参见调整代理节点数量。
建议您根据需要连接的只读实例个数设置代理节点数,1个只读实例配1个代理节点。
- 读写分离具备连接保持、读写分离能力。开启读写分离后,将新增1个读写分离连接地址,请将应用连接切换到新地址。
- 读写分离地址:通过读写分离地址连接数据库,可实现读写分离功能。
- 延时阈值:对于成功开启读写分离功能的实例,您可以设置其延时阈值。具体操作请参见设置延迟阈值。
- 负载均衡实例选择:对于成功开启读写分离功能的实例,您可以选择负载均衡实例。
- 确认数据库代理信息。
- 如果需要重新选择,单击“上一步”,修改基本信息。
- 信息确认无误,单击“提交”,下发创建数据库代理请求。
- 创建完成后,可以在“数据库代理”页面查看并管理代理服务信息。
在“概览”页面查看读写分离地址,通过读写分离地址连接数据库,可实现读写分离功能。
该读写分离地址与实例的内网IP地址处于同一VPC和子网,且与实例的内网IP地址并存,互不影响。
图3 查看读写分离地址
华北-北京四、华东-上海一、华南-广州、西南-贵阳一区域默认开通多个数据库代理,即一个RDS for MySQL实例下可以购买多个数据库代理实例,最多支持购买4个代理实例。适用于复杂的多业务场景,多代理可以使用多个入口,不同的业务通过不同的入口访问数据库,实现业务隔离,提高资源利用效率。
- 更多功能介绍,请参见RDS for MySQL数据库代理简介。
- 更多区域限制,请参见数据库代理约束与限制。
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在实例列表中,单击目标实例的名称,进入实例的“概览”页面。
- 在左侧导航栏中,单击“数据库代理”。
您还可以在实例的“概览”页面,单击“读写分离地址”后的“申请”,跳转到“数据库代理”页面。
图4 开启读写分离入口 - 在“数据库代理”页面单击“创建数据库代理”。
图5 创建数据库代理
- 在“开启数据库代理服务”页面,填选如下信息后,单击“下一步”。
图6 选择权重负载图7 选择负载均衡
表2 基本信息 参数
描述
计费模式
代理名称
实例名称长度最小为4字符,最大为64个字符,如果名称包含中文,则不超过64字节(注意:一个中文字符占用3个字节),必须以字母或中文开头,区分大小写,可以包含字母、数字、中划线、下划线或中文,不能包含其他特殊字符。
读写属性
- 读写:读写分离。
- 只读:不连接主实例,无法接收写请求。
路由模式
- 权重负载:开启读写分离功能后,用户自行设置主备实例和只读实例的权重。
- 负载均衡:支持基于负载的自动调度策略,读请求将在多个只读节点中按照活跃连接数自动调度,来保证多个只读节点间的负载均衡。
开启数据库代理后,可以修改路由模式,具体操作请参见设置延时阈值和路由模式。
主库接受读
仅“负载均衡”模式需设置。
- 选择“是”,读请求可以发送到主节点和只读节点,这在一定程度上,会增加主节点的负载,请您根据业务需求配置该开关。
- 选择“否”,读请求仅发送到只读节点,来降低主节点的负载,确保主节点稳定。
性能规格
选择代理实例的规格。创建后可以变更规格,具体请参见变更数据库代理的规格。
如需查看性能指标,请参见表2。
代理节点数量
支持2~8个节点。创建后可以修改,具体请参见调整代理节点数量。
建议您根据需要连接的只读实例个数设置代理节点数,1个只读实例配1个代理节点。
权重设置
仅“权重负载”模式需设置。选择需要分配权重的主实例和只读实例。
读权重分配:
- 读权重越高,处理的读请求越多,假设已选2个实例,权重分别设置为100,200,则当前proxy全部读请求自动按照1:2的比例发往已选实例(未选择的实例权重会设置为0)。
- 一个只读实例可以关联多个代理,建议您根据当前主实例下只读实例的已有代理权重和流量拓扑设置当前代理的权重,尽量避免一个只读实例承载过多读请求。
- 对于成功开启读写分离功能的实例,您可以设置其主实例和只读实例的权重。具体操作请参见设置延时阈值和路由模式。
负载均衡实例选择
仅“负载均衡”模式需设置。选择需要参与负载均衡的只读实例。
选择负载均衡时,数据库代理会按照后端数据库节点的活跃连接数情况,来进行读请求的转发,将读请求转发到活跃连接数少的数据库节点上。
对于成功开启读写分离功能的实例,您可以设置负载均衡实例。具体操作请参见设置延时阈值和路由模式。
- 确认数据库代理信息。
- 如果需要重新选择,单击“上一步”,修改基本信息。
- 信息确认无误,单击“提交”,下发创建数据库代理请求。
- 创建完成后,可以在“数据库代理”页面查看并管理代理服务信息。
在“概览”页面查看读写分离地址,通过读写分离地址连接数据库,可实现读写分离功能。
该读写分离地址与实例的内网IP地址处于同一VPC和子网,且与实例的内网IP地址并存,互不影响。
图8 查看读写分离地址
中国-香港、亚太-曼谷、亚太-新加坡区域默认开通单个数据库代理,即1个RDS for MySQL实例下只能购买1个数据库代理实例。适用于单个业务场景,灵活性低,无法实现业务隔离,仅有单一访问数据库的入口。
- 更多功能介绍,请参见RDS for MySQL数据库代理简介。
- 更多区域限制,请参见数据库代理约束与限制。
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在实例列表中,单击目标实例的名称,进入实例的“概览”页面。
- 在左侧导航栏中,单击“数据库代理”。
您还可以在实例的“概览”页面,单击“读写分离地址”后的“申请”,跳转到“数据库代理”页面。
- 在“数据库代理”页面单击“创建数据库代理”。
- 在开启数据库代理页面,设置以下参数,单击“下一步”。
图1 选择权重负载图2 选择负载均衡
表1 基本信息 参数
描述
计费模式
路由模式
- 权重负载:开启读写分离功能后,用户自行设置主备实例和只读实例的权重。
- 负载均衡:开启了Proxy负载均衡,可以选择该模式。支持基于负载的自动调度策略,读请求将在多个只读节点中按照活跃连接数自动调度,来保证多个只读节点间的负载均衡。
开启数据库代理后,可以修改路由模式,具体操作请参见设置延时阈值和路由模式。
主库接受读
“负载均衡”模式需设置。
- 选择“是”,查询SQL可以发送到主节点和只读节点。
- 选择“否”,查询SQL将仅发送到只读节点,来降低主节点的负载,确保主节点稳定。
性能规格
选择代理实例的规格。创建后可以根据业务需求变更规格,具体请参见变更数据库代理的规格。
如需查看性能指标,请参见表2。
子网
选择代理实例所在的子网。
代理节点数量
支持2~8个节点。创建后可以修改,具体请参见调整代理节点数量。
建议您根据需要连接的只读实例个数设置代理节点数,1个只读实例配1个代理节点。
- 读写分离具备连接保持、读写分离能力。开启读写分离后,将新增1个读写分离连接地址,请将应用连接切换到新地址。
- 读写分离地址:通过读写分离地址连接数据库,可实现读写分离功能。
- 延时阈值:对于成功开启读写分离功能的实例,您可以设置其延时阈值。具体操作请参见设置延迟阈值。
- 负载均衡实例选择:对于成功开启读写分离功能的实例,您可以选择负载均衡实例。
- 确认数据库代理信息。
- 如果需要重新选择,单击“上一步”,修改基本信息。
- 信息确认无误,单击“提交”,下发创建数据库代理请求。
- 创建完成后,可以在“数据库代理”页面查看并管理代理服务信息。
在“概览”页面查看读写分离地址,通过读写分离地址连接数据库,可实现读写分离功能。
该读写分离地址与实例的内网IP地址处于同一VPC和子网,且与实例的内网IP地址并存,互不影响。
图3 查看读写分离地址
华北-北京四、华东-上海一、华南-广州、西南-贵阳一区域默认开通多个数据库代理,即一个RDS for MySQL实例下可以购买多个数据库代理实例,最多支持购买4个代理实例。适用于复杂的多业务场景,多代理可以使用多个入口,不同的业务通过不同的入口访问数据库,实现业务隔离,提高资源利用效率。
- 更多功能介绍,请参见RDS for MySQL数据库代理简介。
- 更多区域限制,请参见数据库代理约束与限制。
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在实例列表中,单击目标实例的名称,进入实例的“概览”页面。
- 在左侧导航栏中,单击“数据库代理”。
您还可以在实例的“概览”页面,单击“读写分离地址”后的“申请”,跳转到“数据库代理”页面。
图4 开启读写分离入口 - 在“数据库代理”页面单击“创建数据库代理”。
图5 创建数据库代理
- 在“开启数据库代理服务”页面,填选如下信息后,单击“下一步”。
图6 选择权重负载图7 选择负载均衡
表2 基本信息 参数
描述
计费模式
代理名称
实例名称长度最小为4字符,最大为64个字符,如果名称包含中文,则不超过64字节(注意:一个中文字符占用3个字节),必须以字母或中文开头,区分大小写,可以包含字母、数字、中划线、下划线或中文,不能包含其他特殊字符。
读写属性
- 读写:读写分离。
- 只读:不连接主实例,无法接收写请求。
路由模式
- 权重负载:开启读写分离功能后,用户自行设置主备实例和只读实例的权重。
- 负载均衡:支持基于负载的自动调度策略,读请求将在多个只读节点中按照活跃连接数自动调度,来保证多个只读节点间的负载均衡。
开启数据库代理后,可以修改路由模式,具体操作请参见设置延时阈值和路由模式。
主库接受读
仅“负载均衡”模式需设置。
- 选择“是”,读请求可以发送到主节点和只读节点,这在一定程度上,会增加主节点的负载,请您根据业务需求配置该开关。
- 选择“否”,读请求仅发送到只读节点,来降低主节点的负载,确保主节点稳定。
性能规格
选择代理实例的规格。创建后可以变更规格,具体请参见变更数据库代理的规格。
如需查看性能指标,请参见表2。
代理节点数量
支持2~8个节点。创建后可以修改,具体请参见调整代理节点数量。
建议您根据需要连接的只读实例个数设置代理节点数,1个只读实例配1个代理节点。
权重设置
仅“权重负载”模式需设置。选择需要分配权重的主实例和只读实例。
读权重分配:
- 读权重越高,处理的读请求越多,假设已选2个实例,权重分别设置为100,200,则当前proxy全部读请求自动按照1:2的比例发往已选实例(未选择的实例权重会设置为0)。
- 一个只读实例可以关联多个代理,建议您根据当前主实例下只读实例的已有代理权重和流量拓扑设置当前代理的权重,尽量避免一个只读实例承载过多读请求。
- 对于成功开启读写分离功能的实例,您可以设置其主实例和只读实例的权重。具体操作请参见设置延时阈值和路由模式。
负载均衡实例选择
仅“负载均衡”模式需设置。选择需要参与负载均衡的只读实例。
选择负载均衡时,数据库代理会按照后端数据库节点的活跃连接数情况,来进行读请求的转发,将读请求转发到活跃连接数少的数据库节点上。
对于成功开启读写分离功能的实例,您可以设置负载均衡实例。具体操作请参见设置延时阈值和路由模式。
- 确认数据库代理信息。
- 如果需要重新选择,单击“上一步”,修改基本信息。
- 信息确认无误,单击“提交”,下发创建数据库代理请求。
- 创建完成后,可以在“数据库代理”页面查看并管理代理服务信息。
在“概览”页面查看读写分离地址,通过读写分离地址连接数据库,可实现读写分离功能。
该读写分离地址与实例的内网IP地址处于同一VPC和子网,且与实例的内网IP地址并存,互不影响。
图8 查看读写分离地址
步骤2:进行用户认证
在使用数据库代理连接RDS for MySQL实例前,需要确保当前数据库账号具有访问数据库代理地址的权限,否则将无法通过数据库代理连接到RDS for MySQL实例。
您可以通过以下步骤来检查权限并授权该账号访问数据库代理地址的权限。
- 连接RDS for MySQL实例。
- 实例连接成功后,执行下列SQL语句,查看当前数据库账号的host是否包含数据库代理地址。
SELECT user,host FROM mysql.user;
- 如果查询的host不包含数据库代理所在网段,则需要赋予远程访问权限。
例如:使用root用户想要从192.168.0网段连接到RDS for MySQL实例,您可以在DAS用户管理界面将当前账号的主机设置为192.168.%。具体操作请参见编辑用户信息。
图9 设置主机IP
步骤3:检查安全组规则
确保安全组入方向规则允许数据库代理地址访问,默认端口号为3306。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页面。
- 在左侧导航栏,单击“连接管理”,在“安全组规则”模块,单击安全组名称,查看安全组规则。
- 在入方向页签下,默认允许3306端口访问。
图10 放通3306端口如果没有该条规则,单击“添加入方向规则”或者“一键添加”,设置安全组规则。图11 添加入方向规则
步骤4:使用代理地址连接RDS for MySQL实例
- 在RDS for MySQL控制台查看代理地址和端口。
图12 查看代理地址和端口
- 登录弹性云服务器。
详细内容请参考《弹性云服务器用户指南》。
- 执行如下命令,通过代理地址连接RDS for MySQL实例。
mysql -h <hostIP> -P <port> -u <userName> -p <password>
表3 参数说明 参数
说明
<hostIP>
1中获取到的代理地址。
<port>
1中获取到的数据库端口。
<userName>
用户名,即数据库管理员账号,默认为root。
<password>
数据库管理员账号对应的密码。
说明:
当您使用MySQL8.0客户端访问数据库代理时,可能会报错auth user failed。
在连接数据库时添加 --default-auth=mysql_native_password。
步骤5:验证读写分离效果
您可以在每次执行完对应的读操作后,通过show last route命令来查看本次读操作的路由结果。
以下步骤以一条读操作为例,介绍查看读请求的路由结果。
- 连接到RDS for MySQL实例后,执行读操作。
例如:select 1;
- 执行如下命令,查看1中读操作的路由结果。
show last route
图13 结果查询说明:
请勿将show last route用于业务代码或包在Multi-Statements中执行。