本地redis的rdb文件上传到阿里云redis,阿里云redis的上传和备份

本地 redis .rdb 文件上传到 阿里云 redis:
	为这个问题,纠结了好久。之前还搜索了好多文章,还看的 唯品会的 redis 迁移工具。
	其实阿里云文档,这些都有,我们需要耐下心来,好好研究,之前就是太浮躁了,瞎看,一看有点复杂,就不想看。

参考文档:
	云数据库 Redis 版
		1.公网链接 - https://help.aliyun.com/document_detail/43850.html
			注意:我们从本地 PC 访问 阿里云的 Redis 数据库,默认是拒绝的,需要一些配置。需要仔细了解 『前提条件』。

			前提条件:
			『
				若 Redis 实例属于专有网络(VPC),ECS 必须与 Redis 实例属于同一个 VPC。
				若 Redis 实例属于经典网络,ECS 必须与 Redis 实例属于同一节点(地域)。
				若 Redis 实例开启了 IP 白名单,必须将 ECS 的内网地址加入白名单列表内。
			』
			我们项目的 Redis 实例,是属于 "经典网络",在其他地域的 ESC 上尝试了半天,确实访问不了。

			Redis 实例,只支持 ECS 访问,要想在公网上访问,文档也给出了途径:
				『可以通过在 ECS 上配置端口映射或者端口转发实现』

			好像是需要安装一个 rinetd 服务。

		2.使用 redis-port 恢复数据 - https://help.aliyun.com/document_detail/90931.html
			这篇文档,讲述的有2点:
				1>从阿里云 redis 上,下载备份文件(阿里云redis,会根据我们的设置自动备份,我们就是下载这些已备份的文件)
				2>将本地的 redis 文件,恢复到 阿里云redis
					这个是我们需要的功能,但是并没有在这个文档提到,参考下面链接:
						https://help.aliyun.com/document_detail/66012.html

			1>下载 redis 备份
				1)安装 openAPI
					pip install aliyun-python-sdk-core #安装阿里云OpenAPI依赖包

					// 这个需要安装 pip,自行搜索

				2)下载工具包
					wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/73964/cn_zh/1536832169445/redis-rdb-auto-restore.zip

				3)解压zip包,编辑 config.json 配置文件,配置我们的 阿里云的 AccesskeyID, AccesskeySecret,regionid。
					unzip redis-rdb-auto-restore.zip
					vim config.json
						{
							AccesskeyID: 'xxx',
							AccesskeySecret: 'xxx',
							regionid: 'cn-beijing',
						}

				4)执行脚本
					python rdb_restore.py -c xxx -t xxx -p 6379 -a xxx -d 2018-09-20

					注意:
						如果一天之内有多个备份文件的话,务必加上 -b 参数,如需传入多个备份id请用逗号隔开,如:xxx,xxx,xxx

				5)参数说明:
					-c - 云数据库 redis 实例ID(--inistance_id)
					-t - 云数据库 redis 域名(--target)
					-p - 云数据库 redis 端口(--port)
					-a - 云数据库 redis 密码(--auth)
					-d - 备份的日期(--day)
					-o - 备份到本地的路径以及文件名,默认路径是 '/root/'(--output)
					-b - 具体的实例备份id,选填,对于一天有多个备份的时候选择具体备份,如果需要传入多个备份的话请用逗号隔开,如:xxx,xxxx,xxxx(--backup)
					更多命令参考:python rdb_restore.py -h


			2>上传本地 .rdb 文件到阿里云 redis 
				1)下载 redis-port
					wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/66008/cn_zh/1526545851725/redis-port

					注意:
						如果已经使用了 '第一步' 里,下载了备份工具包,里面已经有了 'redis-port' 了,我们就不用再次下载了


				2)./redis-port restore --input=/xxx/xxx.rdb --target=xxx:6379 --auth=xxx

					注意:
						1.确保 redis-port 有执行权限。如果没有,执行:chmod o+x redis-port
						2.非常关键!!!
							测试了下 redis-port,并不会删除目前阿里云 redis 中的数据,会将我们本地的 .rdb 文件里的数据新增到里面去,所以我们需要根据自己的需求来操作。
							如果完全使用本地的,阿里云redis不使用,直接点击 阿里云redis里的『清除数据』。

				3)参数说明:
					--input - 本地我们的 rdb 文件
					--target - 云数据库 redis 域名:云数据库 redis 端口
					--auth - 云数据库 redis 密码
					--filterkey - 过滤指定的key。"str1|str2|str3":过滤包含 str1 或 str2 或 str3 的键。
					--targetdb - 将要同步入云数据库 redis 的 DB
					--rewrite - 覆盖已经写入的key
					--bigkeysize - 当写入的 value 大于 SIZE 时,走大 key 写入模式
					更多命令参考:./redis-port -h

	安装 pip
		参照官方安装:
			https://pip.pypa.io/en/stable/installing/

其他参考文章:
	https://www.cnblogs.com/weifeng1463/p/9052045.html

猜你喜欢

转载自blog.csdn.net/beyond__devil/article/details/82813591