云服务器内容精选

  • 测试工具 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
  • 测试模型 表结构 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。 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择通用计算型c3.2xlarge.2,8U16GB,操作系统镜像使用CentOS7.4 64位版本,详见图1。由于压测工具需要安装额外的编译工具,建议ECS绑定弹性IP。 图1 ECS配置 RDS for PostgreSQL 12,RDS for PostgreSQL 13测试环境如下: 区域:华北-北京四 可用分区:可用区1 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择通用计算增强型 | c6.4xlarge.2 | 16vCPUs | 32GB,操作系统镜像使用CentOS 7.6 64bit位版本。由于压测工具需要安装额外的编译工具,建议ECS绑定弹性IP。
  • 测试工具 Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。通过内置的数据库测试模型,采用多线程并发操作来评估数据库的性能。了解Sysbench更多详情,请访问https://github.com/akopytov/sysbench。 本次测试使用的Sysbench版本为1.0.12,具体的安装命令如下: #wget -c https://github.com/akopytov/sysbench/archive/1.0.12.zip #yum install make automake libtool pkgconfig libaio-devel postgresql-devel #unzip 1.0.12.zip #cd sysbench-1.0.12 #./autogen.sh #./configure --with-pgsql --without-mysql #make #make install RDS for PostgreSQL 12,RDS for PostgreSQL 13测试工具如下: Sysbench版本:1.0.18
  • 测试模型 表结构 CREATE TABLE `sbtest` ( `id` INTEGER IDENTITY(1,1) NOT NULL, `k` INTEGER DEFAULT '0' NOT NULL, `c` CHAR(120) DEFAULT '' NOT NULL, `pad` CHAR(60) DEFAULT '' NOT NULL, PRIMARY KEY (`id`) ) 读写比 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})
  • 响应消息 正常响应要素说明 表2 要素说明 名称 参数类型 说明 recovery_min_time String 参数解释: 恢复时间窗左边界(不包含)。 取值范围: 不涉及。 recovery_max_time String 参数解释: 恢复时间窗右边界(包含)。 取值范围: 不涉及。 正常响应样例 { "recovery_min_time" : "2024-08-17 19:17:35+10", "recovery_max_time" : "2024-08-20 22:53:28+10" } 异常响应 请参见异常请求结果。
  • URI URI格式 GET /v3/{project_id}/instances/{instance_id}/recovery-time 参数说明 表1 参数说明 名称 是否必选 说明 project_id 是 参数解释: 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 约束限制: 非空。 取值范围: 不涉及。 默认取值: 不涉及。 instance_id 是 参数解释: 实例ID。 约束限制: 非空。 取值范围: 不涉及。 默认取值: 不涉及。
  • 解决方案 使用rdsuser账号手动授予新账号的msdb库的public权限。具体操作如下: 方式一: 使用S SMS 工具,以rdsuser账号登录实例。 在新账号(newlogin)上右键单击,查看属性。 在“User Mapping”中勾选msdb库,查看下面勾选了public角色,单击“OK”。 图3 授予public权限 再次尝试使用新账号(newlogin)登录实例,则不会出现报错。 方式二: 使用DAS,以rdsuser账号登录实例。 执行以下SQL授予msdb库权限。SQL中待授权账号以newlogin为例。 USE [msdb] GO CREATE USER [newlogin] FOR LOG IN [newlogin] GO 再次尝试使用新账号(newlogin)登录实例,则不会出现报错。
  • 场景描述 用户将RDS for MySQL的“lower_case_table_names”设置成“大小写敏感”的状态时,创建了带有大写字母的表,如“tbl_newsTalking”,但后期改变了大小写敏感的设置状态后,无法找到该表。 案例:在执行备份恢复到新实例的时候,如果新实例的“大小写敏感”参数值与备份时原实例的参数值不一致,会导致恢复失败。 更多敏感参数,请参见《云数据库RDS用户指南》中“RDS for MySQL参数调优建议”的内容。 对于MySQL 5.6、5.7版本,支持在管理控制台或API创建数据库实例时指定表名大小写敏感,以及实例创建完成后设置表名大小写敏感(lower_case_table_names)。 对于MySQL 8.0版本,仅支持在管理控制台或API创建数据库实例时指定表名大小写敏感,创建完成的MySQL 8.0实例不支持设置表名大小写敏感(lower_case_table_names)。
  • 测试步骤 创建4张表,表结构如下: CREATE TABLE if not exists users ( `rid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `nid` bigint(20) DEFAULT NULL, `level` int(11) DEFAULT NULL, `vip` int(11) DEFAULT NULL, `vip_exp` int(11) DEFAULT NULL, `reg_channel` int(11) DEFAULT NULL, `guild_id` bigint(20) unsigned DEFAULT '0', `guild_open` tinyint(1) DEFAULT '0', `forbid_login_time` bigint(20) DEFAULT NULL, `forbid_talk_time` bigint(20) DEFAULT NULL, `ctime` bigint(20) DEFAULT NULL, `mtime` datetime(3) DEFAULT NULL, `last_offline_time` bigint(20) DEFAULT NULL, `friend_open` tinyint(1) DEFAULT '0', `user_data_str` mediumblob, `name` varchar(64) DEFAULT NULL, `db_fix_version` int(10) DEFAULT '0', PRIMARY KEY (`rid`), KEY `idx_users_99_nid` (`nid`), KEY `idx_users_99_level` (`level`), KEY `idx_users_99_ctime` (`ctime`), KEY `idx_users_99_mtime` (`mtime`), KEY `idx_users_99_last_offline_time` (`last_offline_time`), KEY `idx_users_99_name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=4393751571200 DEFAULT CHARSET=utf8mb4; 分别给每张表插入3000万行数据。 使用MySQL原生copy算法在表1中添加一列,并在执行过程中建立新会话执行select,update,insert操作10万条数据。 使用MySQL原生inplace算法在表2添加一列,并在执行过程中建立新会话执行select,update,insert操作10万条数据。 使用gh-ost工具在表3中添加一列,并在执行过程中建立新会话执行select,update,insert操作10万条数据。 记录DDL和DML语句执行时间。 表1 测试数据(单位:s) 执行操作 MySQL Copy MySQL Inplace gh-ost 增加一列 1294.29 755.52 1876.79 select 1.35 1.29 1.29 update 1266.78 0.19 0.11 insert 1296.19 7.47 4.49
  • 操作场景 RDS for MySQL云盘实例支持存储空间自动扩容,在实例存储空间达到阈值时,会触发自动扩容。 只读实例设置自动扩容与主实例自动扩容互不影响,因此,您需要单独为只读实例设置扩容,以满足业务需求。对只读实例设置自动扩容时,您可选择大于或等于主实例的存储空间。 设置存储空间自动扩容有两种方式: 创建实例时设置存储空间自动扩容。详情请参见购买RDS for MySQ L实例 。 创建实例后设置存储空间自动扩容。本章节介绍创建实例后如何设置存储空间自动扩容。
  • 约束限制 账户余额大于等于0元,才可设置自动扩容。 实例状态为“正常”和“存储空间满”时可以进行扩容。 仅支持RDS for MySQL云盘实例,即存储类型为SSD云盘或极速型SSD。存储类型介绍请参见数据库实例存储类型。 云数据库 RDS for MySQL实例最大可自动扩容至4000GB。 如果是主备实例,针对主节点设置自动扩容时,会同时对其备节点生效。 实例在进行规格变更、内核小版本升级、备机迁移、重启时,不能进行此操作。 包周期实例存在未完成订单时,不会自动扩容。
  • 约束限制 账户余额大于等于0元,才可恢复到新实例。新实例将作为用户新创建的实例进行收费。 请勿在RDS for MySQL实例的生命周期内执行“reset master”命令,以免造成恢复到指定时间点功能异常。 存储类型的限制: SSD云盘实例只能恢复到云盘,不支持恢复到本地SSD盘实例。 本地SSD盘实例只能恢复到本地SSD盘主备实例或者SSD云盘,不支持恢复到本地SSD盘单机实例。 恢复到新实例时,原实例备份存在大事务有可能会导致恢复失败,如果恢复失败请联系客服处理。 恢复到当前实例的限制: 恢复到当前实例会导致实例数据被覆盖,且恢复过程中实例将不可用。 本地SSD盘实例不支持恢复到当前实例。 恢复到已有实例的限制: 恢复到已有实例会导致实例数据被覆盖,且恢复过程中实例将不可用。 只可选择与原实例相同引擎,相同版本或高版本的实例。 请确保目标实例的存储空间大于或等于当前实例的存储空间,否则会导致任务下发失败。 本地SSD盘实例不支持恢复到已有实例。 如果实例启用了“SQL限流”功能,不同恢复场景的限制如下: 恢复到新实例:5.7版本原有的SQL限流规则都会失效,5.6和8.0会保留原实例的限流规则。 恢复到当前实例:当前实例的SQL限流规则都会恢复到备份所在的时间点。 恢复到已有实例:5.7版本目标实例的SQL限流规则全部失效,5.6和8.0原实例的规则会覆盖目标实例规则。
  • 功能说明 表1 功能说明 类别 说明 恢复范围 恢复整个实例。 恢复后实例数据 恢复后实例数据与用于恢复的“全备文件+增备文件”中的数据一致。 恢复到新实例会为用户重新创建一个和该时间点数据相同的实例。 恢复到当前实例和已有实例会导致实例数据被覆盖。 恢复的时间点 可以恢复到全量备份保留时间内,最早的一个全量备份之后的任意时间点内的数据。 恢复类型 恢复到新实例 恢复到当前实例 恢复到已有实例(非原实例) 恢复到新实例各配置项 新实例的数据库引擎和数据库版本,自动与原实例相同。 其他参数需要重新配置。 恢复时长 恢复时长和实例的数据量有关,平均恢复速率为80MB/s。