Amazon Lightsail更新数据库参数报InvalidInputException如何解决
报错根因
执行CLI返回InvalidInputException由以下两类问题触发:
- 字段值拼写错误:
applyMethod仅支持immediate(即时生效)、pending-reboot(重启生效)两个合法值,你命令中填写的inmediate为拼写错误,属于非法输入,会直接触发参数校验失败。 - 参数值超出合法范围:你设置的
sort_buffer_size=5556000000(约5.2GB)超过了Lightsail数据库实例对应规格的参数上限。Lightsail托管数据库对内存类参数设置了严格阈值,禁止设置超过实例预留内存上限的参数值,否则会直接拦截请求。
解决步骤
- 先查询目标数据库的参数规则,执行如下命令获取所有参数的合法配置要求:
aws lightsail get-relational-database-parameters --relational-database-name bai
在返回结果中定位sort_buffer_size字段,确认两个核心信息:
allowedValues:该参数允许的取值区间applyType:参数类型为dynamic时支持即时生效,参数类型为static时必须重启实例才能生效
- 修正命令中的拼写错误,同时将
sort_buffer_size调整到合法取值区间内。注意sort_buffer_size是会话级独占内存参数,高并发场景下过大会直接耗尽实例内存,通用业务场景设置为256KB-2MB即可,不要配置GB级数值。修正后的参考命令如下(参数为动态类型时使用):
aws lightsail update-relational-database-parameters --relational-database-name bai --parameters "parameterName=sort_buffer_size,parameterValue=2097152,applyMethod=immediate"
- 如果查询到
sort_buffer_size为静态参数,将命令中applyMethod的值替换为pending-reboot,执行命令后在Lightsail控制台重启对应数据库实例,参数即可生效。
补充:迁移本地数据库到云托管数据库时,不要直接照搬本地自建库的参数配置,云托管服务对部分内核参数有固定的规格适配规则,照搬大内存参数配置很容易触发资源校验拦截或者运行时故障。
内容的提问来源于stack exchange,提问作者Luis Miguel Molina Betancourt
相关产品推荐
相关产品推荐

