为什么3分钟搞懂AI
炒又幕燃、RedisShake 核心介绍RedisShake 是阿里云 Tair 开源团队推出的轻量级Redis数据处理工具无需复杂依赖部署简单、操作便捷能适配自建Redis、云Redis等多种环境解决Redis全生命周期的数据管理难题。1.1 四大核心功能RedisShake 的核心能力集中在4个模块覆盖数据从备份、迁移到解析的全流程同步sync支持全量数据迁移增量数据实时同步确保源Redis和目标Redis数据完全一致适用于迁移、灾备等场景恢复restore将本地RDB文件快速恢复到目标Redis实例无需手动执行复杂命令备份dump将源Redis的全量数据备份为RDB文件便于离线存储、数据回溯解析decode解析RDB文件内容并以JSON格式输出方便查看数据结构、排查数据异常。1.2 典型应用场景结合实际运维场景RedisShake 主要用于以下5种场景几乎覆盖Redis运维的核心需求数据迁移自建Redis迁移到云Redis、不同云服务商之间的Redis数据迁移灾备同步搭建异地容灾架构实现主从同步、双向同步保障数据高可用缓存更新结合数据库订阅机制实现数据库变更后自动刷新Redis缓存避免缓存不一致版本升级Redis版本迭代时平滑迁移数据不中断业务访问数据备份与恢复定期备份Redis数据为RDB文件数据异常时快速恢复降低数据丢失风险。二、RedisShake 快速安装RedisShake 无需编译直接下载压缩包解压即可使用以下是Linuxamd64环境的安装步骤其他系统可前往GitHub下载对应版本# 1. 创建安装目录统一管理便于后续操作mkdir -p /data/redisshakecd /data/redisshake# 2. 下载对应版本压缩包此处以v4.3.2为例可替换为最新版本wget https://github.com/tair-opensource/RedisShake/releases/download/v4.3.2/redis-shake-v4.3.2-linux-amd64.tar.gz# 3. 解压压缩包tar zxvf redis-shake-v4.3.2-linux-amd64.tar.gz解压完成后进入解压目录可看到默认配置文件 shake.toml 和可执行文件 redis-shake安装完成。三、核心实操场景附详细步骤以下是日常运维中最常用的4种场景每一步都附详细命令和注意事项新手也能轻松上手。所有场景均基于Redis 6.2.14版本测试其他版本可参考操作注意版本兼容性。场景1单实例 → 单实例 数据同步适用场景将一台单机Redis的数据迁移到另一台单机Redis如测试环境迁移到生产环境、单机扩容迁移。1. 准备环境提前准备两台单机Redis具体信息如下可根据自身环境修改IP、端口、密码主机IP 端口 组件角色 版本 说明192.168.220.10 7001 单机Redis 6.2.14 源节点制造测试数据192.168.220.10 7002 单机Redis 6.2.14 目标节点接收迁移数据2. 准备测试数据 清空目标端先在源节点制造测试数据同时清空目标端数据避免旧数据干扰迁移结果# 1. 源节点7001制造测试数据redis-cli -p 7001 -a 123456 flushall # 清空源节点原有数据可选根据实际需求redis-cli -p 7001 -a 123456 set port.7001.01 1redis-cli -p 7001 -a 123456 set port.7001.02 1# 2. 清空目标节点7002数据redis-cli -p 7002 -a 123456 flushall3. 修改RedisShake配置文件基于默认配置文件复制一份新的配置专门用于本次单实例同步避免修改默认配置影响其他操作# 进入RedisShake安装目录cd /data/redisshake# 备份并复制配置文件命名规范源端口_to_目标端口.toml便于区分cp shake.toml 7001to7002.toml# 编辑配置文件vim或nano均可vim 7001to7002.toml修改以下核心配置其他配置保持默认即可[sync_reader]cluster false # 源节点是否为集群单机设为falseaddress 127.0.0.1:7001 # 源节点地址本机可写127.0.0.1跨机写实际IPusername # Redis用户名无则留空password 123456 # 源节点密码无则留空[redis_writer]cluster false # 目标节点是否为集群单机设为falseaddress 127.0.0.1:7002 # 目标节点地址username # 目标节点用户名无则留空password 123456 # 目标节点密码无则留空4. 执行迁移操作配置完成后执行以下命令启动迁移RedisShake会先同步全量数据再实时同步增量数据cd /data/redisshake/./redis-shake 7001to7002.toml注意当终端持续打印相同的日志如“sync rdb done”说明全量数据已同步完成此时正在同步增量数据若只需全量迁移按 ctrlc 退出即可。5. 验证迁移结果登录目标节点查看数据是否迁移成功# 登录目标节点7002redis-cli -p 7002 -a 123456# 查看所有key确认测试数据已迁移keys *若输出 port.7001.01 和 port.7001.02说明迁移成功。场景2单实例 → Redis集群 数据同步适用场景将单机Redis的数据迁移到Redis集群如单机扩容为集群、测试数据导入集群。1. 准备环境主机IP 端口 组件角色 版本 说明192.168.220.10 6001 单机Redis 6.2.14 源节点制造测试数据192.168.220.10 7001/7002 Redis节点 6.2.14 集群节点7001为主7002为从192.168.220.11 7001/7002 Redis节点 6.2.14 集群节点7001为主7002为从192.168.220.12 7001/7002 Redis节点 6.2.14 集群节点7001为主7002为从2. 准备测试数据 清空目标集群# 1. 源节点6001制造测试数据redis-cli -p 6001 -a 123456 flushallredis-cli -p 6001 -a 123456 set port.6001.01 1redis-cli -p 6001 -a 123456 set port.6001.02 1# 2. 检查集群状态确认集群正常运行redis-cli --cluster check 192.168.220.10:7001 -a 123456# 3. 清空目标集群所有节点数据集群模式需加 -c 参数redis-cli -h 192.168.220.10 -p 7001 -a 123456 -c flushallredis-cli -h 192.168.220.11 -p 7001 -a 123456 -c flushallredis-cli -h 192.168.220.12 -p 7001 -a 123456 -c flushall3. 修改配置文件cd /data/redisshake# 复制配置文件命名区分场景cp shake.toml 6001_to_cluster.toml# 编辑配置文件vim 6001_to_cluster.toml核心配置修改重点修改目标端为集群模式[sync_reader]cluster false # 源节点是单机设为falseaddress 192.168.220.10:6001 # 源节点实际IP端口username password 123456[redis_writer]cluster true # 目标节点是集群设为trueaddress 192.168.220.10:7001,192.168.220.11:7001,192.168.220.12:7001 # 集群所有主节点地址用逗号分隔username password 1234564. 执行迁移 验证结果# 执行迁移cd /data/redisshake./redis-shake 6001_to_cluster.toml# 全量同步完成后ctrlc退出增量同步可选# 验证数据登录任意集群主节点redis-cli -h 192.168.220.12 -p 7001 -a 123456keys *场景3Redis集群 → 单实例 数据同步适用场景将Redis集群的数据迁移到单机Redis如集群缩容、数据备份到单机、问题排查时导出集群数据。1. 准备环境源节点为Redis集群制造测试数据目标节点为单机Redis环境信息参考场景2仅角色互换。2. 准备测试数据 清空目标端# 1. 集群节点制造测试数据登录任意主节点redis-cli -h 192.168.220.10 -p 7001 -a 123456 -c flushallredis-cli -h 192.168.220.10 -p 7001 -a 123456 -c set c1 1redis-cli -h 192.168.220.10 -p 7001 -a 123456 -c set c2 2redis-cli -h 192.168.220.10 -p 7001 -a 123456 -c set c3 3# 2. 清空目标单机6001数据redis-cli -h 192.168.220.10 -p 6001 -a 123456 flushall3. 修改配置文件cd /data/redisshakecp shake.toml cluster_to_6001.tomlvim cluster_to_6001.toml核心配置修改源节点为集群目标为单机[sync_reader]cluster true # 源节点是集群设为trueaddress 192.168.220.10:7001,192.168.220.11:7001,192.168.220.12:7001 # 集群所有主节点地址username password 123456[redis_writer]cluster false # 目标节点是单机设为falseaddress 192.168.220.10:6001 # 目标单机地址username password 1234564. 执行迁移 验证结果cd /data/redisshake./redis-shake cluster_to_6001.toml# 全量同步完成后ctrlc退出# 验证数据redis-cli -h 192.168.220.10 -p 6001 -a 123456keys *场景4单实例RDB文件 → Redis集群 导入适用场景源Redis与目标集群网络不通无法直接同步可先将源Redis数据备份为RDB文件再将RDB文件导入集群。1. 准备环境同场景2源为单机Redis目标为Redis集群。2. 生成RDB文件 清空目标集群# 1. 源单机6001制造测试数据并生成RDB文件redis-cli -p 6001 -a 123456 flushallredis-cli -p 6001 -a 123456 set port.6001.01 1redis-cli -p 6001 -a 123456 set port.6001.02 1redis-cli -p 6001 -a 123456 bgsave # 后台生成RDB文件不阻塞业务# 2. 查看RDB文件路径Redis配置文件中dir参数指定默认路径如下# 此处假设RDB文件路径为 /usr/local/redis6/data/6001/dump_6001.rdb# 3. 清空目标集群数据同场景2redis-cli --cluster check 192.168.220.10:7001 -a 123456redis-cli -h 192.168.220.10 -p 7001 -a 123456 -c flushallredis-cli -h 192.168.220.11 -p 7001 -a 123456 -c flushallredis-cli -h 192.168.220.12 -p 7001 -a 123456 -c flushall3. 拷贝RDB文件到RedisShake目录# 将RDB文件拷贝到RedisShake安装目录便于配置文件引用cp /usr/local/redis6/data/6001/dump_6001.rdb /data/redisshake/4. 修改配置文件重点配置RDB读取cd /data/redisshakecp shake.toml rdb_to_cluster.tomlvim rdb_to_cluster.toml核心配置修改使用RDB文件作为数据源# 注释sync_reader相关配置启用rdb_reader# [sync_reader]# cluster false# address xxx# ...[rdb_reader]rdb_file /data/redisshake/dump_6001.rdb # RDB文件路径绝对路径[redis_writer]cluster true # 目标是集群address 192.168.220.10:7001,192.168.220.11:7001,192.168.220.12:7001username password 1234565. 执行导入 验证结果cd /data/redisshake./redis-shake rdb_to_cluster.toml# 导入完成后ctrlc退出# 验证数据redis-cli -h 192.168.220.12 -p 7001 -a 123456keys *四、常见问题注意事项版本兼容性RedisShake v4.x 支持Redis 4.0建议源和目标Redis版本一致避免数据结构不兼容密码与权限若Redis开启密码认证配置文件中必须填写正确密码若Redis有用户名认证Redis 6.0需填写username参数集群配置集群同步时address参数需填写所有主节点地址用逗号分隔无需填写从节点增量同步若需长期增量同步如灾备无需ctrlc退出RedisShake会持续同步增量数据RDB文件路径导入RDB文件时需填写绝对路径避免路径错误导致无法读取文件。五、总结
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2452883.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!