[英]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.