云服务器内容精选
-
解决方案 随着业务数据的增加,原来申请的数据库磁盘容量可能会不够用,您需要为云数据库RDS实例进行扩容。 针对数据空间过大,可以删除无用的历史表数据进行释放空间(DROP或TRUNCATE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间);如果没有可删除的历史数据,需要进行磁盘扩容。 针对大量排序查询导致的临时文件过大,建议进行优化SQL查询。 应用中存在大量的排序查询,产生了大量的临时文件。 短期内大量增、删、改,产生大量binlog文件WAL日志占用空间。 由于大量的事务和写入操作产生了大量的binlog日志文件。 云监控服务 目前可以监控存储空间的大小、使用量、利用率等,并且设置告警策略。
-
解决方案 随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,建议用户扩容磁盘空间,确保磁盘空间足够。 如果原有规格的磁盘已是最大,请先升级规格。 云盘实例可以设置存储空间自动扩容,在实例存储空间达到阈值时,会触发自动扩容。 针对数据空间过大,可以删除无用的历史表数据。 如果实例变为只读状态,您需要先新建工单,联系客服解除只读状态;如果实例非只读状态,则可以直接执行删除操作。 查看物理文件大小Top50库表,识别可以删除的历史表数据,具体操作请参见容量预估。 可在业务低峰期对碎片率高的表执行optimize优化,以便释放空间: 清理整张表使用DROP或TRUNCATE操作;删除部分数据,使用DELETE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间。 如果是RDS for MySQL Binlog日志文件占用过多,可以清理本地Binlog日志,来释放磁盘空间。 针对大量排序查询导致的临时文件过大,建议优化SQL查询。 查询数据库慢SQL和Top SQL,分析数据量大,行数多,响应时间长的SQL语句,并进行优化。 您还可以订阅实例健康日报来获取SQL及性能分析结果,包括慢SQL分析、全量SQL分析、性能 & 磁盘分析、性能指标趋势图,当发生风险点时及时收到诊断报告。 具体操作请参见诊断日报。
-
哪些内容会占用用户所购买的RDS实例空间 用户正常的数据(不包括备份数据),以及云数据库RDS实例正常运行所需的数据(比如系统数据库、数据库回滚日志、重做日志WAL日志、索引等)。磁盘空间会有必要的文件系统开销,这些开销主要包括inode、reserved block,以及数据库运行必需的空间。同时,包含如下云数据库RDS的必要日志文件: RDS for MySQL数据库产生的Binlog日志。 RDS for MariaDB数据库产生的Binlog日志。 RDS for PostgreSQL数据库服务器产生的日志文件。 RDS for SQL Server数据库产生的日志文件(RDS for SQL Server日志、默认的Trace文件和代理日志文件等)。 这些文件保证云数据库RDS实例正常稳定地运行。 父主题: 资源及磁盘管理
-
约束限制 本章节仅使用从华为云RDS for MySQL 5.6、5.7、8.0版本实例下载的全量备份文件在本地恢复到对应版本自建数据库,不包括增量备份的恢复操作。 自建MySQL数据库内核小版本需与华为云RDS for MySQL版本号一致。 通过mysql -V或mysqld --version命令,可以查看MySQL内核版本。 仅支持恢复到本地为Linux操作系统的数据库。 由于开源备份工具目前仅支持x86包,不支持ARM,因此,不支持ARM的E CS 自建库使用本章操作进行备份文件恢复。您可以使用DRS迁移或数据导出导入的方式,具体请参见数据迁移。 全量备份文件恢复到自建数据库将使用以下三个软件: MySQL数据库 qpress工具 Percona XtraBackup工具 请使用对应版本工具,否则将无法恢复成功。 表1 版本对应关系 数据库 qpress Percona XtraBackup MySQL 8.0 qpress 7 XtraBackup 8.0.0及以上版本 MySQL 5.7、MySQL 5.6 qpress 7 XtraBackup 2.4.9及以上版本 在进行恢复阶段请勿在本地自建数据库运行其他业务。
-
约束限制 表1 约束限制 阶段 限制说明 变更前 如需变更存储类型,请联系客服申请。 实例状态为“正常”时可以变更存储类型。 变更存储类型时,磁盘性能可能会发生变化,请在业务低峰期进行变更,避免对高峰期业务造成影响。 变更后若主实例和只读的存储类型不一致,可能会影响数据同步速度,建议先变更只读,并最终保持只读实例和主实例存储类型一致。 变更中 变更存储类型可能需要数分钟乃至数小时,在某些情况下可能会更长,具体时间视存储类型变配时的吞吐量、存储空间大小、原存储类型及变更后类型而定。 变更后 在极少数情况下,可能会由于后台资源问题导致变更失败,如此问题发生,请稍后重试。 变更存储类型仅支持升配操作,不支持反向降配,详情如表2所示。 表2 存储类型列表 实例类型 原存储类型 目标存储类型 主备 高可用只读 SSD云盘 可以变更为极速型SSD 主备 本地SSD盘 可以变更为SSD云盘、极速型SSD 高可用只读 本地SSD盘 不支持变更为SSD云盘、极速型SSD
-
计费说明 表3 计费说明 计费模式 变更操作 对费用的影响 包年/包月 变更存储类型 变更后,新存储类型将在原来已有的时间周期内生效。 补交差价:新配置价格高于老配置价格,结合使用周期内的剩余时间,客户需要支付新老配置的差价。 退回差价:新配置价格低于老配置价格,结合使用周期内的剩余时间,华为云会将新老配置的差价退还给客户。 例如:(以下价格仅作示例,实际价格以控制台显示为准) 客户于2024/8/1在华北-北京四购买规格为通用型 2vCPUs 4GB的RDS for MySQL 8.0主备实例,SSD云盘存储,存储空间40GB,购买周期为一个月。此时实例价格为470元/月。 客户在2024/8/15将存储类型变更为极速型SSD,实例价格为534元/月。 配置费用 = 新配置价格 x 剩余周期 - 旧配置价格 x 剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。 本示例中,剩余周期=15(8月份剩余未使用天数)/ 30(8月份最大天数)= 0.5,代入公式可得配置费用 = 534 x 0.5 - 470 x 0.5 = 32元 按需计费 变更存储类型 变更后,新存储类型按小时计费。具体可在价格计算器中鼠标悬停在价格上,查看“存储空间”的价格。
-
视图接口说明 表3 视图接口说明 序号 视图 列 说明 1 rds_pg_sql_ccl.get_all_enabled_rule dbid oid, queryid bigint, max_concurrency int, max_wait int 查看所有生效的限流规则。 2 rds_pg_sql_ccl.get_activity_query_status queryid bigint, wait_start_time timestamptz, pid int, dbid oid 查看当前实例每个SQL的运行状态(queryid,是否等待等)。 3 rds_pg_sql_ccl.get_current_db_ccl_rule rule_id bigint, query_id bigint , query_string, max_concurrency int, max_waiting int, search_path text, create_time timestamptz, enabled bool 查看当前数据库创建的限流规则(不一定生效)。
-
绑定变量的SQL限流 JDBC等驱动支持prepare statement,对参数化SQL进行预编译,在输入参数后实际执行SQL。在pg_stat_statements视图中会以绑定变量的方式呈现。对于参数是绑定变量的SQL,内核计算的query id值与参数为实际值的SQL不一致,因此无法直接通过添加SQL语句方式进行限流。 对于这类SQL而言,只能通过实际执行后手动添加的方式进行限流。 首先实际执行一次带绑定变量的SQL,这样内核会计算其query id。基于JDBC的prepare statement程序示例如下: String sql = "select pg_sleep(?);"; PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.setInt(1, 500); ResultSet resultSet = preparedStatement.executeQuery(); 而后在pg_stat_statements视图可以查询到该SQL的query id。 select queryid from pg_stat_statements where query like '%select pg_sleep%'; 通过查询到的query id添加限流规则。 select rds_pg_sql_ccl.add_ccl_rule_by_queryid($queryid); 通过上一条SQL的返回值(rule_id)使该规则生效。 select rds_pg_sql_ccl.enable_ccl_rule($rule_id); 从插件提供的get_all_enabled_rule视图可以获取到当前所有生效的限流规则。 select * from rds_pg_sql_ccl.get_all_enabled_rule;
-
函数接口说明 表2 函数接口说明 序号 函数名 参数 返回值 功能 1 rds_pg_sql_ccl.get_query_id query_string text, search_path text default 'public' queryid 计算SQL的queryid。 2 rds_pg_sql_ccl.add_ccl_rule_by_query query_string text, max_concurrency int default 0, max_waiting int default 0, search_path text default 'public' ruleid 通过SQL语句添加限流规则。 3 rds_pg_sql_ccl.add_ccl_rule_by_queryid query_id bigint, max_concurrency int default 0, max_waiting int default 0, search_path text default 'public' ruleid 通过queryid添加限流规则。 5 rds_pg_sql_ccl.enable_ccl_rule rule_id bigint bool 通过ruleid让限流规则生效。 6 rds_pg_sql_ccl.disable_ccl_rule rule_id bigint bool 通过ruleid让限流规则失效。 7 rds_pg_sql_ccl.disable_all_ccl_rule - void 让所有限流规则失效。 8 rds_pg_sql_ccl.delete_ccl_rule rule_id bigint void 通过ruleid删除限流规则。 9 rds_pg_sql_ccl.update_ccl_rule new_rule_id bigint, new_max_concurrency int, new_max_waiting int void 通过ruleid更新限流规则。 部分参数说明: max_concurrency:最大并发数,并发执行该类型SQL的最大数量。 max_wait:最大等待时间,达到最大并发数之后,该类型的新SQL的最大等待时间,超过这个时间,则执行失败。 new_max_concurrency:新的最大并发数。 new_max_wait:新的最大等待时间。
-
创建规则 同一个数据库中,不能创建重复(query id相同)的限流规则;不同的数据库中,可以创建重复的限流规则。 规则创建后不会立刻生效,需要调用enable_ccl_rule函数让规则生效。 get_query_id函数获取不到绑定变量的SQL的queryid,add_ccl_rule_by_query限制不了绑定变量SQL。 绑定变量SQL的queryid可以通过pg_stat_statements插件获取,之后可以通过add_ccl_rule_by_queryid创建规则,可参考后续绑定变量SQL限流。
-
简介 高并发和消耗资源过多的SQL会导致实例不稳定,对此,RDS for PostgreSQL提供了限流能力,是由华为云自研插件rds_pg_sql_ccl实现,其中ccl是concurrent control的缩写,合理地使用SQL限流可以保障实例的稳定性,可以很好地做到性能优化和资源保护,应对的场景有: 业务量突增:通过限制某类SQL的执行保障实例的稳定性。 保障核心任务:通过限制其他SQL的执行从而降低资源的消耗保障核心任务的顺利完成。 该插件提供了两种限流方式: 方式1: 限制同一时刻同时执行SQL数量( 由rds_pg_sql_ccl.max_concurrent_sql参数控制,默认值为-1,即不限制)。 方式2: 限制某一类SQL(query id相同)同一时刻并发执行的数量,由限流规则控制,限流规则见下文。
-
支持的版本 PostgreSQL16.2, 15.4, 14.8, 13.11, 12.15, 11.20及以上的最新小版本支持该插件。可通过以下SQL语句查询当前实例是否支持该插件: SELECT * FROM pg_available_extension_versions WHERE name = 'rds_pg_sql_ccl'; 如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。 RDS for PostgreSQ L实例 支持的插件,具体可参见支持的插件列表。
-
修订记录 发布日期 修改说明 2024-09-19 第二十次正式发布,包含以下内容: 新增RDS for PostgreSQL实例inodes过多导致数据库重启缓慢。 2024-08-13 第十九次正式发布,包含以下内容: 新增RDS for SQL Server新建登录账号登录实例报错。 2024-06-19 第十八次正式发布,包含以下内容: 新增RDS for PostgreSQL数据库已有连接执行业务时报错。 2024-05-10 第十七次正式发布,包含以下内容: 新增MySQL表级时间点恢复时提示密钥失效或已删除。 2024-02-19 第十六次正式发布,包含以下内容: 新增通过DAS授权或取消授权时报错Your password does not satisfy the current policy requirements。 2023-12-27 第十五次正式发布,包含以下内容: 新增ibdata1为什么会变大。 2023-12-13 第十四次正式发布,包含以下内容: 新增RDS for MySQL插入数据提示Data too long for column。 新增RDS for MySQL慢日志里面有毫秒级别的SQL。 新增RDS for PostgreSQL通过应用程序访问数据库时提示不支持身份验证。 2023-10-27 第十三次正式发布,包含以下内容: 新增本地SSD盘规格降配选不到资源。 新增无主键表添加自增主键后导致主备节点查询数据不一致。 新增通过DAS登录实例报错Client does not support authentication protocol requested by server。 新增SQL诊断结果中记录的行数远小于慢日志中的扫描行数。 2023-09-13 第十二次正式发布,包含以下内容: 新增MySQL主备复制延迟场景及解决方案。 新增购买RDS实例报错:无 IAM 的agency相关权限。 2023-08-02 第十一次正式发布,包含以下内容: 新增RDS for MySQL Binlog生成的机制。 新增RDS for MySQL 5.6版本实例创建表报错。 2023-06-30 第十次正式发布,包含以下内容: 新增RDS for MySQL Binlog生成的机制。 新增RDS for MySQL如何定位一直存在的长事务告警。 新增RDS for MySQL部分SQL的commit时间偶现从几毫秒陡增到几百毫秒。 新增RDS for MySQL在分页查询时报错:Out of sort memory, consider increasing server sort buffer size。 新增RDS for MySQL创建用户报错:Operation CREATE USER failed。 新增RDS for MySQL使用grant授权all privileges报语法错误。 新增购买RDS实例支付报错:Policy doesn't allow bss:order:update to be performed。 新增RDS for MySQL是否可以修改数据库名称。 新增RDS for PostgreSQL有大量owner是rdsadmin的schema怎么删除。 新增RDS for PostgreSQL数据库创建索引时索引名可以包含schema名。 2022-09-09 第九次正式发布,包含以下内容: 新增RDS for MySQL全备恢复到本地提示无super权限。 新增备份期间DDL操作导致备份失败。 新增手动下发全量备份比自动下发全量备份时间长。 新增mysqldump导出数据报错权限不足。 新增MySQL主备复制原理简介。 新增主备复制延迟持续增长后自动恢复。 新增MySQL主备复制延迟场景及解决方案。 新增主备复制时延瞬间飚高回落。 新增canal工具报错权限不足。 新增canal解析Binlog报错。 新增控制台上修改long_query_time参数后未生效。 新增GROUP_CONCAT结果不符合预期。 新增RDS MySQL timeout相关参数简介。 新增命令行修改MySQL global参数失败。 新增CPU使用率高问题排查与优化。 新增内存使用超限风险与优化。 新增磁盘性能带宽超上限。 新增联合索引设置不当导致慢SQL。 新增数据库磁盘满导致被设置read_only。 新增Binlog未清理导致磁盘占用高。 新增业务死锁导致响应变慢。 新增MySQL只读实例磁盘占用远超主实例。 新增RDS for MySQL CPU升高定位思路。 新增冷热数据问题导致sql执行速度慢。 新增CPU/内存配置与TPS和QPS性能相关的问题。 新增表碎片率过高可能导致的问题。 新增复杂查询造成磁盘满。 新增长事务导致规格变更或小版本升级失败。 新增长事务导致UNDO增多引起磁盘空间满。 新增更新emoji表情数据报错Error 1366。 新增索引长度限制导致修改varchar长度失败。 新增建表时timestamp字段默认值无效。 新增自增属性AUTO_INCREMENT为什么未在表结构中显示。 新增存储过程和相关表字符集不一致导致执行缓慢。 新增RDS MySQL报错ERROR [1412]的解决方法。 新增创建二级索引报错Too many keys specified。 新增存在外键的表删除问题。 新增distinct与group by优化。 新增字符集和字符序的默认选择方式。 新增MySQL创建用户提示服务器错误。 新增delete大表数据后,再次查询同一张表时出现慢SQL。 新增设置事件定时器后未生效。 新增为什么有时候用浮点数做等值比较查不到数据。 新增开通数据库代理后有大量select请求分发到主节点。 新增连接数据库报错Access denied。 新增mariadb-connector SSL方式连接数据库失败。 新增RDS for MySQL建立连接慢导致客户端超时报connection established slowly。 新增root账号的ssl_type修改为ANY后无法登录。 新增客户端TLS版本与RDS for MySQL不一致导致SSL连接失败。 新增使用root账号连接数据库失败。 新增客户端超时参数设置不当导致连接超时退出。 新增istio-citadel证书机制导致每隔45天出现断连。 新增慢日志显示SQL语句扫描行数为0。 新增审计日志上传策略说明。 新增自增字段取值。 新增表的自增AUTO_INCREMENT初值与步长。 新增表的自增AUTO_INCREMENT超过数据中该字段的最大值加1。 新增自增字段值跳变的原因。 新增修改表的自增AUTO_INCREMENT值。 新增自增主键达到上限,无法插入数据。 新增空用户的危害。 新增pt-osc工具连接RDS for MySQL主备实例卡住。 2022-01-17 第八次正式发布,包含以下内容: 新增RDS for SQL Server规格变更或主备切换失败。 新增RDS for SQL Server如何解除和重建复制关系。 2021-05-21 第七次正式发布,包含以下内容: 新增RDS for SQL Server数据库恢复到新实例后新建用户,提示用户已存在的解决方法。 新增怎么解决执行mysqldump出现SET @@SESSION.SQL_ LOG _BIN等SQL的问题。 新增执行RENAME USER失败的解决方法。 新增表字段类型转换失败的解决方法。 新增RDS for MySQL数据库报错ERROR [1412]的解決方案。 新增RDS for MySQL创建索引失败报错[ERROR] 1071的解決方案。 新增有外键的表无法删除报错ERROR[1451]的解决方案。 新增RDS for MySQL数据库修改authentication_string字段为显示密码后无法登录。 2020-09-15 第六次正式发布,包含以下内容: 新增RDS for MySQL备份 任务失败分析思路。 新增如何将华为云上或本地的数据库备份文件恢复到RDS实例。 2020-05-30 第五次正式发布,包含以下内容: 优化RDS for MySQL大小写参数敏感类问题。 2020-04-10 第四次正式发布,包含以下内容: 新增RDS for MySQL创建表失败报错Row size too large的解决方案。 2019-11-30 第三次正式发布,包含以下内容: 新增磁盘空间满导致自动增量备份失败。 新增下载备份文件在本地恢复,登录密码错误。 2019-09-30 第二次正式发布,包含以下内容: 新增RDS for MySQL数据库报错Native error 1461的解决方案。 新增RDS for MySQL升级版本后,导致现有配置无法正常连接到MySQL-server。 新增RDS for MySQL在启用了SSL验证连接功能后,导致代码(php/java/python)等连接数据库失败。 2019-08-15 第一次正式发布。
-
场景一 场景描述 使用RDS for PostgreSQL数据库时,业务执行大量复杂SQL,造成临时文件堆积,内存耗尽发生OOM,数据库重启过程非常缓慢,导致业务较长时间不可用。 原因分析 由于业务执行复杂SQL,如果SQL中涉及排序、Hash join、聚合等操作,超过配置work_mem参数大小时,会生成临时文件。大量执行这样的SQL,在发生OOM时,数据库进程被OS杀掉,此时内核不会对临时文件进行清理,从而导致临时文件的堆积。过多的临时文件会拖慢数据库启动,这是因为在PostgreSQL数据库进程启动时,需要删除所有之前产生的所有临时文件,如果存在大量临时文件堆积,将导致数据库启动缓慢。 解决方案 建议业务侧优化SQL,或适当调大work_mem参数值(会增加内存占用),减少临时文件生成。
-
场景二 场景描述 使用RDS for PostgreSQL数据库时,业务创建了大量的表。某一时间连接数与业务量激增,数据库进程内存耗尽发生OOM,从而导致数据库重启,但重启过程非常缓慢,导致业务较长时间不可用。 原因分析 由于数据库发生了OOM进而导致进程重启,在启动时会进入故障恢复模式,这时内核进程会遍历所有表并做fsync(将os缓存内容刷新至磁盘),如果业务创建的表对象过多,在启动时便会消耗大量时间进行遍历,从而导致数据库启动缓慢,影响业务可用性。 解决方案 建议业务侧限制创建表的数量,单实例表数量最好不超过2万,单库表数量最好不超过4千,详见实例使用规范。 建议业务侧配置内存监控,必要时扩充内存规格,尽量避免OOM发生。同时关注inode数监控指标,控制创建的对象数量。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格