华为云用户手册

  • 步骤3:开启写转发 正常情况下,RegionlessDB集群创建完成后,主实例接收并处理读写请求,从实例只接收读请求。当开启写转发功能后,从实例接收到写请求会自动由从实例转发到主实例进行处理。主实例完成写入后,将数据同步到其他所有从实例。使用写转发可以简化写数据流程,直接通过从实例IP接入数据库服务执行读写操作,并且在满足一致性的同时,不影响就近读能力。 写转发只有在从实例的事务隔离级别为RR的场景下才支持。 当前版本从实例进行写转发时,暂不支持显示WARNING和RECORD信息。 当前版本从实例进行写转发时,暂不支持中断执行中的SQL请求。 写转发会创建用户“_@gdb_WriteForward@_”,请不要修改或者删除该用户,否则写转发功能无法正常运行。 支持的写转发命令如下: SQLCOM_UPDATE SQLCOM_INSERT SQLCOM_DELETE SQLCOM_INSERT_SELECT SQLCOM_REPLACE SQLCOM_REPLACE_SELECT SQLCOM_DELETE_MULTI SQLCOM_UPDATE_MULTI SQLCOM_ROLLBACK 如果执行了不支持的写转发命令,会出现如下报错信息: ERROR xxx (yyy): This version of MySQL doesn't yet support 'operation with write forwarding'. 其中“operation”为具体不支持的操作类型。 不支持的场景: SELECT FOR UPDATE语句。 EXPLAIN写转发语句。 写转发的语句包含SET VARIABLE。 在写转发开启的场景下,不支持SAVEPOINT。 XA事务中不支持写转发。 当前不支持START TRANSACTION READ WRITE,可以直接使用START TRANSACTION进行测试写转发。 存储过程中不支持写转发。 写转发开启时,不支持创建临时表,如果需要创建临时表,可以暂时关闭写转发进行创建。 针对会隐式提交的命令,在不支持写转发的情况下,也会自动提交当前节点和主节点对应的事务。 针对全局一致性级别,每个事务第一次访问数据之前,需要使用会话池中的连接,从主节点获取数据点位(LSN),如果没有可以使用的会话,可能会导致读取数据的命令失败。 如果用户使用写转发的会话出现连接错误,并且用户处于多语句事务中,服务端会主动关闭与客户端和主节点的连接,保证客户端能够感知到对应的错误。 主从实例的版本需要保持为最新版本。 由于写转发是转发到主节点上执行,如果只读节点有相同数据库下的同名临时表,最终以主节点的数据为准。 从实例如果参与了区域切换或者故障转移,写转发相关参数(“rds_open_write_forwarding”和“rds_write_forward_read_consistency”)会恢复为默认值。 在“RegionlessDB”页面,找到目标RegionlessDB集群。 单击操作列“设置写转发”,创建写转发账号。 图5 创建写转发账号 系统会为您自动创建一个内部账号(_@gdb_WriteForward@_)用于支持写转发,便于写请求转发到主实例进行处理。设置写转发账号后请不要自行修改或删除内部账号,否则会影响写转发功能。 在“设置写转发”弹框中,确认信息并单击“确定”。 图6 设置写转发 在“实例管理”页面,选择指定的RegionlessDB从实例,单击实例名称。 在左侧导航栏,选择“参数修改”。 在参数页面右上角搜索“rds_open_write_forwarding”,将该值修改为“ON”。 图7 开启写转发 单击左上角“保存”,开启写转发功能。 在参数页面右上角搜索“rds_write_forward_read_consistency”,修改写转发读一致性级别。 图8 修改写转发读一致性级别 可通过修改参数设置写转发的读一致性范围,具体选项说明详见表3。 表3 参数说明 参数名称 说明 NONE 不启用写转发。 EVENTUAL 在主实例真正执行写操作之前,写入数据是不可见的。查询不会等待RegionLess内主从实例数据同步完成,所以在该级别下,可能读取到未更新的过期数据。 SESSION 通过开启写转发的从实例执行的所有查询,都会看到在本会话中进行的所有数据写入的结果。查询将等待复制中的写转发执行的结果。 GLOBAL 会话可以看到RegionlessDB中所有会话和实例上全部已提交的更改,查询可能会等待一定时间,该等待时间和复制延迟相关。 如果业务有读一致性要求,建议一致性级别配置为SESSION。谨慎设置成GLOBAL,GLOBAL会导致所有的读请求花费较大的额外代价,例如使用任一客户端连接TaurusDB,且使用GLOBAL级别时,导致进入MySQL命令行的时间变长。 事务中无法修改写转发读一致性级别为SESSION。 开启写转发参数前,需要确保从实例的事务隔离级别为RR。 写转发开启的情况下,不允许修改当前会话的事务隔离级别。 事务中不允许修改读一致性级别。 单击左上角“保存”。
  • 活动告警 根据设置的告警规则,可查看当前账号下所有TaurusDB实例的活动告警记录,包含“告警中(指标)”,“已触发(事件)”。 在活动告警页面右上方,单击“设置告警规则”,跳转到 云监控服务 页面。 系统默认内置一条告警规则,支持修改、停用、删除等操作,详见修改告警规则。 单击“创建告警规则”,为数据库实例新建指标监控或事件监控告警规则。更多操作,详情参见创建告警规则和通知。 在活动告警页面右上方,选择时间范围,查看告警详情。 支持查看告警的时间窗为:近1小时、近6小时、近12小时、近1天、近1周、近1月。 告警级别统计:查看告警总触发数和不同级别下各自触发数。告警级别包括:紧急、重要、次要、提示。 告警总数TOP5实例:查看告警总数TOP5的实例,鼠标悬停可查看当前实例各级别的告警触发数。 查看紧急告警详情:关于紧急告警的详细说明请参见表3。 表3 紧急告警说明 类别 说明 实例名称 触发告警的实例名称。刷新页面后,实时展示最新触发的告警详情。 状态 统计当前区域下所有实例的活动告警记录,包含“告警中(指标)”,“已触发(事件)”。 告警中:监控指标数值达到告警配置阈值,资源正在告警中。 已触发:监控的资源触发了告警策略中配置的事件。 告警类型 告警规则适用的告警类型。 告警中(指标) 已触发(事件) 告警策略 触发告警规则的告警策略。 当告警类型选择指标监控时,是否触发告警取决于连续周期的数据是否达到阈值。例如:CPU使用率监控周期为5分钟,连续三个周期平均值≥80%,则触发告警。 CPU使用率高的处理建议,请参见TaurusDB CPU使用率高的解决方法。 当告警类型选择事件监控时,触发告警具体的事件为一个瞬间的事件。例如:创建实例业务失败,则触发告警。 支持的事件监控以及监控异常的处理建议,请参见事件监控支持的事件说明。 告警规则 该条告警所在告警规则的名称/ID。 最新更新时间 该条告警的最新触发时间。 操作 单击“告警指标”,在右侧弹窗中,查看所选时间段内的指标监控视图。
  • 智能诊断 基于运行数据结合智能算法对实例进行智能诊断,并对异常项提供具体的诊断结果以及优化建议。 图2 健康智能诊断 单击异常诊断项名称,查看异常实例以及相关监控指标的数据。 例如:出现“高压力请求”异常情况时,可以单击“高压力请求”查看出现异常的实例信息、对应的CPU使用率、CPU使用率趋势,还可以单击操作列的“诊断详情”,查看详细的诊断结果。 支持的诊断项以及诊断异常的处理建议,请参见表4。 表4 智能诊断说明 诊断项 监控指标 指标说明 处理建议 相关案例 高压力请求 CPU使用率 (%) 该指标用于统计测量对象的CPU使用率。 评估业务SQL的执行计划,添加索引避免全表扫描。 扩容CPU规格,满足计算型业务需求。 TaurusDB CPU使用率高的解决方法 内存超限风险 内存使用率 (%) 该指标用于统计测量对象的内存使用率。 扩容实例规格,满足业务需求。 优化SQL,减少临时表等的使用。 会话定期重连,及时释放session级别内存。 长事务产生大量临时表导致内存超限的解决办法 慢SQL高频 慢日志个数统计 (个/分钟) 该指标展示每分钟TaurusDB产生慢日志的数量。 根据慢SQL的执行计划进行优化。 扩容CPU规格,满足业务需求。 联合索引设置不当导致慢SQL的解决办法 连接数超限 数据库总连接数 (个) 该指标用于统计连接到TaurusDB服务器的总连接数。 排查业务侧连接是否有效,优化实例连接,释放不必要的连接。 实例规格偏小,需要对数据库进行规格扩容。 TaurusDB数据库连接数满的排查思路 当前活跃连接数 (个) 该指标用于统计当前活跃的连接数。 连接数使用率(%) 该指标用于统计当前已用的TaurusDB连接数占最大连接数的百分比。
  • 一致性级别介绍 云数据库 TaurusDB提供了以下几种一致性级别,可以满足不同场景对一致性的要求。 最终一致性(默认) 开启数据库代理后,同一会话内,连续多次SELECT请求会根据权重配比,路由到不同的数据库节点,由于主节点与读节点之前存在复制时延,并且各个读节点的复制时延大小不一定完全相同,可能会导致每次SELECT请求得到的结果存在差异,因此默认情况下,数据库代理只能保证数据的最终一致。 会话一致性 由于最终一致性可能会导致多次SELECT请求的结果存在差异,数据库代理进一步提供了会话级别的数据一致性,保证了在同一会话内,每次SELECT请求都可以获取到上一次写入操作后的最新数据。 数据库代理会记录每个数据节点的日志序号(Log Sequence Number,简称LSN),同时针对每一个会话也会维护对应的LSN,即Session LSN。当某个会话有数据更新操作执行完成时,数据库代理会根据当时主节点的LSN来更新对应的Session LSN,后续有读请求进来时,数据库代理会比较Session LSN以及各个数据节点的LSN,将请求发往LSN大于或等于Session LSN的数据节点,从而保证当前会话内,SELECT请求总能获取到上一次更新操作后的最新数据。 图1 会话一致性实现原理 开启会话一致性后,如果主节点与读节点复制时延较大,各个读节点LSN均小于Session LSN,会导致SELECT请求发送到主节点,从而增大主节点的压力,整个数据库集群的读写性能会有一定的降低。
  • 功能介绍 表1 功能介绍 功能模块 描述 相关操作 容量空间概况 空间概况模块展示了当前实例磁盘的空间使用率、剩余可用空间以及磁盘总空间大小、近一周日均增长量、预计可用天数等信息,可快速了解实例空间的整体情况。 查看容量空间使用情况 表智能诊断 表智能诊断可以帮助您诊断“单表空间增长异常表”、“无主键表”、“无索引表”的异常情况。 表智能诊断 磁盘空间分布及变化趋势 支持查看实例磁盘空间的分布情况及磁盘空间的变化趋势。 查看磁盘空间分布 Top库表分析 支持查看物理文件大小Top50库表,可结合磁盘空间的分布情况,识别占用较高的库表并进行优化。 库表大小统计
  • 库表大小统计 在“收集Top库表”右侧单击,打开收集Top库表功能。 系统会在每天凌晨4点左右自动采集Top50的库表数据。 图9 开启收集Top库表 查看物理文件大小Top50库表信息,可结合磁盘空间的分布情况,识别占用较高的库表并进行优化。 物理文件大小为精确采集数据,其余指标为预估值(存在误差),如差距较大建议对目标表执行ANALYZA TABLE。 库名或表名中包含保留特殊字符时无法正常统计,包括“/”和“#p#p”。 实例总计表数量超过5万时,为了不影响实例,不会采集数据。 由于Top库表可能存在波动,趋势数据可能存在部分缺失。 图10 查看Top50库表 单击操作列“查看趋势”,可以查看近7天、近30天、自定义时间段(时间跨度在30天内)的数据量变化情况。
  • 表智能诊断 表智能诊断可以帮助您诊断“单表空间增长异常表”、“无主键表”、“无索引表”的异常情况。 在“表智能诊断”区域,单击“升级”。 图2 表智能诊断页面 在“升级高级智能运维包”弹框中,确认信息并勾选协议,单击“升级”。 图3 升级高级智能运维包 升级到高级智能运维包后,可以在“表智能诊断”区域,查看表智能诊断信息。 图4 查看表智能诊断结果 表智能诊断支持自动诊断和手动诊断两种方式。 自动诊断 自动诊断将在每天凌晨4点左右自动进行一次,诊断范围为容量预估页面下方展示的表列表中Top50内的表。 您可以在表智能诊断左侧区域查看到近一天磁盘容量空间增长异常的表数量,单击具体的数字可以查看诊断详情,并根据优化建议处理异常的表。 图5 查看诊断详情 近一天空间增长默认超过10240MB(即10GB)时,会报告异常。您也可以单击自动诊断右侧的,自定义阈值。 图6 自定义阈值 手动诊断 单击“重新诊断”,手动触发诊断任务。该操作每10分钟可执行一次,诊断范围无限制。 待诊断成功后,可以查看到无主键表和无索引表的数量,单击具体数字可以查看诊断详情,并根据优化建议处理异常的表。 图7 查看诊断详情 当表的数量超过5000张时,无法使用手动诊断功能。 当CPU利用率超过90%时,无法使用手动诊断功能。
  • 故障转移 当主实例故障无法恢复时,通常是区域性故障导致,需要进行故障转移。RegionlessDB集群会从所有的从实例中选取数据最新的从实例进行故障转移。 故障转移会造成一定程度的数据丢失,取决于故障转移时主从实例间的数据复制延迟情况。 通常故障转移可以在几分钟内完成,但执行故障转移后原来的主实例需要重建为从实例才可以重新加入到整个集群中,重建可能需要数十分钟到几个小时,具体时长取决于数据量的大小和区域之间的网络情况。
  • 功能介绍 元数据锁 元数据锁(Meta Data Lock, 简称MDL),其作用是用于解决DDL操作与DML操作的一致性。通常DDL操作需要获取MDL写锁,并且MDL锁一旦发生,就可能会对数据库的性能造成影响,因为后续对该表的任何SELECT、DML、DDL操作都会被阻塞,造成连接积压。 当前功能展示了当前时刻(实时)数据库的MDL锁的信息,可以快速帮助定位MDL问题、终止持有MDL锁的会话,从而恢复被阻塞的操作。 DML锁不在当前功能的范围之内,可以使用innodb锁等待进行分析和查看。 最多显示1000条数据。 Innodb锁等待 当前功能展示了当前时刻(实时)数据库的DML操作之前的锁等待的信息,可以快速帮助定位多个会话因同时更新同一条数据,而产生的会话等待和阻塞,并且支持快速终止持有锁的源头会话,从而恢复被阻塞的操作。 DDL锁不在当前功能的范围之内,可以使用元数据锁进行分析和查看。 需要开启性能模式才能查看锁信息,执行SHOW GLOBAL VARIABLES LIKE "performance_schema"或者在TaurusDB参数修改页面查看是否开启。 死锁分析 该功能基于SHOW ENGINE INNODB STATUS返回的最近一次死锁日志进行分析。如果发生过多次死锁,只会对最近一次死锁进行分析。 当前仅支持查看最近7天创建的锁分析数据。 全量死锁分析 该功能需要TaurusDB内核版本大于等于2.0.45.230900。 该功能当打开全量死锁分析开关后,会定时对错误日志进行分析,解析其中的死锁信息,并进行全面的死锁分析。 依赖参数: 需要开启“innodb_print_all_deadlocks”参数。 需要开启“innodb_deadlock_detect”参数,该参数默认已打开。 最多显示10000条数据。 当前仅支持查看最近7天创建的锁分析数据。
  • 其他操作和检查 主从实例分别是独立的TaurusDB实例,主从切换和故障转移不会交换主从间的各种配置,为了避免配置参数不同引起的性能和兼容性等问题,建议在主从切换和故障转移后检查主从实例的配置项差异。 检查应用程序读取/写入地址 主从切换和故障转移不会切换实例的读写地址,需要检查应用程序的读写地址是否符合预期。 故障转移期间,可以配置应用程序使用新的主实例的读写地址,等待故障实例重建完成后重新配置应用程序的读写地址。 检查从实例写转发配置,请参考步骤3:开启写转发。 检查参数组参数配置,请参考修改TaurusDB实例参数。 配置监控告警,请参考监控与告警。
  • 步骤2:添加从实例 在“RegionlessDB”页面,找到目标RegionlessDB。 单击操作列“添加从实例”。 图4 添加从实例 在“创建从实例”页面,设置相关参数。 表2 基本信息 参数 描述 区域 从实例所在区域。 须知: 不同区域内的产品内网不互通,且购买后不能更换,请谨慎选择。 创建方式 选择“新创建”。 实例名称 名称长度在4个到64个字符之间,必须以字母开头,可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。 数据库引擎 TaurusDB。 兼容的数据库版本 MySQL 8.0。 内核版本 从实例的内核版本,内核版本需要大于等于2.0.46.231000。 关于各个内核小版本的更新说明请参见内核版本发布说明。 说明: 如需设置内核版本,请联系客服人员申请权限。 实例类型 仅支持集群:RegionlessDB集群版包含最少2个最多10个只读节点。 存储类型 共享存储。 可用区类型 可用区指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。有的区域支持单可用区和多可用区,有的区域只支持单可用区。 单可用区:主节点和只读节点部署在同一个可用区。 多可用区:您选择主可用区,创建的只读节点会均匀分布在各可用区之间,保证高可靠性。 时区 由于世界各国家与地区经度不同,地方时也有所不同,因此会划分为不同的时区。时区可在创建实例时选择,后期不可修改。 性能规格 TaurusDB支持的性能规格,请参见数据库实例规格。 TaurusDB是基于共享存储架构的云原生数据库。为了保证实例在极高读写压力场景下的业务稳定,会根据规格对实例读写峰值进行智能平滑控制,将实例读写能力稳定在一个较高水平,请您参照性能白皮书,选择合适的性能规格。 CPU架构 实例的CPU和内存,CPU架构分为X86和鲲鹏。 节点数量 从实例所有节点均为只读节点,“按需计费”实例单次创建最多可批量申请10个只读节点。 实例创建成功后,您可根据业务需要,添加只读节点,一个从实例最多可以创建15个只读节点。详情请参见创建只读节点。 存储设置 无需选择存储容量,存储费用按照实际使用量每小时计费。 虚拟私有云 TaurusDB数据库实例所在的 虚拟专用网络 ,可以对不同业务进行网络隔离。您需要创建或选择所需的虚拟私有云。如何创建虚拟私有云,请参见《虚拟私有云用户指南》中的“创建虚拟私有云基本信息及子网”。 如果没有可选的虚拟私有云,TaurusDB数据库服务默认为您分配资源。 须知: 请确保从实例选择的虚拟私有云和主实例选择的虚拟私有云已通过VPN连通。 目前TaurusDB实例创建完成后不支持切换虚拟私有云,请谨慎选择所属虚拟私有云。 通过子网提供与其他网络隔离的、可以独享的网络资源,以提高网络安全性。 创建实例时TaurusDB会自动为您配置读写内网地址,您也可输入子网号段内未使用的读写内网地址。 内网安全组 内网安全组限制实例的安全访问规则,加强TaurusDB数据库服务与其他服务间的安全访问。请确保所选取的内网安全组允许客户端访问数据库实例。 如果不创建内网安全组或没有可选的内网安全组,TaurusDB数据库服务默认为您分配内网安全组资源。 说明: 为了保证后续数据库的连接和访问,选择内网安全组时,需在安全组的入方向放开3306端口和ICMP协议。 请确保主从实例之间的内网安全组规则是放开的。 参数模板 数据库参数就像是数据库引擎配置值的容器,参数模板中的参数可应用于一个或多个相同类型的数据库实例。实例创建成功后,参数模板可进行修改。 须知: 创建数据库实例时,为确保数据库实例正常创建,自定义参数模板中相关规格参数如下不会下发,而是采用系统默认的推荐值。 “innodb_buffer_pool_size” “innodb_log_buffer_size” “max_connections” “innodb_buffer_pool_instances” “innodb_page_cleaners” “innodb_parallel_read_threads” “innodb_read_io_threads” “innodb_write_io_threads” “threadpool_size” 您可以在实例创建完成之后根据业务需要进行调整。具体请参见编辑参数模板。 企业项目 该参数针对企业用户使用,如需使用该功能,请联系客服申请开通。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 请在下拉框中选择所在的企业项目,其中,default为默认项目。 如果需要自定义企业项目,请在控制台右上角单击“企业”,进入“企业项目”页面创建,具体请参见《企业管理用户指南》中“创建企业项目”的内容。 标签 可选配置,对关系型数据库的标识。使用标签可以方便识别和管理您拥有的数据库服务资源。每个实例最多支持20个标签配额。 实例创建成功后,您可以单击实例名称,在标签页签下查看对应标签。关于标签的详细操作,请参见标签。 实例密码及大小写敏感与主实例一致,无需单独设置。 参数配置完成后,单击页面右下角“立即购买”。 确认从实例信息无误后,单击页面右下角“提交”,完成创建从实例的申请。 从实例创建成功后,可以在“实例管理”页面对其进行查看和管理。 创建从实例过程中,状态显示为“创建中”。您可以通过“任务中心”查看详细进度和结果。创建完成的实例状态为“正常”,此时,从实例才可以正常使用。 如果主实例的存量数据较多,由于添加从实例需要对新创建的从实例进行全量备份恢复,该流程耗时可能会较长。
  • 使用须知 如需通过管理控制台设置Multi-Statements处理模式,请联系客服申请开通该功能。 更改Multi-Statements模式立即生效,无需重启数据库代理。但如果模式切换前存在由于执行了Multi-Statements导致读写分离失效的连接,不会因为切换模式而恢复读写分离,需要断开重连才能恢复。 Parse模式场景说明: 当Multi-Statements包含如下场景时,后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。 Multi-Statements内创建临时表。 Multi-Statements内创建存储过程。 Multi-Statements内含未提交的事务(如执行了begin,但未执行commit或rollback)。 Multi-Statements过于复杂或含特殊语法等导致Multi-Statements解析失败。
  • 使用方法 可以在SQL开头添加hint注释进行强制路由。 /*FORCE_MASTER*/强制路由到主节点; /*FORCE_SLAVE*/强制路由到只读节点; 例如:select * from table1默认会路由到只读节点,如果改为/*FORCE_MASTER*/ select * from table1就会路由到主节点。 /*FORCE_MASTER*/只能在可读可写的地址上生效,对于只读地址即使使用/*FORCE_MASTER*/也不会路由到主节点。
  • 常见参数的修改 表1 常见参数修改说明 参数名称 参数描述 文档链接 time_zone 服务器时区。 如何修改时区 default_password_lifetime 定义了全局自动密码过期策略,单位为天。 TaurusDB密码过期策略 character_set_server 服务器字符集。 使用utf8mb4字符集存储emoji表情到TaurusDB实例 collation_server 服务器字符集排序规则(必须和character_set_server指定的服务器字符集匹配,否则数据库将不能正常启动/重启)。 - group_concat_max_len 函数GROUP_CONCAT()结果的最大长度。 - max_connections 允许同时连接的客户端总数。如果设定值为default,表示该参数随内存规格变化。 TaurusDB数据库实例支持的最大数据连接数是多少 max_prepared_stmt_count 大量Prepare语句会消耗服务器的内存资源,可能造成服务端OOM(out of memory),带来"拒绝服务"的风险,请依据业务需求设置该值,小规格实例不宜设置过大。 - innodb_flush_log_at_trx_commit 当重新安排并批量处理与提交相关的I/O操作时,可以控制提交操作在严格遵守ACID合规性和高性能之间的平衡。当值设为0时,每秒把事务日志缓存区的数据写入日志文件并刷新到磁盘;当设为默认值1时,是为了保证完整的ACID,每次提交事务时,把事务日志从缓存区写到日志文件中,并刷新日志文件的数据到磁盘上;如果设为2,每次提交事务都会把事务日志从缓存区写入日志文件,大约每隔一秒会刷新到磁盘。 TaurusDB参数调优建议 sql_mode 当前SQL服务器模式。 - binlog_expire_logs_seconds 设置二进制日志文件有效期,有效期结束后,自动删除二进制日志文件。 -
  • 步骤6:测试ALT效果 当ALT功能开启,使用Sysbench,Tpcc-MySQL或MySQL客户端等工具连接到数据库代理地址,只读升主过程中用户的连接不会中断,只会出现短时间的卡顿后很快恢复。 以下分别是使用Sysbench,Tpcc-MySQL和MySQL客户端工具进行主备切换的效果示意。 使用Sysbench的进行只读升主的示例 使用tpcc-mysql的进行只读升主的示例 使用MySQL命令行工具进行只读升主的示例 如下图所示,用户自定义变量、会话变量、数据库在主备切换前后保持一致。 如下图所示,不同的事务排干超时时间,可能会影响到当前会话的ALT能力。
  • 路由模式的工作原理 TaurusDB数据库代理支持权重负载、负载均衡的路由模式,可根据需要配置不同的路由模式。 权重负载:根据设置的读权重比例分发读请求。 负载均衡:根据数据库节点的活跃连接数情况进行读请求分发,将读请求分发到活跃连接数较少的节点上。负载均衡模式不需要修改权重。 图1 路由模式工作原理 示例: 如上图所示,一个TaurusDB实例具有1个主节点、4个只读节点。 数据库代理1使用权重负载的路由模式,并选取了主节点、只读节点R1、只读节点R2,其读权重配比为0:70:80。则业务系统A的写请求经数据库代理自动转发至主节点,而读请求则按照7:8的比例分别路由至只读节点R1和R2。 数据库代理2使用负载均衡的路由模式,并选取了主节点、只读节点R3和只读节点R4,数据库代理将根据实时活跃连接数决定将读请求转发至哪一个节点。 当只读节点R4活跃连接数较高,处于高负载状态时,数据代理会将大部分读请求转发至负载较低的只读节点R3和主节点,以降低R4节点的负载压力。
  • 编辑标签 在“实例管理”页面,选择指定的实例,单击实例名称。 在左侧导航栏,单击“标签”,选择需要编辑的标签,单击“编辑”,在“编辑标签”弹出框中修改标签值,单击“确定”。 编辑标签时,不能修改标签的键,只能修改标签的值。 标签的值可以为空字符串,长度为0~43个字符,只能包含英文字母、中文、数字、中划线、下划线和英文句点。 编辑成功后,您可在当前实例的所有关联的标签集合中,查询并管理自己的标签。
  • 步骤5:验证读写分离效果 您可以在每次执行完对应的读操作后,通过show last route命令来查看本次读操作的路由结果。 以下步骤以一条读操作为例,介绍查看读请求的路由结果。 连接到TaurusDB实例后,执行读操作。 例如:select 1; 执行如下命令,查看1中读操作的路由结果。 show last route 图8 结果查询 请勿将show last route用于业务代码或包在Multi-Statements中执行。
  • 架构图 图1 架构图 应用无损透明(ALT)功能以用户连接为粒度,用户可以连接到数据库代理,在进行只读升主、规格变更或者小版本升级时,系统会复制用户的后台会话,在达到安全的事务边界后,确保后台会话操作上下文被完整克隆至目的节点,从而保证业务不会中断。 安全的事务边界是指当前会话上的事务提交完成,开启下一个事务之前的状态,例如: 开启autocommit的事务块每个语句执行完成时,可以达到事务边界。 start transaction;DML; commit; 关闭autocommit时,当commit执行完成,达到事务边界。 单独DML、DDL语句,执行完成,可以达到事务边界。 使用表锁、备份锁、用户自定锁时,需要释放锁以后,达到事务边界。
  • 步骤2:进行用户认证 在使用数据库代理连接TaurusDB实例前,需要确保当前数据库账号具有访问数据库代理地址的权限,否则将无法通过数据库代理连接到TaurusDB实例。 您可以通过以下步骤来检查权限并授权该账号访问数据库代理地址的权限。 连接TaurusDB实例。 具体操作请参见连接实例。 实例连接成功后,执行下列SQL语句,查看当前数据库账号的host是否包含数据库代理地址。 SELECT user,host FROM mysql.user; 代理地址获取方式: 单击目标TaurusDB实例,进入基本信息页面。在左侧导航栏单击“数据库代理”,在代理实例列表中查看数据库代理地址。 图3 查看代理地址 如果查询的host不包含数据库代理所在网段,则需要赋予远程访问权限。 例如:使用root用户想要从192.168.0网段连接到TaurusDB实例,您可以在DAS用户管理界面将当前账号的主机设置为192.168.%。具体操作请参见编辑用户信息。 图4 设置主机IP
  • 使用须知 账户余额大于等于0元,才可创建手动备份。 备份效率与实例数据量大小成正比。 全量备份时,会连接备份所属的实例,校验该实例的状态。如果校验存在从备份所属的实例获取备份锁失败的情况,则校验不通过,会自动进行校验重试。如果重试结束后,仍然无法满足,则备份失败。 当删除华为账号时,自动备份和手动备份的数据将被同步删除。 创建手动备份所需时间,由实例的数据量大小决定。 实例在执行备份时,会将数据从实例上拷贝并上传到OBS备份空间,备份时长和实例的数据量有关。
  • 修改性能参数 innodb_flush_log_at_trx_commit 数据库默认值:1 作用:该参数控制提交操作在严格遵守ACID合规性和高性能之间的平衡。 设置为默认值1时,是为了保证完整的ACID,每次提交事务时,把log buffer中的数据从缓存区写到日志文件中,并刷新日志文件的数据到分布式存储上。 当设为0时,InnoDB每秒钟将log buffer中的数据写入日志文件,并刷新到分布式存储上。 当设为2时,InnoDB在每次事务提交时将log buffer中的数据更新到文件系统缓存中,每秒钟并刷新到分布式存储上。 影响:参数设置为非默认值1时,降低了数据安全性,在系统崩溃的情况下,可能导致丢失1秒钟的事务。 POC建议值:0,可以显著提升低并发写入性能。 rds_global_sql_log_bin 数据库默认值:OFF 作用:该参数控制动态开启/关闭Binlog。TaurusDB采用共享存储架构,主节点和只读节点不依赖于Binlog进行数据同步。当用户不需要Binlog时,可以通过此开关动态关闭Binlog。 设置为默认值OFF时,动态关闭Binlog,不需要重启(在已有的连接和新连接上都生效)。 当设置为ON时,动态开启Binlog,不需要重启(在已有的连接和新连接上都生效)。 影响:当客户不需要Binlog时,可以动态关闭Binlog,对该实例无影响。 POC建议值:OFF,可以提升写入性能。 2.0.42.230601及之前的版本默认开启Binlog,可以通过参数log-bin关闭或开启Binlog,修改该参数需要重启。 2.0.45.230900及以后版本默认关闭Binlog,可以通过参数rds_global_sql_log_bin动态开启或关闭Binlog。 rds_plan_cache 数据库默认值:OFF 作用:Plan Cache特性是缓存Prepare Statement的执行计划,减少优化器重新生成执行计划来提升查询性能。 当rds_plan_cache设置为ON,Prepare Statement的执行计划会被缓存,下一次Execute时可以重新利用缓存的执行计划,提升查询性能。 影响:提升Prepare Statement语句的查询性能,对sysbench的select_random_ranges测试模型提升效果显著。 POC建议值:ON,可以提升查询性能。 2.0.51.240300及以后版本,可以开启此特性。 rds_plan_cache用的不是innnodb_buffer内存,用的是stmt mem内存区域分配的内存。 rds_plan_cache_allow_change_ratio:当查询访问的表数据发生变化,例如DML语句导致表数据发生变化,变化比例超过此参数设置的阈值时,plan cache会失效。设置为0,表示不受表数据变化比例的影响,一直生效。
  • TaurusDB事件监控简介 事件监控提供了事件类型数据上报、查询和告警的功能。方便您将业务中的各类重要事件或对云资源的操作事件收集到 云监控 服务,并在事件发生时进行告警。 事件即云监控服务保存并监控的TaurusDB资源的关键操作,您可以通过“事件”了解到谁在什么时间对系统哪些资源做了什么操作,如删除只读节点、规格变更等。 事件监控为您提供上报自定义事件的接口,方便您将业务产生的异常事件或重要变更事件采集上报到云监控服务。 事件监控默认开通,您可以在事件监控中查看系统事件和自定义事件的监控详情,目前支持的系统事件请参见TaurusDB事件监控支持的事件说明。 父主题: 事件监控
  • 使用须知 执行操作中的实例不能手动删除,只有在实例操作完成后,才可被删除。 实例删除后将不再产生费用,实例生成的自动备份会被同步删除,手动备份不会被删除,保留的手动备份会继续收取费用。 删除实例时,会同步删除其对应的只读节点,请谨慎操作。 如果实例的备份文件正在执行数据恢复操作,该实例不允许删除。 实例删除后,资源立即释放,请谨慎操作。如需保留数据,请务必确认完成数据备份后再删除实例。 实例删除后会被移至回收站,超过回收站设置的保留天数后实例会自动被永久删除。
  • 功能列表 智能DBA支持以下功能,详情请参见表1。 表1 功能说明 功能 描述 相关文档 实例概览 提供数据库整体运行情况,包括告警统计、资源使用情况和重点性能指标,多方面实时展示实例的运行状态。基于运行数据结合智能算法对实例进行健康智能诊断,并对异常项提供解决方法与使用建议。 查看TaurusDB实例运行情况 实时会话 提供当前数据库会话快照查询,并支持排序过滤展示。可基于用户、访问主机、库等多维度快速过滤识别到自定义慢SQL会话、活跃会话等。KILL会话与SQL限流功能应对紧急实例恢复,保障数据库的可用性。 管理TaurusDB实时会话 实时性能 展示数据库实例各项关键指标,并提供日期对比功能,方便查看周期业务以及指标变化情况,及时发现异常。秒级监控有助于精准定位问题。 性能监控 容量预估 数据库实例在使用过程中,当前磁盘空间数据与日志的占比以及历史上涨情况往往是用户关心的重点。智能DBA助手提供了容量预估功能,可以方便地查看磁盘空间概况与分布,并通过历史数据结合智能算法提供了空间预估等功能,尽早发现空间不足的情况并及时避免。此外还提供了智能扩容、表智能诊断、TOP50库表协助运维功能。 管理TaurusDB磁盘容量 慢SQL 提供指定时间段内的慢SQL分析功能。从用户、IP、SQL模板等进行多维统计,展示统计结果并支持指定排序,识别慢SQL的精准来源,方便用户快速优化业务。 查看TaurusDB的慢SQL 全量SQL 在实例开启全量SQL的前提下,该模块基于全量SQL数据进行分析,并提供多维度的分析、搜索、过滤的能力,帮助用户全面洞察SQL,TOP SQL快速定位异常原因,保障数据库稳定运行。 查看TaurusDB的TOP SQL 使用TaurusDB的SQL洞察 SQL限流 针对新上业务不能及时发包优化的SQL和突发流量导致CPU等资源100%瓶颈的场景,SQL限流功能通过控制既定SQL规则的并发度协助业务侧及时流控,保证核心业务的稳定运行。 使用TaurusDB的SQL限流
  • 约束限制 全量SQL功能不能保证记录全部数据,存在如下使用限制: 当前全量SQL受内存缓冲区限制,业务量大的场景下,全量SQL有较小概率因缓冲区满,存在丢弃部分记录。 当前全量SQL单条记录超过设置的上限时,会默认丢弃该条记录。 此限制可以通过设置参数“rds_sql_tracer_max_record_size ”来选择是否丢弃。您可以通过修改TaurusDB实例参数设置参数值,超过该值的记录会被丢弃。
  • 支持的区域 表1 支持的区域说明 实例所在源区域 备份的目标区域 华北-北京四 华东-上海一、华北-乌兰察布一、西南-贵阳一、华南-广州 华东-上海一 华北-北京四、华北-乌兰察布一、西南-贵阳一、华南-广州 华北-乌兰察布一 华北-北京四、华东-上海一、西南-贵阳一、华南-广州 西南-贵阳一 华北-北京四、华东-上海一、华北-乌兰察布一、华南-广州 华南-广州 华北-北京四、华东-上海一、华北-乌兰察布一、西南-贵阳一
  • 功能限制 单个“包年/包月”和“按需计费”实例最多可以创建15个只读节点,“Serverless”实例最多可以创建7个只读节点。 实例恢复:不支持通过任意时间点创建临时节点,不支持通过备份集覆盖节点。 数据迁移:不支持将数据迁移至只读节点。 数据库管理:不支持创建和删除数据库。 账号管理:只读节点不提供创建账号权限。 只读节点与主节点可能会存在时延,其中全文索引由于其本身的特殊机制,延时较为显著。如果您的业务对时延较为敏感,可将查询发送到主节点。
  • 操作场景 只读节点用于增强实例主节点的读能力,减轻主节点负载。实例创建成功后,您可以根据业务需要,创建只读节点。 只读节点区分同步节点和异步节点。 同步节点:故障倒换优先级为1,且与主节点性能规格一致的只读节点。为了规避主节点和只读节点规格不一致导致主备倒换失败的情况,TaurusDB实例必须存在一个同步节点,多可用区实例必须存在一个与主节点不同可用区的同步节点。 异步节点:故障倒换优先级不为1,且与主节点性能规格不同的只读节点。 更多关于只读节点的内容请参见TaurusDB只读节点简介。
  • 数据库代理支持的监控指标 表2 Proxy支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) rds_proxy_frontend_connections 前端连接数 应用与Proxy之间的连接数。 ≥0 Counts TaurusDB代理实例节点 1分钟 rds_proxy_backend_connections 后端连接数 Proxy和TaurusDB数据库之间的连接数。 ≥0 Counts TaurusDB代理实例节点 1分钟 rds_proxy_average_response_time 平均响应时间 平均响应时间。 ≥0 ms TaurusDB代理实例节点 1分钟 rds_proxy_query_per_seconds QPS SQL语句查询次数。 ≥0 Counts TaurusDB代理实例节点 1分钟 rds_proxy_read_query_proportions 读占比 读请求占总请求的比例。 0-100% TaurusDB代理实例节点 1分钟 rds_proxy_write_query_proportions 写占比 写请求占总请求的比例。 0-100% TaurusDB代理实例节点 1分钟 rds001_cpu_util CPU使用率 该指标用于统计测量对象的CPU利用率。 0-100% TaurusDB代理实例节点 1分钟 rds002_mem_util 内存使用率 该指标用于统计测量对象的内存利用率。 0-100% TaurusDB代理实例节点 1分钟 rds004_bytes_in 网络输入吞吐量 该指标用于统计平均每秒从测量对象的所有网络适配器输入的流量。 ≥0 Bytes/s TaurusDB代理实例节点 1分钟 rds005_bytes_out 网络输出吞吐量 该指标用于统计平均每秒从测量对象的所有网络适配器输出的流量。 ≥0 Bytes/s TaurusDB代理实例节点 1分钟 rds_proxy_frontend_connection_creation 每秒平均创建前端连接数 统计平均每秒客户应用程序针对数据库代理服务创建的前端连接数。 ≥0 Counts TaurusDB代理实例节点 1分钟 rds_proxy_multi_statement_query 每秒平均多语句执行数 统计平均每秒Multi-Statements语句的执行数。 ≥0 Counts TaurusDB代理实例节点 1分钟 rds_proxy_transaction_query 每秒平均事务中的查询数 统计平均每秒执行的事务中包含select的执行数。 ≥0 Counts TaurusDB代理实例节点 1分钟
共99354条