云数据库Redis支持通过控制台执行数据恢复,除此以外,您还可以通过本文提供的脚本文件下载实例的备份文件,然后自动调用redis-port将备份文件恢复至指定的实例中。
前提条件
- 源Redis实例的大版本为2.8或4.0版本。
- 目标Redis实的大版本为2.8、4.0或5.0版本。
背景信息
准备工作
注意 由于本案例提供的脚本文件需要通过密钥AccessKey(AK)信息来完成认证并获取源实例的备份文件,为避免阿里云账号泄露AccessKey带来的安全风险,建议您通过RAM用户来完成授权和AccessKey的创建。
- 创建RAM用户并授予其AliyunKvstoreFullAccess权限(管理云数据库Redis实例的权限)。
- 为RAM用户创建访问密钥AccessKey(AK),详情请参见创建AccessKey。
操作步骤
- 根据redis-port待安装的位置,完成下述操作:
注意
- 下表中的Redis实例包含源Redis实例和目标Redis实例,即源和目标Redis实例均需要完成下述操作。
- 推荐在ECS实例上安装redis-port,通过专有网络连接源和目标Redis实例,可获得更低的网络延迟和更高的安全性。
redis-port待安装位置 需完成的操作 ECS实例 - 确保ECS实例与Redis实例属于同一专有网络(即实例基本信息中的专有网络ID一致)。
说明 如果专有网络不同,您需要更换ECS实例所属的专有网络。具体操作,请参见 更换ECS实例的VPC。
- 获取ECS实例的内网IP地址。具体操作,请参见查询ECS实例的IP地址。
- 将ECS实例的内网IP地址添加至Redis实例的白名单中。具体操作,请参见设置IP白名单。
本地设备 - 登录待安装redis-port的设备,例如ECS实例或本地设备。
说明 本文以ECS实例(Ubuntu 16.04.6操作系统)为例,介绍操作流程。
- 依次执行下述命令安装OpenAPI相关依赖:
apt-get update apt install python-pip -y pip install --upgrade "pip < 21.0" pip install aliyun-python-sdk-core
- 执行下述命令下载脚本文件:
wget 'https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1618924922413/redis-rdb-auto-restore.tar'
说明 脚本文件包含脚本程序( rdb_restore.py)及redis-port等文件,运行该脚本程序可下载指定实例的备份文件,然后自动调用 redis-port将备份文件恢复至指定的实例中。 - 执行下述命令解压下载的脚本文件:
tar -xvf redis-rdb-auto-restore.tar
- 依次执行下述命令进入解压后的目录并修改配置文件:
- 按下Esc键退出编辑模式,输入:wq并按回车键保存配置并退出编辑界面。
- 执行下述格式的命令启动脚本程序,开始执行数据迁移:
python rdb_restore.py -c r-bp1q4xidqiyqpq**** -d 2021-04-19 -t r-bp1q4xidqiyqpq****.redis.rds.aliyuncs.com -p 6379 -a redistest:Pawd123456 -b 9382****2,9382****3 -t r-bp1ky7j6qc7umk****.redis.rds.aliyuncs.com -p 6379 -a Pawd123456
表 2. rdb_restore.py脚本的参数说明 参数 是否必选 说明 示例值 -c 是 源实例ID。 SoA0hZtZJ7Lszgy7aL************ -d 是 要下载的备份文件所属的日期,格式为yyyy-MM-dd。 2021-04-19 -t 是 目标Redis实例的连接地址,获取方法,请参见查看连接地址。 - ECS实例通过专有网络连接:需获取目标Redis实例的专有网络连接地址。
- 本地设备通过公网连接:需获取目标Redis实例的公网连接地址。
r-bp1q4xidqiyqpq****.redis.rds.aliyuncs.com -p 是 目标实例的端口,默认为6379。 6379 -a 是 目标Redis实例的账号(需具备读写权限)及其密码,账号和密码之间使用英文冒号(:)分隔。关于如何创建账号,请参见创建与管理账号。 redistest:Pawd123456 -o 否 源实例备份文件要下载到的目录,默认为/root/。 /root/ -b 否 源实例的备份文件ID,如果当天有多个备份,您可以通过本参数指定要下载的备份文件。 说明- 您可以通过控制台的备份与恢复页面或调用DescribeBackups接口查询备份文件ID。
- 如果源实例为集群架构或读写分离架构,您需要通过本参数下载每个数据分片的备份文件,多个备份文件ID间使用英文逗号(,)分隔。
938261111,938262222 -h 否 查看该命令的帮助信息。 无 运行该程序后,屏幕上会打印运行的日志信息,当出现restore: rdb done
表示已完成数据恢复操作。图 3. redis-port执行结果