AWS 推出的 Lightsail Database 是目前比较实惠的托管 DB 方案。不过相对来说,Lightsail 的控制面板功能较少,很多参数无法修改。经过搜索发现,其实我们有很多参数可以调,只是需要通过命令行的方式来调整。
准备工作
安装 aws-cli 工具
https://aws.amazon.com/cli/
https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-how-to-set-up-and-configure-aws-cli
Linux:
sudo apt-get install awscli
MacOS:
brew install awscli
Python(通用):
pip install awscli
设置 Access Key
https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-how-to-set-up-access-keys-to-use-sdk-api-cli
先在 AWS 控制台新建用户或 Key:
https://console.aws.amazon.com/iam/home#/users
然后执行:
aws configure
按照提示依次输入:
AWS Access Key ID 控制台中创建的 Key AWS Secret Access Key 控制台中创建的 Key 对于的 Secret Default region name 可用区,https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html Default output format 输出格式,建议 json
获取现有设置
aws lightsail get-relational-database-parameters --relational-database-name DatabaseName > current_params.json
注意 DatabaseName 替换为创建 DB 时设置的名称。就是 Lightsail 控制面板里显示的那个。
执行成功后打开 json 文件,可以看到所有变量。
注意每个变量有几个属性:
Allowed values 允许的变量范围 Apply method 变量的生效时间。immediate 表示立即生效,pending-reboot 表示重启后生效 Apply type 底层引擎支持的生效方式。dynamic 动态,可以立即生效,static 静态,必须重启后才能生效 Data type 数据类型 Description 变量描述 Is modifiable 能否修改 Parameter name 变量名
这里我们用最大连接数举例:
{ "allowedValues": "1-100000", "applyMethod": "pending-reboot", "applyType": "dynamic", "dataType": "integer", "description": "The number of simultaneous client connections allowed.", "isModifiable": true, "parameterName": "max_connections", "parameterValue": "{DBInstanceClassMemory/12582880}" }
可以看到,最大连接数是一个动态变量,整型,可修改。默认是实例内存大小/12582880,也就是 1G 内存约 80 个链接。实际比这个数值少,没有具体深究。
修改设置
找到了对于的参数,就可以修改了。修改参数使用的指令是:
aws lightsail update-relational-database-parameters --relational-database-name DatabaseName --parameters "parameterName=ParameterName,parameterValue=NewParameterValue,applyMethod=ApplyMethod"
DatabaseName 是实例名,ParameterName 替换为要修改的变量,NewParameterValue 替换为变量的值,ApplyMethod 替换为想要的生效方式。
比如,我们修改最大连接数到 1000,重启后生效,对应的命令为:
aws lightsail update-relational-database-parameters --relational-database-name DatabaseName --parameters "parameterName=max_connections,parameterValue=1000,applyMethod=pending-reboot"
成功后会收到这样的响应:
{ "operations": [ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "resourceName": "DatabaseName", "resourceType": "RelationalDatabase", "createdAt": 1570000000.000, "location": { "availabilityZone": "ap-northeast-1a", "regionName": "ap-northeast-1" }, "isTerminal": true, "operationDetails": "", "operationType": "UpdateRelationalDatabaseParameters", "status": "Succeeded", "statusChangedAt": 1570000000.000 } ] }
看到 status Succeeded 就是设置成功啦!
官方文档:
https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-updating-database-parameters