唯品会 redis-migrate-tool redis 迁移工具翻译

vipshop/redis-migrate-tool,是唯品会开发的一个工具,用于在 redis 之间迁移数据。

/*
	最大的坑:
		Mac 上不能迁移,redis_check、redis_testinsert 命令没反应。redis 需要 auth 密码的话,也通不过(费了我不是一点点的时间...)

		配置本地多个 redis 测试
		切换本地多个低版本 redis 进行测试
		... 都没用 ...

	这里再记录一个命令:
		brew switch redis 3.2.3/4.0.11 		// brew 切换 redis 不同版本
 */

依赖:
	automake
	libtool
	autoconf
	bzip2

安装:
	git clone [email protected]:vipshop/redis-migrate-tool.git
	cd redis-migrate-tool
	autoreconf -fvi
	./configure
	make

查看是否安装成功,帮助命令:
	src/redis-migrate-tool -h

运行:
	src/redis-migrate-tool -c rmt.conf -o log -d

警告:
	在运行工具前,确保 'source' redis 服务器,有足够的内存,允许至少一个 redis 生成 rdb 文件。
	如果 'source' redis 服务器,有足够大的内存,允许所有 redis 同时生成 rdb 文件,可以设置 rmt.conf 中 'source_safe: false'

不被支持的 redis 命令:
	不支持以下命令,传播到 'target' redis 服务器,因为这些命令中的键,可能跨越不同的 'target' redis 服务器节点:

	RENAME,RENAMENX,RPOPLPUSH,BRPOPLPUSH,FLUSHALL,FLUSHDB,BITOP,MOVE,GEORADIUS,GEORADIUSBYMEMBER,EVAL,EVALSHA,SCRIPT,PFMERGE

配置:
	配置文件由3部分组成:
		source
		target
		common

	source 和 target 可用配置项
		type - redis 类型,可选值如下: 
			single
			twemproxy
			redis cluster
			rdb file
			aof file

		servers - 组内的 redis 服务器列表。如果 type 是 'twemproxy',则与 twemproxy 配置文件相同。如果 type 是 rdb 文件,这里填写 rdb 文件名。

		redis_auth - 连接 redis 服务器时进行身份验证

		timeout - redis 服务器 读/写 的超时时间(以毫秒为单位),默认为 120000。(注意:目前只有 'source' 配置部分可用)

		hash - hash 函数类型。(注意:只可用于 type 为 'twemproxy'),可选值有:
			one_at_a_time
			md5
			crc16
			crc32(crc32的实现与 libmemcached 兼容)
			crc32a(根据规范纠正crc32实现)
			fnv1_64
			fnv1a_64
			fnv1_32
			fnv1a_32
			hsieh
			murmur
			jenkins

		hash_tag - 双字符串,指定用于 hash 的秘钥部分。例如:{} 或 $$。只要标签中的键相同, hash_tag 就可以将不同的键映射到同一服务器。(注意:只可用于 type 为 'twemproxy')

		distribution - 秘钥分发模式。(注意:只可用于 type 为 'twemproxy')
			ketama
			modula
			random

	common 可用配置项
		listen - 监听地址和端口(name:port 或 ip:port)。默认是:127.0.0.1:8888(redis-migrate-tool,而非 redis-cli)

		max_clients - 监听端口可连接的最大客户端个数。默认是:100

		threads - redis-migrate-tool 可使用的最大线程数。默认是:CPU核心数

		step - 解析请求的步骤。数字越大,迁移越快,但是使用的内存也越多。默认是:1

		mbuf_size - 请求的 Mbuf 大小。默认是:512

		noreply - 布尔类型,是否检查 'target' redis 组回复。默认是:false

		source_safe - 布尔类型,用于保护 'source' redis 组服务器的内存安全。设置为 true,会保证每次、在组内的同一台服务器上,只有一个 redis 来生成 rdb 文件。此外,'source_safe: true' 可能会使用比你设置的线程数,更少的线程。默认是:true

		dir - 工作目录,用来存储文件(例如:rdb 文件)。默认是:当前目录

		filter - 过滤不匹配的 'key'。支持 'Glob' 风格。默认是:NULL
			?
			*
			[ae]
			[^e]
			[a-b]
			\ - 转义特殊字符

状态:
	可以使用 redis-cli 来连接 redis-migrate-tool。监听地址和端口,可以在 'common' 配置块中设置

	连接 'redis-migrate-tool':(注意:该命令同 redis-cli 的命令一样,只是端口不同,得非常注意!!)
		redis-cli -h 127.0.0.1 -p 8888

	info - 显示 Server、Clients、Memory、Group、Stats 状态

	shutdown [seconds|asap]
		作用:
			停止从 'source' redis 的复制
			尝试将 redis-migrate-tool 的缓存数据,发送给 'target' redis
			redis-migrate-tool 停止并退出

		参数:
			seconds - redis-migrate-tool 在退出前,可用于给 'target' redis 发送缓存数据的最大秒数。默认是:10s
			asap - 忽略缓存数据,立即退出

	
检查数据:
	迁移完成后,可以使用 'redis_check' 命令,来检查 'source' 组 和 'target' 组的数据是否一致。默认只检查 1000 个key
		src/redis-migrate-tool -c rmt.conf -o log -C redis_check

	如果想检查更多的 key,使用
		src/redis-migrate-tool -c rmt.conf -o log -C "redis_check 200000"

插入一些 key,用于测试:
	使用 'redis_testinsert' 命令。默认只插入 1000 个key
		src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert"

	如果想插入更多的 key,使用
		src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert 30000"

	如果只想插入'string' 类型的 key,使用:
		src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert tring"

	如果想插入某些指定类型的 key,使用:
		src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert string|set|list 10000"

猜你喜欢

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