目的
本文档适用于redis到codis的数据迁移。文档附带迁移程序。迁移前请确保需要部署的业务程序(如商城)的缓存访问方式已从redis更新到codis。目前有两种方式来迁移缓存:
- 自动同步:适用于迁移程序可同时访问到redis和codis服务的情景,无需下线原有的redis业务程序,可等到同步程序部署完成后,逐台更新部署业务程序,并下线所有redis服务;
- 手动导入:适用于迁移程序无法同时访问到redis和codis服务的情景,为防止迁移过程中丢失数据,需要先下线所有的redis业务程序,等手动导入完成后,再下线redis服务,重新部署业务程序。
自动同步(推荐)
通过redis-sync同步程序,实时同步redis数据到codis。使用方法如下:
- 将redis-sync程序上传到可同时访问到Redis和codis的服务器上;
- 获取redis-sync程序执行权限:chmod u+x redis-sync;
- 运行redis-sync程序:nohup ./redis-sync --ncpu=2 --master=192.168.142.182:6379 --target=192.168.142.186:19000 > redis-to-codis-6379.log 2>&1 &
查看日志,无报错和异常情况下会不断输出同步信息
说明:
--ncpu 参数:最大使用 CPU 个数,请按机器实际情况配置
--master参数:redis master的IP和端口号, 若有多个redis master, 请修改该参数分别运行多个redis-sync;
--target参数:codis proxy的IP和端口号,集群环境可选任意一个proxy
> redis-to-codis-6379.log 输出的日志文件名,建议后缀设置为redis master的端口号,以区分不同redis master的日志文件; - 逐台更新部署访问方式已从redis迁移到codis的相关业务程序(如商城);
- 停掉所有redis服务, redis下线时,reids-sync 链接会断开,自动退出同步,完成数据迁移。
手动导入
如果同步程序无法同时访问到redis和codis服务,可使用redis-dump和redis-restore程序手动进行迁移,使用该方式请确保所有访问redis服务的业务程序已下线。使用方法如下:
- 将redis-dump程序上传到可访问到redis的服务器上;
- 获取redis-dump程序执行权限:chmod u+x redis-dump;
- 运行redis-dump程序:./redis-dump --ncpu=2 --master=192.168.142.182:6379 --output=save-6379.rdb
说明:
--ncpu 参数:最大使用 CPU 个数,请按机器实际情况配置;
--master参数:redis master的IP和端口号, 若有多个redis master,请修改该参数分别运行多个redis-dump;
-- output参数:从redis中导出的数据文件名,建议后缀设置为redis master的端口号,以区分不同redis master导出的文件。 - 将redis-restore程序上传到可访问到codis的服务器上;
- 获取redis-restore程序执行权限:chmod u+x redis-restore;
- 拷贝所有redis数据导出文件(.rdb)到当前服务器
- 运行redis-restore程序:./redis-restore --ncpu=2 --input=save-6379.rdb --target=192.168.142.186:19000
说明:
--ncpu 参数:最大使用 CPU 个数,请按机器实际情况配置;
-- input参数:从redis中导出的数据文件名,若有多个,请修改该参数执行多次redis-restore;
--target参数:codis proxy的IP和端口号,集群环境可选任意一个proxy - 更新部署相关业务程序(如商城),完成数据迁移。