![](/img/trans.png)
[英]How to copy all the data from one redshift cluster to another redshift cluster
[英]How to copy redshift cluster parameter group workload management settings from existing one?
有没有办法从现有的 Redshift 工作负载管理设置中复制?
我的 redshift 参数组中有一个复杂的 WLM 配置,我想将其复制到另一个配置中。 手动执行很容易出错。 有没有办法自动复制它?
这是我从 Redshift 控制台的 WLM 配置页面复制的 WLM 配置 JSON:
[
{
"query_group": [
"defaulton",
"lab4on"
],
"query_group_wild_card": 0,
"user_group": [],
"user_group_wild_card": 0,
"concurrency_scaling": "off",
"priority": "normal",
"queue_type": "auto",
"auto_wlm": true
},
{
"query_group": [
"lab1",
"lab2",
"lab3normal",
"lab4off",
"lab5",
"lab6reads",
"defaultoff"
],
"query_group_wild_card": 0,
"user_group": [],
"user_group_wild_card": 0,
"concurrency_scaling": "off",
"priority": "normal",
"queue_type": "auto",
"auto_wlm": true
},
{
"query_group": [
"lab3highest"
],
"query_group_wild_card": 0,
"user_group": [],
"user_group_wild_card": 0,
"concurrency_scaling": "off",
"priority": "highest",
"queue_type": "auto",
"auto_wlm": true
},
{
"query_group": [
"lab3lowest"
],
"query_group_wild_card": 0,
"user_group": [],
"user_group_wild_card": 0,
"concurrency_scaling": "off",
"priority": "lowest",
"queue_type": "auto",
"auto_wlm": true
},
{
"query_group": [
"lab6writes"
],
"query_group_wild_card": 0,
"user_group": [],
"user_group_wild_card": 0,
"concurrency_scaling": "off",
"priority": "highest",
"queue_type": "auto",
"auto_wlm": true
},
{
"query_group": [],
"query_group_wild_card": 0,
"user_group": [],
"user_group_wild_card": 0,
"priority": "normal",
"queue_type": "auto",
"auto_wlm": true
},
{
"short_query_queue": false
}
]
我可以按照以下步骤将它复制到一个新的参数组,但如果可能的话,我想简化它。
"
)用双引号反斜线( \\"
)modify_pg.json
[
{
"ParameterName": "wlm_json_configuration",
"ParameterValue": "<input_formatted_json_here>"
}
]
<input_formatted_json_here>
(在上面的第 3 步中创建)myclusterparametergroup
aws redshift modify-cluster-parameter-group --parameter-group-name myclusterparametergroup --parameters file://modify_pg.json
下面是我的最终modify_pg.json
文件,我可以在我的新参数组中使用它。 但是有没有办法简化这个?
[
{
"ParameterName": "wlm_json_configuration",
"ParameterValue": "[{\"query_group\":[\"defaulton\",\"lab4on\"],\"query_group_wild_card\":0,\"user_group\":[],\"user_group_wild_card\":0,\"concurrency_scaling\":\"off\",\"priority\":\"normal\",\"queue_type\":\"auto\",\"auto_wlm\":true},{\"query_group\":[\"lab1\",\"lab2\",\"lab3normal\",\"lab4off\",\"lab5\",\"lab6reads\",\"defaultoff\"],\"query_group_wild_card\":0,\"user_group\":[],\"user_group_wild_card\":0,\"concurrency_scaling\":\"off\",\"priority\":\"normal\",\"queue_type\":\"auto\",\"auto_wlm\":true},{\"query_group\":[\"lab3highest\"],\"query_group_wild_card\":0,\"user_group\":[],\"user_group_wild_card\":0,\"concurrency_scaling\":\"off\",\"priority\":\"highest\",\"queue_type\":\"auto\",\"auto_wlm\":true},{\"query_group\":[\"lab3lowest\"],\"query_group_wild_card\":0,\"user_group\":[],\"user_group_wild_card\":0,\"concurrency_scaling\":\"off\",\"priority\":\"lowest\",\"queue_type\":\"auto\",\"auto_wlm\":true},{\"query_group\":[\"lab6writes\"],\"query_group_wild_card\":0,\"user_group\":[],\"user_group_wild_card\":0,\"concurrency_scaling\":\"off\",\"priority\":\"highest\",\"queue_type\":\"auto\",\"auto_wlm\":true},{\"query_group\":[],\"query_group_wild_card\":0,\"user_group\":[],\"user_group_wild_card\":0,\"priority\":\"normal\",\"queue_type\":\"auto\",\"auto_wlm\":true},{\"short_query_queue\":false}]"
}
]
我已经为客户做过好几次了,你就快到了。 与使用 AWS CLI 修改 PG 的方式相同,您可以使用 AWS CLI 从现有 PG 中提取 JSON。
aws redshift describe-cluster-parameters ...
您将返回一个 JSON,其中包含指定 PG 的参数值。 然后只需将返回值修改为您需要的字符串格式即可。 这需要一些编程或脚本编写 - 我将使用 Linux 脚本编写,因为这是一个流行的选项。 您可能需要的命令行工具:
您将遵循的过程类似于
现在你可以在 python 中使用 boto3 或在 java 或 ... 这只是一个路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.