tencent cloud

云数据库 MySQL

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
数据库架构
隔离策略
经济型实例
产品功能列表
数据库实例
高可用性(多可用区)
地域和可用区
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
安全类特性
稳定类特性
TXRocks 引擎
内核问题检查与修复
购买指南
计费概述
选型指南
购买方式
续费说明
欠费说明
退费说明
按量转包年包月
调整实例费用说明
备份空间收费说明
数据库审计计费说明
数据库代理商业化计费和活动说明
数据库代理计费周期说明
查看费用账单
快速入门
入门概述
创建 MySQL 实例
连接 MySQL 实例
SQL 洞察(原数据库审计)
数据库审计简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
SQL 审计规则(旧版)
查看审计任务
授权子用户使用数据库审计
MySQL 云盘版
MySQL 云盘版概述
创建 MySQL 云盘版实例
维护管理实例
查看实例监控
调整实例配置
其他功能相关操作
迁移或升级至 MySQL 云盘版
操作指南
使用限制
操作总览
维护管理实例
升级实例
CPU 弹性扩容
只读/灾备实例
数据库代理
数据库管理(DMC)
账号管理
参数配置
备份与回档
数据迁移
网络与安全
监控与告警
日志中心
只读分析引擎
标签
实践教程
腾讯云 MySQL 帮助实现 MySQL 5.7升级至 MySQL 8.0
MySQL 5.6升级到 MySQL 5.7方法和说明
云数据库 MySQL 数据库审计等保实践
构建全场景高可用架构
云数据库 MySQL 使用规范
应用程序配置自动重连功能
MySQL 主实例参数修改的影响
MyISAM 自动转换为 InnoDB 引擎限制
为云数据库 MySQL 创建 VPC
使用云数据库 MySQL 提高业务负载能力
两地三中心灾备建设
读写分离扩展云数据库 MySQL 性能
使用 DTS 将 InnoDB 数据迁移至 RocksDB
构建 LAMP 堆栈 Web 应用程序
构建 Drupal 网站
通过 Python 语言使用 MySQL API
主备实例查询数据不一致
白皮书
性能白皮书
安全白皮书
故障处理
连接相关
性能相关
实例数据同步延迟
设置大小写不敏感失败
通过命令获取 slow_query_log_file 失败
API 文档
History
Introduction
API Category
Instance APIs
调用方式
Data Import APIs
Database Proxy APIs
数据库审计相关接口
Security APIs
Task APIs
Backup APIs
Account APIs
Rollback APIs
Parameter APIs
Database APIs
Monitoring APIs
Log-related API
Data Types
Error Codes
常见问题
选型相关
计费相关
备份相关
回档相关
连接登录
参数修改
升级相关
账号权限
性能内存
运维相关
数据迁移
功能特性
控制台相关
日志相关
事件相关
数据库审计
实例切换影响
API 2.0 切换 3.0 指引
相关协议
服务等级协议
服务条款
通用参考
标准与认证
联系我们
词汇表

自动读写分离介绍

PDF
聚焦模式
字号
最后更新时间: 2024-12-31 16:01:22
本文主要介绍云数据库 MySQL 数据库代理服务的自动读写分离、功能优势、读写分离路由规则。

自动读写分离

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


功能优势

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

读写分离路由规则

发送到主实例

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 命令。

帮助和支持

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

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

文档反馈