本文介绍云数据库 MySQL 数据库代理的防闪断能力。
背景信息
数据库实例在运维过程中,总会根据需要,进行相应的调整,如变更配置、计划内 HA 切换、计划内重启等,这些行为可能会中断用户会话,导致连接闪断、新建连接短暂失败等问题。云数据库 MySQL 数据库代理提供防闪断能力,在数据库实例进行有损切换、转移时,可以提供无损的应用连续性,避免连接和事务的中断。
实现原理
防闪断能力,使用了 MySQL 的 session track 功能,当感知到计划内的有损行为时,数据库代理会与切换前的主节点断开连接,将客户端到数据库代理上的连接,恢复至切换后主节点的连接上,通过 session track 能力将会话相关的系统变量、用户变量、字符集编码信息转移至新的后端连接上,实现对应用程序端无损切换。
注意事项
当语句中使用了临时表(因临时表和每个会话相关联),会无法恢复连接,直接报错。
数据库代理具备防闪断能力,需要更新数据库代理内核版本至1.3.1或以上。
防闪断能力会自动将超过3秒的事务中止,以排干事务。
当连接切换时,如果数据库代理正在从数据库接收结果报文,但是主备切换导致报文仅传输了部分数据,此时,防闪断无法继续保持连接。
性能测试
以下为您介绍云数据库 MySQL 数据库代理防闪断能力的性能测试。
测试环境
地域/可用区:北京 - 北京七区。
客户端:S5.8XLARGE64(标准型S5,32核64GB)。
客户端操作系统:CentOS 8.2 64位。
网络:云服务器 CVM 和云数据库 MySQL 实例网络类型均为私有网络(VPC)且在同一子网。
测试的云数据库 MySQL 实例信息如下。
存储类型:本地 SSD 盘。
实例类型:通用型。
参数模板:高性能模板。
测试工具
本次性能测试的工具为 sysbench。sysbench 是一个跨平台且支持多线程的模块化基准测试工具,用于评估系统在运行高负载的数据库时相关核心参数的性能表现。可绕过复杂的数据库基准设置,甚至在没有安装数据库的前提下,快速了解数据库系统的性能。
测试方法
在不同运维操作场景中,测试高可用 MySQL 实例的连接防闪断的连接保活率(即执行运维操作前后连接未闪断的比例)。
测试结果
在以下运维操作场景中,高可用 MySQL 实例通过数据库代理的防闪断能力保持了100%的连接保活率。
本页内容是否解决了您的问题?