由于Redis集群Cluster模式在创建时自动维护了集群信息,迁移完成后需要重建集群。
可参考Redis官方安装部署教程,请根据自身需求选择具体的操作系统版本(https://redis.io/docs/latest/operate/oss_and_stack/install/build-stack/)。
1 | tar -zxvf redis-{version}.tar.gz |
1 | cd redis-{version} |
1 | make |
Redis5.0之后版本编译支持systemd,6.0版本之后编译支持TLS,编译时选择需要的编译选项。
1 | make USE_SYSTEMD=yes BUILD_TLS=yes |
(1). 若执行TLS显示缺少OpenSSL,则需要安装OpenSSL开发库:
1 | sudo yum install openssl openssl-devel |
(2). 若执行systemd显示缺少开发库,则需要安装systemd开发库:
1 | sudo yum install systemd-devel |
1 2 | make install make PREFIX={install_path} install |
1 | find / -name redis.service |
1 | ExecStart={install_path}/bin/redis-server {conf_path} |
1 | systemctl daemon-reload
|
1 | systemctl start redis.service |
1 | systemctl status redis.service |
当“Active”字段显示包含“active(running)”表示成功。
1 | ${redis-server目录} ${redis.conf目录} |
1 | systemctl start redis.service |
1 | systemctl status redis.service |
当“Active”字段显示包含“active(running)”表示成功。
确保所有参与集群的Redis实例均已启动,并且运行在集群模式下,即redis.conf文件中设置cluster-enabled yes和相应的cluster-config-file配置。
1 2 3 | ./redis-trib.rb create --replicas 1 \ <节点1_IP地址>:<端口1> <节点2_IP地址>:<端口2> <节点3_IP地址>:<端口3> \ <节点4_IP地址>:<端口4> <节点5_IP地址>:<端口5> <节点6_IP地址>:<端口6> |
如果构建失败,检查redis-trib.rb依赖:
1 | ruby -v
|
如果未安装Ruby,系统将返回“command not found”或类似的错误。
1 | sudo yum install ruby -y |
1 | gem install redis -v 4.1.0 |
1 2 3 | ./redis-trib.rb create --replicas 1 \ <节点1_IP地址>:<端口1> <节点2_IP地址>:<端口2> <节点3_IP地址>:<端口3> \ <节点4_IP地址>:<端口4> <节点5_IP地址>:<端口5> <节点6_IP地址>:<端口6> |
进入Redis的src目录下,通过redis-cli连接Redis实例,默认端口号为6379。
1 2 | ./redis-cli -c -p 6379 cluster nodes |
下载地址:https://github.com/tair-opensource/RedisShake/releases?page=1
1 | mkdir -p /home/redisShake/ |
1 | tar xzvf redis-shake-linux-arm64.tar.gz -C /home/redisShake/ |
如下为示例,其余配置保持默认或按需修改即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [rdb_reader] filepath = "/devkit_sysmig_disk/path/to/your/redis/data/dump.rdb" [aof_reader] filepath = "/devkit_sysmig_disk/path/to/your/redis/data/appendonly.aof" timestamp = 0 # subsecond [redis_writer] cluster = true # set to true if target is a redis cluster sentinel = false # set to true if target is a redis sentinel master = "" # set to master name if target is a redis sentinel address = "ip:port" # when cluster is true, set address to one of the cluster node username = "" # keep empty if not using ACL password = "" # keep empty if no authentication is required tls = false off_reply = false # turn off the server reply |
1 | ./redis-shake shake.toml
|
回显或日志中出现”all done”,代表同步完成。
进入Redis的src目录下,通过redis-cli连接Redis实例,默认端口号为6379。
1 2 | ./redis-cli -c -p 6379 get key |
当key存在时,会返回相应的值。