前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用python脚本批量升级redis版本

使用python脚本批量升级redis版本

原创
作者头像
vic@TX
修改2022-11-24 17:54:30
6460
修改2022-11-24 17:54:30
举报

redis批量升级版本脚本示例

一、升级背景

redis实例如果要跨区热迁移,实例需支持多可用区。2.8及以下版本不支持升级支持多可用区,故2.8及以下版本需升级到4.0及以上版本(数据切换过程中,实例将存在1分钟以内的只读状态(等待数据同步完成),以及连接闪断(秒级)的影响,需要业务具备自动重连的机制)。

本文以python为例,介绍调用腾讯云SDK批量升级redis实例版本的方法

(参考api文档:云数据库 Redis 升级实例版本或者结构-实例相关接口-API 中心-腾讯云)。

二、环境准备

1、安装python(2.7或3.0以上版本都可以);

2、安装腾讯云最新SDK:

pip install tencentcloud-sdk-python

或pip3 install tencentcloud-sdk-python

三、操作步骤

1、准备待升级实例列表

可以从控制台筛选导出实例信息

按照如下格式整理成csv表格(需填写实例ID、目标版本)

目标版本参照(实例类型):2 – Redis2.8内存版(标准架构),3 – CKV 3.2内存版(标准架构),4 – CKV 3.2内存版(集群架构),6 – Redis4.0内存版(标准架构),7 – Redis4.0内存版(集群架构),8 – Redis5.0内存版(标准架构),9 – Redis5.0内存版(集群架构),15 – Redis6.0内存版(标准架构),16 – Redis6.0内存版(集群架构)。

2、准备迁移脚本

修改API密钥,密钥可前往 登录 - 腾讯云网站进行获取

修改目标实例所在地域,参考:云服务器 地域和可用区-产品简介-文档中心-腾讯云

从csv表格中读取实例id、目标版本等参数:

调切换接口升级版本(注意:切换模式,1-维护时间窗切换,2-立即切换):

3、执行情况

升级前

升级中(执行脚本)

升级后

四、脚本示例(python,供参考)

代码语言:javascript
复制
import os
from re import A
import sys
import csv
import json
import time
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.redis.v20180412 import redis_client, models
try:
    # 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
    # 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
    cred = credential.Credential("AKIDxxxx", "dChxxxx")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "redis.tencentcloudapi.com"

    # 实例化一个client选项,可选的,没有特殊需求可以跳过
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    # 实例化要请求产品的client对象,clientProfile是可选的
    client = redis_client.RedisClient(cred, "ap-guangzhou", clientProfile)

except TencentCloudSDKException as err:
    print(err)

if __name__ == '__main__':
#读取csv文件中的实例id、目标版本等信息
    with open("/Users/vicjiang/Desktop/Redis实例列表_广州.csv",encoding="utf-8",mode="r") as f:
        reader = csv.DictReader(f)
        for row in reader:
            print(row["实例id"],row["目标版本"])    
            # 实例化一个请求对象,每个接口都会对应一个request对象
            req = models.UpgradeInstanceVersionRequest()
            params = {
                #升级目标版本
                "TargetInstanceType": row["目标版本"],
                #切换模式:1-维护时间窗切换,2-立即切换
                "SwitchOption": 2,
                #实例id
                "InstanceId": row["实例id"]
            }
            req.from_json_string(json.dumps(params))

            # 返回的resp是一个UpgradeInstanceVersionResponse的实例,与请求对象对应
            resp = client.UpgradeInstanceVersion(req)
            # 输出json格式的字符串回包
            print(resp.to_json_string())
            # 加1秒等待时间,每秒切换1台
            time.sleep( 1 )

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • redis批量升级版本脚本示例
    • 一、升级背景
      • 二、环境准备
        • 三、操作步骤
          • 1、准备待升级实例列表
          • 2、准备迁移脚本
          • 3、执行情况
        • 四、脚本示例(python,供参考)
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档