已大规模用于生产环境,亲测有效!
下载redis-migrate-tool软件包(注意是tanruixing88的)
git clone https://github.com/tanruixing88/redis-migrate-tool.git
准备安装
# mv redis-migrate-tool-master redis-migrate-tool
# cd redis-migrate-tool/
# ls
ChangeLog configure.ac dep LICENSE m4 Makefile.am nodes README.md rmt.conf src test
# autoreconf -fvi
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: creating directory config
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
libtoolize: `AC_PROG_RANLIB' is rendered obsolete by `LT_INIT'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:36: installing 'config/config.guess'
configure.ac:36: installing 'config/config.sub'
configure.ac:16: installing 'config/install-sh'
configure.ac:16: installing 'config/missing'
src/Makefile.am:34: warning: whitespace following trailing backslash
src/Makefile.am: installing 'config/depcomp'
autoreconf: Leaving directory `.'
[[email protected] redis-migrate-tool]# ./configure
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
$ make
查看帮助
$ src/redis-migrate-tool -h
运行 redis 集群到集群直接的实时迁移
redis-migrate-tool -c braavos.conf -n -o log -d
集群到集群直接的实时迁移配置文件
$ vim rmt.conf
[source]
type: redis cluster
servers:
- 10.16.76.65:10044
[target]
type: redis cluster
servers:
- 10.16.76.141:6380
[common]
listen: 0.0.0.0:8888
注意:
1,实时迁移会在源库和目标库之间 互相同步数据 ,这就要求我们需要指定参数 使得源库到目标库的同步是单向的 ,需要加参数 -n, --noreply : don't receive the target redis reply
2,同步完以后,切换连接后,删除该同步进程,同步即结束
详细用法见 https://github.com/tanruixing88/redis-migrate-tool