华为云用户手册

  • 解决方案 建议新上业务时,提前对关键SQL通过EXPLAIN、SQL诊断等工具进行执行计划分析,根据优化建议添加索引,避免全表扫描。 业务量突增的高并发造成CPU占用率高,可以考虑升级实例规格或使用独享型资源避免出现CPU资源争抢,或者创建只读实例进行读写分离减轻主实例负载。 通过show processlist查看当前会话信息来辅助定位:运行状态为Sending data、Copying to tmp table、Copying to tmp table on disk、Sorting result、Using filesort的查询会话可能均包含性能问题。 应急场景可以借助SQL限流以及KILL会话功能来临时kill规避“烂SQL”。
  • 解决方案 为已有数据的表添加自增列时,请先创建相同表结构的新表,再在新表上添加自增列,将原表数据导入(导入数据时,请尽量保持原表无写入操作,否则会造成原表与新表数据不一致)。 按照如下步骤解决主备节点查询数据不一致问题。 在主节点上创建一个与无主键表(称之为原无主键表t1)相同的新表t2,并为新表中添加自增主键。 示例如下: CREATE TABLE t2 LIKE t1;ALTER TABLE t2 ADD id INT AUTO_INCREMENT PRIMARY KEY; 将原无主键表的数据全部插入到新表t2中。 示例如下: INSERT INTO t2(col1, col2) SELECT col1, col2 FROM t1 ORDER BY col1, col2; 为了确保主备节点对应表中数据的顺序相同,ORDER BY子句必须包含原无主键表的所有列。 删除原无主键表t1,并将新表重命名为原无主键表名。 示例如下: DROP TABLE t1;RENAME TABLE t2 TO t1;
  • 故障描述 客户端通过已有连接执行业务时,返回如下报错信息: 故障一 org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. 故障二 org.postgresql.util.PSQLException: The connection attempt failed ... Caused by: java.net.SocketException: Connection reset
  • 故障二的解决方案 这类问题是由于已有连接被释放掉,使用已经释放的连接会出现这个报错。可能原因主要有以下几种: 网络链路问题 数据库重启或后端进程crash 空闲连接超时释放 解决方案: 首先排查网络连通性,判断是否有网络链路因素(丢包率、重传比例高)导致连接断开。 如果没有网络层面的问题,需要排查业务是否有其他报错导致连接断开。 如果业务上也没有其他报错,则尝试排查连接超时参数(如jdbc连接池参数sockettimeout和connecttimeout),如果设置值较小,会导致连接被主动释放。
  • 解决方案 对于mariadb-java-client-2.7.5的连接串应该为: 不提供CA证书,不对服务端证书校验: String url = "jdbc:mysql://ip:port/mysql?useSsl=true&trustServerCertificate=true"; 提供CA证书,对服务端证书进行校验: String url = "jdbc:mysql://ip:port/mysql?useSsl=true&serverSslCert=D:\\ca.pem&disableSslHostnameVerification=true"; 注意:RDS for MySQ L实例 不支持hostname校验,因此需要设置disableSslHostnameVerification=true,不同mariadb jar包版本设置方式不同,可查看对应版本的使用说明。
  • 原因分析 ibdata1是InnoDB的系统表空间,主要包括: 多版本并行事务控制(MVCC)相关的数据:undolog Innodb表的元数据,如数据字典 change buffer/double write buffer等 其中,undolog是ibdata1增大的最主要原因,而undolog过大的主要原因如下: 长事务久未提交,导致undolog purge被阻塞。 写入并发太大生成大量的undolog,purge速度跟不上。 通过show engine innodb status中的“History list length”可以查看未被purge的undolog数量。
  • 场景描述 14点~15点之间数据库出现大量行锁冲突,内核中大量update/insert会话在等待行锁释放,导致CPU使用率达到70%左右,数据库操作变慢。 查看 CES 指标行锁等待个数、MDL锁数量,下图仅供参考: 发生死锁的表: ********* 1. row *********Table: table_test Create Table: CREATE TABLE table_test(...CONSTRAINT act_fk_exe_parent FOREIGN KEY (parent_id_) REFERENCES act_ru_execution (id_) ON DELETE CASCADE,CONSTRAINT act_fk_exe_procdef FOREIGN KEY (proc_def_id_) REFERENCES act_re_procdef (id_),CONSTRAINT act_fk_exe_procinst FOREIGN KEY (proc_inst_id_) REFERENCES act_ru_execution (id_) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT act_fk_exe_super FOREIGN KEY (super_exec_) REFERENCES act_ru_execution (id_) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
  • 解决方案 对于存在大量新建连接,建议调大threadpool_oversubscribe增加线程总数。 减少线程重复创建与销毁部分的开销,提高性能,同时它也限制了MySQL的runing线程数,关键时刻可以保护系统,防止雪崩。 正常情况下,线程池适用于大量短连接的场景,如果客户是长连接,并且连接数量不多(客户端使用了连接池等情况),线程池的作用不大,此时调整threadpool_oversubscribe扩大线程总数,或者直接关闭线程池。
  • 怎么解决查询运行缓慢的问题 通过查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征(如果有),从而定位查询运行缓慢的原因。 查询RDS for MySQL日志,请参见查询慢日志。 查询RDS for PostgreSQL日志,请参见查看错误日志。 云数据库 RDS for SQL Server可以通过查询DMV视图,从而定位查询运行缓慢的原因,有关使用DMV的信息,请参见官网信息。 查看实例的CPU使用率指标,协助定位问题。 请参见查看性能指标。 创建只读实例专门负责查询。减轻主实例负载,分担数据库压力。 多表关联查询时,关联字段要加上索引。 尽量避免用select*语句进行全表扫描,可以指定字段或者添加where条件。 父主题: 性能资源类
  • 原因分析 由于MVCC机制,MySQL更新表中数据时会生成undo日志,会占用磁盘空间;所有会话的相关事务提交或回滚后,undo日志会被清理,导致磁盘空间下降。 当存在长事务时,长事务只要不提交,其他会话对相关表更新生成的undo就无法清理,导致磁盘空间一直上涨。 排查思路: 通过如下语句,检查是否有长时间不提交事务。 select t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t \G; 通过审计日志或慢日志,检查是否存在大事务一次性插入大量数据。
  • 场景案例 假定max_allowed_packet参数大小为1073741824。 创建表。 CREATE TABLE IF NOT EXISTS zstest1 ( id int PRIMARY KEY not null, c_longtext LONGTEXT ); 向表中插入数据。 insert into zstest1 values(1, repeat('a', 1073741800)); insert into zstest1 values(2, repeat('a', 1073741800)); insert into zstest1 values(3, repeat('a', 1073741800)); insert into zstest1 values(4, repeat('a', 1073741800)); insert into zstest1 values(5, repeat('a', 1073741800)); insert into zstest1 values(6, repeat('a', 1073741800)); insert into zstest1 values(7, repeat('a', 1073741800)); insert into zstest1 values(8, repeat('a', 1073741800)); insert into zstest1 values(9, repeat('a', 1073741800)); insert into zstest1 values(10, repeat('a', 1073741800)); 删除数据。 delete from zstest1; 执行查询语句。 select id from zstest1; //执行缓慢
  • 解决方案 执行show processlist,查看正在执行的事务,使用如下命令,找到长事务。 select t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t \G; 示例输出: 上述结果中idle_time是计算产生的,也是事务的持续时间。trx_mysql_thread_id是该事务的thread_id,和show processlist中的线程ID对应。 事务的trx_query是NULL,但不表示未执行事务,一个事务可能包含多个SQL,如果SQL执行完毕就不再显示。如果事务正在执行,InnoDB也无法得知该事务后续还有没有SQL以及提交时间。此时,trx_query不能提供有意义的信息,因此为NULL。 kill长事务,再进行规格变更或小版本升级。 建议客户在进行规格变更或小版本升级时,避免长事务执行。
  • 如何保证请求幂等性 客户端在发送请求时,可以在HTTP请求消息头中增加X-Client-Token作为幂等性标识,字段描述参见表1。 表1 幂等标识消息头 名称 描述 是否必选 示例 X-Client-Token 保证客户端请求幂等性的标识。 该标识为32位UUID格式,由客户端生成,且需确保不同请求之间该标识具有唯一性。 否 46436810-d999-454c-bd85-e515fd258600 通常情况下,客户端只需要在服务端内部异常、连接超时等响应状态码为5xx的错误,或者无法获取响应结果重试请求。重试请求仍然使用相同的幂等标识和请求参数,则服务端会返回与第一次请求相同的请求结果。 幂等标识的详细信息如下所示: 幂等标识是一个大小写敏感的32位UUID,其格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。如果您提供了一个非UUID格式的标识,则服务端会返回DBS.280497错误码。 幂等标识需要具有唯一性,如果您提供了一个已经使用过的标识,但请求参数有变化,则服务端会返回DBS.280495错误码。 幂等标识具有时效性(8小时),如果您提供了一个已经失效的标识,则服务端会返回DBS.280498错误码。 使用幂等标识后: 返回结果状态码为2xx时,重试后客户端可以得到与上次相同的结果,但对您的服务端状态没有影响。 返回结果状态码为4xx时,重试不会成功。您需要根据错误信息排查问题后再重试请求。
  • 调用说明 云数据库 RDS提供了REST(Representational State Transfer)风格API,支持您通过HTTPS请求调用,调用方法请参见如何调用API。 同时关系型数据库还提供多种编程语言的SDK供您使用,SDK的使用方法请参见https://sdkcenter.developer.huaweicloud.com/。 调用API时有流控策略,用于限制单位时间内API的被调用次数。单位时间内API请求次数过多,可能会请求失败。 标准流控策略:单用户每分钟60次,API总流量每分钟8000次。 父主题: 使用前必读
  • 概述 欢迎使用云数据库 RDS(Relational Database Service,简称RDS)。云数据库 RDS是一种基于 云计算平台 的稳定可靠、弹性伸缩、便捷管理的在线云数据库 RDS服务。云数据库 RDS服务具有完善的性能监控体系和多重安全防护措施,并提供了专业的数据库管理平台, 让用户能够在云中轻松的进行设置和扩展云数据库 RDS。 您可以使用本文档提供API对数据库实例进行相关操作,如创建、备份恢复、查询、参数配置、删除等。支持的全部操作请参见API概览。 在调用关系型数据库API之前,请确保已经充分了解云数据库 RDS相关概念,详细信息请参见《云数据库 RDS用户指南》的“产品介绍”。 父主题: 使用前必读
  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。 IAM 项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。 “√”表示支持,“x”表示暂不支持。
  • RDS授权分类 表1 公共查询 权限 对应API接口 授权项(Action) IAM项目(Project) 企业项目(Enterprise Project) 实例授权 查询数据库引擎版本 GET /v3/{projectId}/datastores/{database_name} 无需授权 √ √ × 查询数据库规格 GET /v3/{project_id}/flavors/{database_name}?version_name={version_name} 无需授权 √ √ × 查询数据库存储规格 GET /v3/{project_id}/storage-type/{database_name}?version_name={version_name} 无需授权 √ √ × 表2 实例管理 API功能 对应API接口 授权项(Action) IAM项目(Project) 企业项目(Enterprise Project) 实例授权 创建数据库实例 POST /v3/{project_id}/instances rds:instance:create (创建加密实例需要在项目上配置KMS Administrator权限。) √ √ × 修改实例名称 PUT https://{Endpoint}/v3/{project_id}/instances/{instance_id}/name rds:instance:modify √ √ √ 修改实例备注 PUT https://{Endpoint}/v3/{project_id}/instances/{instance_id}/alias rds:instance:modify √ √ √ 申请内网 域名 POST https://{Endpoint}/v3/{project_id}/instances/{instance_id}/create-dns rds:instance:createDns √ √ × 修改内网域名 PUT https://{Endpoint}/v3/{project_id}/instances/{instance_id}/modify-dns rds:instance:modifyDns √ √ √ 变更数据库实例的规格 POST /v3/{project_id}/instances/{instance_id}/action rds:instance:modifySpec √ √ × 扩容数据库实例的磁盘空间 POST /v3/{project_id}/instances/{instance_id}/action rds:instance:extendSpace √ √ √ 单机转主备实例 POST /v3/{project_id}/instances/{instance_id}/action rds:instance:singleToHa (加密实例需要在项目上配置KMS Administrator权限。) √ √ √ 重启数据库实例 POST /v3/{project_id}/instances/{instance_id}/action rds:instance:restart √ √ √ 删除数据库实例 DELETE /v3/{project_id}/instances/{instance_id} rds:instance:delete √ √ √ 查询数据库实例列表 GET /v3/{project_id}/instances rds:instance:list √ √ √ 查询跨区域备份实例列表 GET /v3/{project_id}/backups/offsite-backup-instance rds:instance:list √ √ √ 绑定和解绑弹性公网IP PUT /v3/{project_id}/instances/{instance_id}/public-ip rds:instance:modifyPublicAccess √ √ × 修改数据库实例密码 PUT /v3/{project_id}/instances/{instance_id}/password rds:password:update √ √ √ 手动主备倒换 PUT /v3/{project_id}/instances/{instance_id}/failover rds:instance:switchover √ √ √ 修改主备切换策略 PUT /v3/{project_id}/instances/{instance_id}/failover/strategy rds:instance:modifyStrategy √ √ √ 修改主备同步模式 PUT /v3/{project_id}/instances/{instance_id}/failover/mode rds:instance:modifySynchronizeModel √ √ √ 修改运维时间窗 PUT /v3/{project_id}/instances/{instance_id}/ops-window rds:instance:modify √ √ √ 备机可用区迁移 POST /v3/{project_id}/instances/{instance_id}/migrateslave rds:instance:create √ √ × 表3 灾备实例 API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 配置主实例容灾能力 POST /v3/{project_id}/instances/{instance_id}/action rds:instance:buildDrRelation √ √ × 配置灾备实例容灾能力 POST /v3/{project_id}/instances/{instance_id}/action rds:instance:buildDrRelation √ √ √ 灾备升主 POST /v3/{project_id}/instances/{instance_id}/action rds:instance:modifyDRRole √ √ √ 查询跨云容灾复制状态 GET /v3/{project_id}/instances/{instance_id}/disaster-recovery rds:instance:list √ √ × 表4 数据库安全性 API功能 对应API接口 授权项(Action) IAM项目(Project) 企业项目(Enterprise Project) 实例授权 设置SSL 数据加密 PUT /v3/{project_id}/instances/{instance_id}/ssl rds:instance:modifySSL √ √ √ 修改数据库端口 PUT /v3/{project_id}/instances/{instance_id}/port rds:instance:modifyPort √ √ √ 修改内网地址 PUT /v3/{project_id}/instances/{instance_id}/ip rds:instance:modifyIp √ √ √ 修改安全组 PUT /v3/{project_id}/instances/{instance_id}/security-group rds:instance:modifySecurityGroup √ √ √ 表5 参数配置 API功能 对应API接口 授权项(Action) IAM项目(Project) 企业项目(Enterprise Project) 实例授权 获取参数模板列表 GET /v3/{project_id}/configurations rds:param:list √ √ √ 创建参数模板 POST /v3/{project_id}/configurations rds:param:create √ √ × 修改参数模板参数 PUT /v3/{project_id}/configurations/{config_id} rds:param:modify √ √ √ 应用参数模板 PUT /v3/{project_id}/configurations/{config_id}/apply rds:param:apply √ √ × 修改指定实例的参数 PUT /v3/{project_id}/instances/{instance_id}/configurations rds:param:modify √ √ √ 获取指定实例的参数模板 GET /v3/{project_id}/instances/{instance_id}/configurations rds:param:list √ √ √ 获取指定参数模板的参数 GET /v3/{project_id}/configurations/{config_id} rds:param:list √ √ √ 删除参数模板 DELETE /v3/{project_id}/configurations/{config_id} rds:param:delete √ √ × 表6 备份与恢复 API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 设置自动备份策略 PUT /v3/{project_id}/instances/{instance_id}/backups/policy rds:instance:modifyBackupPolicy √ √ √ 设置跨区域备份策略 PUT /v3/{project_id}/instances/{instance_id}/backups/offsite-policy rds:instance:modifyBackupPolicy √ √ √ 查询自动备份策略 GET /v3/{project_id}/instances/{instance_id}/backups/policy rds:instance:list √ √ √ 查询跨区域备份策略 GET /v3/{project_id}/instances/{instance_id}/backups/offsite-policy rds:instance:list √ √ √ 创建手动备份 POST /v3/{project_id}/backups rds:backup:create √ √ × 获取备份列表 GET /v3/{project_id}/backups?instance_id={instance_id} rds:backup:list √ √ × 获取跨区域备份列表 GET /v3/{project_id}/offsite-backups?instance_id={instance_id} rds:backup:list √ √ × 获取备份下载链接 GET /v3/{project_id}/backup-files?backup_id={backup_id} rds:backup:download √ √ × 删除手动备份 DELETE /v3/{project_id}/backups/{backup_id} rds:backup:delete √ √ × 查询可恢复时间段 GET /v3/{project_id}/instances/{instance_id}/restore-time rds:instance:list √ √ × 查询跨区域备份可恢复时间段 GET /v3/{project_id}/instances/{instance_id}/offsite-restore-time rds:instance:list √ √ × 恢复到新实例 POST /v3/{project_id}/instances rds:instance:create (加密实例需要在项目上配置KMS Administrator权限。) √ √ × 恢复到已有或当前实例 POST /v3/{project_id}/instances/recovery rds:instance:restoreInPlace √ √ × 表7 获取日志信息 API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 查询数据库错误日志 GET /v3/{project_id}/instances/{instance_id}/errorlog?start_date={start_date}&end_date={end_date} rds:log:list √ √ √ 查询数据库慢日志 GET /v3/{project_id}/instances/{instance_id}/slowlog?start_date={start_date}&end_date={end_date} rds:log:list √ √ √ 设置审计日志策略 PUT /v3/{project_id}/instances/{instance_id}/auditlog-policy rds:auditlog:operate √ √ √ 查询审计日志策略 GET /v3/{project_id}/instances/{instance_id}/auditlog-policy rds:auditlog:list √ √ √ 获取审计日志列表 GET /v3/{project_id}/instances/{instance_id}/auditlog?start_time={start_time}&end_time={end_time}&offset={offset}&limit={limit} rds:auditlog:list √ √ √ 生成审计日志下载链接 POST /v3/{project_id}/instances/{instance_id}/auditlog-links rds:auditlog:download √ √ √ 获取慢日志下载链接 POST /v3/{project_id}/instances/{instance_id}/slowlog-download rds:log:download √ √ √ 获取binlog本地保留时长 GET /v3/{project_id}/instances/{instance_id}/binlog/clear-policy rds:binlog:get √ √ √ 设置binlog本地保留时长 PUT /v3/{project_id}/instances/{instance_id}/binlog/clear-policy rds:binlog:setPolicy √ √ √ 表8 管理数据库和用户(MySQL) API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 创建数据库 POST /v3/{project_id}/instances/{instance_id}/database rds:database:create √ √ √ 查询数据库列表 GET /v3/{project_id}/instances/{instance_id}/database/detail?page={page}&limit={limit} rds:database:list √ √ √ 查询指定用户的已授权数据库 GET /v3/{project_id}/instances/{instance_id}/db_user/database?user-name={user-name}&page={page}&limit={limit} rds:database:list √ √ √ 删除数据库 DELETE /v3/{project_id}/instances/{instance_id}/database/{db_name} rds:database:drop √ √ √ 创建数据库用户 POST /v3/{project_id}/instances/{instance_id}/db_user rds:databaseUser:create √ √ √ 查询数据库用户列表 GET /v3/{project_id}/instances/{instance_id}/db_user/detail?page={page}&limit={limit} rds:databaseUser:list √ √ √ 查询指定数据库的已授权用户 GET /v3/{project_id}/instances/{instance_id}/database/db_user?db-name={db-name}&page={page}&limit={limit} rds:databaseUser:list √ √ √ 修改数据库用户的备注 PUT /v3/{project_id}/instances/{instance_id}/db-users/{user_name}/comment rds:databaseUser:update √ √ √ 删除数据库用户 DELETE /v3/{project_id}/instances/{instance_id}/db_user/{user_name} rds:databaseUser:drop √ √ √ 授权数据库账号 POST /v3/{project_id}/instances/{instance_id}/db_privilege rds:databasePrivilege:grant √ √ √ 修改数据库账号密码 POST /v3/{project_id}/instances/{instance_id}/db_user/resetpwd rds:password:update √ √ √ 解除数据库账号权限 DELETE /v3/{project_id}/instances/{instance_id}/db_privilege rds:databasePrivilege:revoke √ √ √ 表9 管理数据库和用户(PostgreSQL) API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 创建数据库 POST /v3/{project_id}/instances/{instance_id}/database rds:database:create √ √ √ 创建数据库用户 POST /v3/{project_id}/instances/{instance_id}/db_user rds:databaseUser:create √ √ √ 授权数据库账号 POST /v3/{project_id}/instances/{instance_id}/db_privilege rds:databasePrivilege:grant √ √ √ 创建数据库 schema POST /v3/{project_id}/instances/{instance_id}/schema rds:database:create √ √ √ 查询数据库列表 GET /v3/{project_id}/instances/{instance_id}/database/detail?page={page}&limit={limit} rds:database:list √ √ √ 查询数据库用户列表 GET /v3/{project_id}/instances/{instance_id}/db_user/detail?page={page}&limit={limit} rds:databaseUser:list √ √ √ 查询数据库SCHEMA列表 GET /v3/{project_id}/instances/{instance_id}/schema/detail?db_name={name}page={page}&limit={limit} rds:database:list √ √ √ 修改数据库用户的备注 PUT /v3/{project_id}/instances/{instance_id}/db-users/{user_name}/comment rds:databaseUser:update √ √ √ 表10 回收站 API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 设置回收站策略 PUT https://{Endpoint}/v3/{project_id}/instances/recycle-policy rds:instance:setRecycleBin √ × × 表11 标签管理 API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 批量添加删除标签 POST /v3/{project_id}/instances/{instance_id}/tags/action rds:instance:dealTag √ √ √ 查询项目标签 GET /v3/{project_id}/tags rds:tag:list √ √ × 表12 配额管理 API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 查询配额 GET https://{Endpoint}/v3/{project_id}/quotas rds:instance:list √ √ √ 表13 任务功能 API功能 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 实例授权 获取任务信息 GET /v3/{project_id}/jobs?id={id} rds:task:list √ √ × 父主题: 权限和授权项
  • 独享型实例测试列表 根据业务场景的不同,RDS for MySQL 8.0的测试结果可能会低于RDS for MySQL 5.7,属于正常现象。 如下表中的“最大连接数(压力测试值)”是RDS性能压力测试的结果,对于真实运行业务,请设置数据库实例参数“max_connections”的值。 表1 CPU:内存=1:4 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 2 8 2500 647 12936 请参见关于IOPS 4 16 5000 1556 31117 8 32 10000 2543 50867 16 64 18000 4006 80115 32 128 30000 5979 119575 64 256 60000 6463 129261 表2 CPU:内存=1:8 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 4 32 10000 1642 32849 请参见关于IOPS 8 64 18000 3102 62045 16 128 30000 5467 109349 64 512 100000 6484 129684
  • 测试数据 表1 测试列表 实例类型 Instance class CPU/Core Memory(GB) TPM TPS IOPS HA实例 2008 R2 企业版 2 8 300000 5500 4000 2008 R2 企业版 4 16 530000 9700 7000 2008 R2 企业版 8 32 930000 17050 15000 2008 R2 企业版 16 64 1250000 23000 20000 2008 R2 企业版 2 16 290000 5300 4000 2008 R2 企业版 4 32 540000 9900 7000 2008 R2 企业版 8 64 960000 17600 15000 2008 R2 企业版 16 128 1350000 24750 20000 单实例 2014 企业版、2014 标准版 4 16 550000 10083 7000 2014 企业版、2014 标准版 8 32 1100000 20166 16000 2014 企业版、2014 标准版 16 64 1500000 27500 22000 HA实例 2014 企业版、2014 标准版 4 32 500000 9000 7000 2014 企业版、2014 标准版 8 64 1000000 18333 16000 2014 企业版、2014 标准版 16 128 1400000 24000 21000 单实例 2014 WEB 4 16 550000 10000 6000 2014 WEB 8 32 1100000 20000 12000 2014 WEB 16 64 1500000 27000 18000
  • 测试工具 Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。通过内置的数据库测试模型,采用多线程并发操作来评估数据库的性能。了解Sysbench更多详情,请访问https://github.com/akopytov/sysbench。 本次测试使用的Sysbench版本为1.0.18,具体的安装命令如下: # wget -c https://github.com/akopytov/sysbench/archive/1.0.18.zip# yum install autoconf libtool mysql mysql-devel vim unzip# unzip 1.0.18.zip# cd sysbench-1.0.18# ./autogen.sh# ./configure# make# make install
  • 通用型实例测试列表 表1 CPU:内存=1:2 CPU(Core) 内存(GB) TPS QPS IOPS 1 2 185.21 3704.27 请参见关于IOPS 2 4 371.97 7439.43 4 8 821.00 16420.05 8 16 1517.95 30358.98 表2 CPU:内存=1:4 CPU(Core) 内存(GB) TPS QPS IOPS 2 8 431.72 8634.30 请参见关于IOPS 4 16 926.94 18538.85 8 32 1827.36 36547.27
  • 测试模型 表结构 CREATE TABLE `sbtest` (`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,`k` INTEGER UNSIGNED DEFAULT '0' NOT NULL,`c` CHAR(120) DEFAULT '' NOT NULL,`pad` CHAR(60) DEFAULT '' NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB 读写比 Sysbench默认提交的事务中包含18条SQL语句,具体执行语句和条数如下: 主键SELECT语句,10条: SELECT c FROM ${rand_table_name} where id=${rand_id}; 范围SELECT语句,4条: SELECT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end};SELECT SUM(K) FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end};SELECT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end} ORDER BY c;SELECT DISTINCT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end} ORDER BY c; UPDATE语句,2条: UPDATE ${rand_table_name} SET k=k+1 WHERE id=${rand_id}UPDATE ${rand_table_name} SET c=${rand_str} WHERE id=${rand_id} DELETE语句,1条: DELETE FROM ${rand_table_name} WHERE id=${rand_id} INSERT语句,1条: INSERT INTO ${rand_table_name} (id, k, c, pad) VALUES (${rand_id},${rand_k},${rand_str_c},${rand_str_pad})
  • 测试环境 区域:华北-北京一。 可用分区:可用区1。 弹性云服务器(Elastic Cloud Server,简称E CS ):规格选择通用计算型c3.2xlarge.2,8U16GB,操作系统镜像使用CentOS7.4 64位版本,详见图1。由于压测工具需要安装额外的编译工具,建议ECS绑定弹性IP。 图1 ECS配置 RDS for MySQL 8.0测试环境如下: 区域:西南-贵阳一。 可用分区:可用区1。 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择通用计算增强型 | c6.4xlarge.2 | 16vCPUs | 32GB,操作系统镜像使用CentOS 7.6 64bit位版本。由于压测工具需要安装额外的编译工具,建议ECS绑定弹性IP。
  • 独享型实例测试列表 表1 CPU:内存=1:2 CPU(Core) 内存(GB) TPS QPS IOPS 2 4 373.53 7470.64 请参见关于IOPS 4 8 748.80 14976.09 8 16 1563.35 31266.94 16 32 1873.68 37473.69 表2 CPU:内存=1:4 CPU(Core) 内存(GB) TPS QPS IOPS 2 8 472.01 9440.15 请参见关于IOPS 4 16 994.46 19889.28 8 32 1806.45 36129.18 16 64 2551.62 51032.43 表3 CPU:内存=1:8 CPU(Core) 内存(GB) TPS QPS IOPS 2 16 463.48 9269.67 请参见关于IOPS 4 32 1103.30 22065.92 8 64 1996.53 39930.74 16 128 3778.67 75573.89
  • 通用型实例测试列表 表1 CPU:内存=1:2 CPU(Core) 内存(GB) TPS QPS IOPS 1 2 172.88 3457.69 请参见关于IOPS 2 4 387.63 7752.63 4 8 823.89 16477.76 8 16 1538.08 30761.58 表2 CPU:内存=1:4 CPU(Core) 内存(GB) TPS QPS IOPS 2 8 461.22 9224.35 请参见关于IOPS 4 16 843.00 16860.02 8 32 1786.72 35734.52
  • 独享型实例测试列表 如下表中的“最大连接数(压力测试值)”是RDS性能压力测试的结果,对于真实运行业务,请设置数据库实例参数“max_connections”的值。 表1 CPU:内存=1:4 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 2 8 2500 621 12394 请参见关于IOPS 4 16 5000 1230 24608 8 32 10000 2514 50290 16 64 18000 3017 60337 32 128 30000 4368 87354 64 256 60000 4536 90729 表2 CPU:内存=1:8 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 4 32 10000 1488 29765 请参见关于IOPS 8 64 18000 2811 56216 16 128 30000 4095 81910 64 512 100000 4626 96824
  • 通用型实例测试列表 根据业务场景的不同,RDS for MySQL 8.0的测试结果可能会低于RDS for MySQL 5.7,属于正常现象。 如下表中的“最大连接数(压力测试值)”是RDS性能压力测试的结果,对于真实运行业务,请设置数据库实例参数“max_connections”的值。 表1 CPU:内存=1:2 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 2 4 1500 434 8679 请参见关于IOPS 4 8 2500 1363 27252 8 16 5000 2014 40280 表2 CPU:内存=1:4 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 2 8 2500 645 12899 请参见关于IOPS 4 16 5000 1428 28554 8 32 10000 2422 48445
  • 通用型实例测试列表 如下表中的“最大连接数(压力测试值)”是RDS性能压力测试的结果,对于真实运行业务,请设置数据库实例参数“max_connections”的值。 表1 CPU:内存=1:2 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 2 4 1200 375 7513 请参见关于IOPS 4 8 2200 973 19461 8 16 4200 1462 29256 12 24 6000 1909 38182 16 32 8600 2566 51325 24 48 13000 2764 55294 32 64 16000 2980 59608 48 96 22000 3334 66701 60 120 30000 3858 77180 表2 CPU:内存=1:4 CPU(Core) 内存(GB) 最大连接数(压力测试值) TPS QPS IOPS 2 8 2000 495 9918 请参见关于IOPS 4 16 4000 1020 20404 8 32 8000 2017 40342 12 48 12000 2628 52565 16 64 14400 2896 57938 24 96 21600 3061 61219 32 128 24000 3192 63853 48 192 36000 3528 70570
  • 独享型实例测试列表 表1 CPU:内存=1:2 CPU(Core) 内存(GB) TPS QPS IOPS 2 4 378.99 7579.83 请参见关于IOPS 4 8 838.37 16767.38 8 16 1577.04 31540.74 16 32 1850.72 37014.46 表2 CPU:内存=1:4 CPU(Core) 内存(GB) TPS QPS IOPS 2 8 465.93 9318.54 请参见关于IOPS 4 16 994.98 19899.65 8 32 1825.27 36505.56 16 64 2582.68 51653.81 表3 CPU:内存=1:8 CPU(Core) 内存(GB) TPS QPS IOPS 2 16 495.95 9919.00 请参见关于IOPS 4 32 1096.84 21936.72 8 64 1924.42 38488.57 16 128 3943.78 78875.96
  • 通用型实例测试列表 表1 CPU:内存=1:2 CPU(Core) 内存(GB) TPS QPS IOPS 1 2 176.26 3525.27 请参见关于IOPS 2 4 385.70 7713.97 4 8 784.54 15690.82 8 16 1560.41 31208.18 表2 CPU:内存=1:4 CPU(Core) 内存(GB) TPS QPS IOPS 2 8 429.02 8580.42 请参见关于IOPS 4 16 999.26 19985.14 8 32 1788.29 35765.97
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全