tencent cloud

TDSQL-C MySQL 版

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
产品架构
产品规格
实例类型
产品功能列表
数据库版本
地域和可用区
常用概念
使用限制
使用规范建议
自研内核
内核概述
内核版本更新动态
内核优化版本
功能类特性
性能类特性
安全类特性
稳定性特性
分析引擎特性
内核问题检查与修复
购买指南
计费概述
产品价格
创建集群
变配说明
续费说明
欠费说明
退费说明
按量转包年包月
按量转 Serverless
增值服务计费说明
查看费用账单
快速入门
数据库审计
简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
查看审计任务
授权子用户使用数据库审计
Serverless 服务
Serverless 简介
创建和管理 Serverless 版集群
弹性管理工具
Serverless 资源包
多可用区部署
配置变更
常见问题
Serverless 成本预估器
操作指南
操作总览
控制台切换集群页面视图
数据库连接
实例管理
配置变更
实例形态管理
集群管理
只读实例管理
数据库代理
账号管理
数据库管理
数据库管理工具(DMC)
参数配置
多可用区部署
全球数据库
备份与恢复
操作日志
迁移数据
并行查询
列存索引 CSI
分析引擎
数据库安全和加密
监控与告警
SQL 基本操作
使用 SCF 连接 TDSQL-C MySQL 版
标签
实践教程
TDSQL-C MySQL 版数据库审计等保实践
通过 DTS 升级数据库版本 MySQL5.7至8.0
TDSQL-C MySQL 版使用规范
新版本控制台
数据库代理多连接地址实现多 RO 组
数据库代理的优势
如何选择存储空间计费模式
通过 DTS 构建异地灾备
为集群创建 VPC
如何进行数据恢复
如何解决 CPU 使用率高的问题
如何授权子用户查看监控
白皮书
安全白皮书
性能白皮书
故障处理
连接相关
性能相关
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
常见问题
基础概念
购买与计费
兼容与格式
连接与网络
功能特性
控制台操作
数据库表
性能与日志
数据库审计
TDSQL-C MySQL 版和云数据库 MySQL 有什么区别
相关协议
服务等级协议
服务条款
TDSQL-C 政策
隐私政策
数据处理和安全协议
通用参考
标准与认证
词汇表
联系我们

自动读写分离介绍

PDF
聚焦模式
字号
最后更新时间: 2025-06-09 10:10:04
本文主要介绍 TDSQL-C MySQL 版数据库代理服务的自动读写分离、功能优势、读写分离路由规则。

自动读写分离

目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,可以创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求。但此类解决方案需要业务侧支持读写分离改造,其代码的健壮性决定了业务读写分离的质量,对用户的技术要求较高,而且灵活性和可扩展性较差。 故创建只读实例后,可以通过开通数据库代理,配置访问地址策略,然后在应用程序中配置数据库代理地址,使写请求自动转发到主实例,读请求自动转发到各个只读实例。数据库代理除了具备自动读写分离功能,也能为其他业务痛点提供更好的解决方案,具体如下:
负载无法预测或波动不规律/负载“洪峰”现象明显的场景 在互联网业务场景中,业务负载和访问压力往往是不可预估、不平稳的,会出现频繁的波动和“洪峰”。如果业务侧大量使用短连接访问数据库,那么在这些场景中很容易产生大量的新建连接,即数据库与应用程序间的连接数,容易随着业务访问压力的频繁变动而波动。 数据库代理的连接管理,使用户可以通过有效重用数据库连接,来适当扩展处理不可预测工作负载的应用程序连接问题。首先,使多个应用程序连接可以共享数据库连接,以有效利用数据库资源;其次,允许用户通过调节打开的数据库连接数,来保持数据库性能;最后,可删除无法使用的应用程序请求,以保留应用程序的整体性能和可用性。
应用程序与数据库频繁建立和断开连接的场景 基于无服务器、PHP 或 Ruby on Rails 等技术构建的应用程序,可能会频繁打开和关闭数据库连接来满足应用程序请求。 数据库代理可以帮助用户维护数据库连接池,以避免对数据库计算和用于建立新连接的内存造成不必要的压力。
数据库访问连接长时间处于空闲状态并未释放的场景 SaaS 或电子商务行业中的传统应用程序,可能会使数据库连接保持空闲状态,以最大程度减少用户重新参与的响应时间。用户可以使用数据库代理来保留空闲连接,仅根据需要建立数据库连接,而不是为支持大多数空闲连接过度调大阈值或升级为更高配的数据库。
提高数据库 PaaS 服务故障转移场景下的平滑和稳定 使用数据库代理,用户可以构建可透明容忍数据库故障转移(主动/被动)的应用程序,而无需编写复杂的故障处理代码。数据库代理自动将读流量路由到新的数据库实例,同时保留应用程序连接。


功能优势

自助读写分离,统一访问地址。
原生链路支持,提升性能,减少维护成本。
可设权重和阈值,可供用户灵活选择。
具备故障转移能力,即使数据库代理故障请求也能正常访问主库。
读写实例发生切换、变配、只读实例增减等情况,数据库代理可动态热加载配置,不会出现网络中断或重启。

功能说明

TDSQL-C MySQL 版数据库代理服务具备自动读写分离能力,并支持为读写实例和多个只读实例做读权重的分配,需注意,此处的权重是面向读请求(非事务)权重的分配策略。

读写分离路由规则

发送到主实例

CREATE、ALTER、DROP、RENAME 等 DDL 语句。
INSERT、UPDATE、DELETE 等 DML 语句。
SELECT FOR UPDATE 语句。
临时表相关语句。
部分系统函数调用(如 last_insert_id())以及所有自定义函数调用。
LOCK 相关语句。
开启事务后的语句(包括 set autocommit=0)。
存储过程。
用“;”连接的多语句。
KILL(SQL 语句中的 KILL,非命令 KILL)。
所有对用户变量的查询和更改。

发送到只读实例

事务外的读(SELECT)语句。
注意:
只读分析引擎不支持读写分离。

发送到所有实例

show processlist 语句。
所有系统变量的更改(SET 命令)。
USE 命令。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈