- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 内核介绍
- 用户指南
- 最佳实践
- 性能白皮书
-
API参考
- 使用前必读
- API概览
- 如何调用API
-
API(推荐)
- 查询数据库引擎的版本
- 查询数据库规格
-
实例管理
- 创建数据库实例
- 重启数据库实例
- 删除/退订数据库实例
- 创建只读节点
- 删除/退订只读节点
- 包年/包月实例存储扩容
- 修改实例名称
- 重置数据库密码
- 变更实例规格
- 查询专属资源池列表
- 查询专属资源信息详情
- 设置实例秒级监控
- 查询实例秒级监控
- 节点重启
- 内核版本升级
- 开关SSL
- 绑定弹性公网IP
- 解绑弹性公网IP
- 手动主备倒换
- 设置可维护时间段
- 修改安全组
- 修改内网地址
- 修改实例端口
- 修改实例备注
- 申请内网域名
- 修改内网域名
- 查询内核版本信息
- 设置自动变配
- 查询自动变配
- 资源预校验
- 查询实例列表
- 查询实例详情信息
- 批量查询实例详情
- 设置回收站策略
- 查询回收站策略
- 查询回收站实例信息
- 批量修改节点名称
- 查询自动变配历史记录
- 设置Serverless配置策略
- 修改节点故障倒换优先级
- 查询弹性公网IP
- 备份管理
- 参数模板管理
- 配额管理
- 数据库代理
- 日志管理
- 标签管理
- 数据库用户管理
- 数据库管理
- 流量管理
- 任务中心
- 智能诊断
-
HTAP-标准版
- 恢复StarRocks数据同步
- 暂停StarRocks数据同步
- HTAP数据同步表配置校验
- 创建StarRocks实例
- 查询StarRocks实例
- 删除StarRocks实例
- 重启StarRocks实例
- 重启StarRocks节点
- StarRocks资源检查
- HTAP引擎资源查询
- 获取HTAP实例存储类型
- HTAP查询规格信息
- 查询HTAP实例列表
- 创建StarRocks数据同步
- 删除StarRocks数据同步
- 查询StarRocks数据同步状态信息
- HTAP数据同步库配置校验
- 查询StarRocks数据同步配置信息
- 查询StarRocks数据同步的库参数配置
- 查询StarRocks数据库
- 查询数据库账号
- 创建数据库账号
- 删除数据库账户
- 修改数据库账号密码
- 修改数据库账号权限
- StarRocks实例规格变更
- 查询参数
- 修改参数
- StarRocks实例开启行列分流
- 参数对比
- StarRocks内核版本升级
- 多租特性
- API(即将下线)
- 权限策略和授权项
- 附录
- SDK参考
- 常见问题
-
故障排除
- 备份恢复
- 连接类
-
SQL类
- 建表时timestamp字段默认值无效
- 索引长度限制导致修改varchar长度失败
- delete大表数据后,再查询同一张表时出现慢SQL
- 更新emoji表情数据报错Error 1366
- 存储过程和相关表字符集不一致导致执行缓慢
- 报错ERROR [1412]的解决方法
- 存在外键的表无法删除
- GROUP_CONCAT结果不符合预期
- 创建二级索引报错Too many keys specified
- distinct与group by优化
- 为什么有时候用浮点数做等值比较查不到数据
- 开通数据库代理后,还是有大量select请求分发到主节点
- 表空间膨胀问题
- MySQL创建用户提示服务器错误(ERROR 1396)
- 执行alter table xxx discard/import tablespace报错
- 数据库报错Native error 1461的解决方案
- 创建表失败报错Row size too large的解决方案
- Order by limit分页出现数据重复问题
- 执行select * from sys.innodb_lock_waits报错
- 参数类
- 性能资源类
-
基本使用类
- 查看TaurusDB的存储容量
- 修改库名和修改表名
- 字符集和字符序的默认选择方式
- 自增字段值跳变的原因
- 表的自增AUTO_INCREMENT初值与步长
- 修改表的自增AUTO_INCREMENT值
- 自增主键达到上限,无法插入数据
- 自增字段取值
- 自增属性AUTO_INCREMENT为何未在表结构中显示
- 空用户的危害
- 慢日志显示SQL语句扫描行数为0
- 错误日志页面显示handle_sync_msg_from_slave my_net_read error:-1
- 执行SQL语句报错:ERROR 1290 (HY000): The MySQL server is running with the --sql-replica-on option so it cannot execute this statement的原因及解决方案
- 通用参考
链接复制成功!
使用TaurusDB数据库代理实现读写分离
创建TaurusDB实例后,您可以开通数据库代理,通过代理地址实现读写请求的自动转发。写请求自动访问主节点,读请求按照数据库代理的路由模式分发到各个节点,降低主节点的负载。
本章节介绍使用数据库代理实现读写分离的过程,主要流程如下:
操作步骤
步骤1:开通数据库代理
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 在页面左上角单击
,选择“数据库 > 云数据库 TaurusDB”。
- 在实例管理页面,选择目标TaurusDB实例,单击实例名称,进入实例概览页面。
- 在左侧导航栏中,单击“数据库代理”,进入数据库代理页面。
- 单击“新增代理”。
- 在新增代理页面,设置以下参数,单击“立即购买”。
图1 新增代理
表1 数据库代理参数 参数名称
说明
代理实例名称
长度在4个到64个字符之间,必须以字母开头,区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。
代理模式
TaurusDB数据库代理支持读写和只读两种代理模式,可根据业务需要选择合适的代理模式。
- 读写模式:所有写请求只发往主节点,所有读请求按照读权重配比或者活跃连接数情况分发到已选节点。节点的读权重值默认为100。
- 只读模式:不接收写请求。所有读请求按照读权重配比或者活跃连接数情况分发到已选只读节点,不会转发到主节点,即使主节点被选为服务节点。
说明:
- 只读模式仅支持读请求业务,写业务请求会有异常提示。
- 在只读模式下,不支持DDL、DML操作和临时表操作。
一致性级别
TaurusDB实例的内核版本为2.0.28.1及以上时支持设置一致性级别。内核版本的查询方法请参见如何查看云数据库 TaurusDB实例的版本号。
数据库代理支持如下一致性级别:
- 最终一致性
开启数据库代理后,同一会话内,连续多次SELECT请求会根据权重配比,路由到不同的数据库节点,由于主节点与读节点之前存在复制时延,并且各个读节点的复制时延大小不一定完全相同,可能会导致每次SELECT请求得到的结果存在差异,因此默认情况下,数据库代理只能保证数据的最终一致。
如果需要减轻主节点压力,让尽量多的读请求路由到只读节点,您可以选择最终一致性。
- 会话一致性
由于最终一致性可能会导致多次SELECT请求的结果存在差异,数据库代理进一步提供了会话级别的数据一致性,保证了在同一会话内,每次SELECT请求都可以获取到上一次写入操作后,数据库的最新数据。
开启会话一致性需要数据库代理的内核版本为2.7.4.0及以上。
路由模式
数据库代理支持如下路由模式:
- 权重负载:根据您设置的读权重比例分发读请求。
- 负载均衡:根据数据库节点的活跃连接数情况进行读请求分发,将读请求分发到活跃连接数较少的节点上。
更多关于路由模式的内容请参见修改TaurusDB代理的路由模式。
代理实例规格
根据实际需要选择代理实例规格。
- 鲲鹏通用计算增强型:2 vCPUs | 4 GB、4 vCPUs | 8GB、8 vCPUs | 16 GB
- 通用增强型:2 vCPUs | 4 GB、4 vCPUs | 8 GB、8 vCPUs | 16 GB
子网
该功能为白名单功能,如需使用,请在管理控制台右上角,选择“工单 > 新建工单”,提交申请。
开通数据库代理时可指定代理实例子网。如果TaurusDB实例所在子网为扩展网段,则不支持跨子网开启数据库代理,需要与TaurusDB实例在同一子网。
代理实例节点数量
默认为2个节点。最小支持2个节点,最大支持16个节点。
推荐代理实例节点数量 =(主节点CPU核数+所有只读节点CPU核数总和)/(4*代理实例CPU核数),计算结果向上取整。
新节点自动加入
开启新节点自动加入开关后,新增的只读节点会自动添加到该数据库代理实例中。
新节点权重
当路由模式为权重负载时,需要设置新节点的读权重。节点的读权重默认为100,读权重越高,处理的读请求越多。
选择数据库节点
勾选需要加入到数据库代理中处理读请求的节点。
- 查看代理实例及关联的数据库节点。
数据库代理开通后,在数据库代理页面可查看到已创建成功的代理实例。
图2 查看创建成功的代理实例单击左侧导航栏中“实例概览”,进入TaurusDB实例概览页面。单击页面右上方
,选择“查看实例拓扑图”,在实例拓扑图中可查看对应代理实例关联的数据库节点。将鼠标悬浮在节点信息处,可查看该节点的详细信息。
图3 查看代理实例关联节点信息
步骤2:进行用户认证
在使用数据库代理连接TaurusDB实例前,需要确保当前数据库账号具有访问数据库代理地址的权限,否则将无法通过数据库代理连接到TaurusDB实例。
您可以通过以下步骤来检查权限并授权该账号访问数据库代理地址的权限。
- 连接TaurusDB实例。
具体操作请参见连接实例。
- 实例连接成功后,执行下列SQL语句,查看当前数据库账号的host是否包含数据库代理地址。
SELECT user,host FROM mysql.user;
代理地址获取方式:
单击目标TaurusDB实例,进入基本信息页面。在左侧导航栏单击“数据库代理”,在代理实例列表中查看数据库代理地址。图4 查看代理地址 - 如果查询的host不包含数据库代理所在网段,则需要赋予远程访问权限。
例如:使用root用户想要从192.168.0网段连接到TaurusDB实例,您可以在DAS用户管理界面将当前账号的主机设置为192.168.%。具体操作请参见编辑用户信息。
图5 设置主机IP
步骤3:检查安全组规则
确保入方向规则和出方向规则允许数据库代理地址访问,默认端口号为3306。
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 在页面左上角单击
,选择“数据库 > 云数据库 TaurusDB”。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例概览页面。
- 在“网络信息”模块的“内网安全组”处,单击安全组名称,进入安全组页面。
- 在入方向规则页签下,默认允许3306端口访问。
图6 放通3306端口
如果没有该条规则,单击“快速添加规则”,弹框页面中勾选“MySQL(3306)”,单击“确定”。
图7 快速添加3306端口
步骤4:使用代理地址连接TaurusDB实例
- 在TaurusDB控制台查看代理地址和端口。
单击目标TaurusDB实例,进入实例概览页面。在左侧导航栏单击“数据库代理”,在代理实例列表中查看代理地址和端口号。
图8 查看代理地址和端口 - 登录弹性云服务器。
详细内容请参考《弹性云服务器用户指南》。
- 执行如下命令,通过代理地址连接TaurusDB实例。
mysql -h <hostIP> -P <port> -u <userName> -p <password>
步骤5:验证读写分离效果
您可以在每次执行完对应的读操作后,通过show last route命令来查看本次读操作的路由结果。
以下步骤以一条读操作为例,介绍查看读请求的路由结果。
- 连接到TaurusDB实例后,执行读操作。
例如:select 1;
- 执行如下命令,查看1中读操作的路由结果。
show last route
图9 结果查询说明:
请勿将show last route用于业务代码或包在Multi-Statements中执行。