redis 迁移方案

主从复制(Master-Slave Replication)

  1. 在目标服务器上配置 Redis 为源服务器的从节点

  2. slaveof 源服务器IP 源服务器端口
    masterauth 源服务器密码(如果有)

    • 启动目标服务器的 Redis 服务。
    • 此时,目标服务器将开始从源服务器同步数据。
    • 等待数据同步完成

      • 通过查看目标服务器的 Redis 日志或使用 INFO replication 命令,确认数据同步状态。
      • 确保 master_link_statusup,表示同步已完成。
        • 将目标服务器提升为主节点

          在目标服务器上执行:
        • redis-cli SLAVEOF NO ONE

        • 允许目标服务器接受写操作:
            • redis-cli CONFIG SET slave-read-only no
               

              更新客户端配置

              • 将应用程序的 Redis 连接信息更新为目标服务器的地址。
              • 确保应用程序指向新的 Redis 主节点。
              • 断开源服务器与目标服务器的复制关系

              • redis-cli SLAVEOF NO ONE

              • redis-shake.conf
              •  

                • [sync_reader]
                  mode = "sync"
                  cluster = false
                  address = "172.31.17.103:6379" # 源 Redis 地址
                  password = "" # 源 Redis 密码
                  sync_rdb = true # 启用 RDB 同步
                  sync_aof = false # 关闭 AOF 同步

                  [redis_writer]
                  cluster = false
                  address = "172.31.28.116:26379" # 目标 Redis 地址
                  password = "bN5gOqteKPMl6iwG" # 目标 Redis 密码

                  [advanced]
                  log_file = "shake.log" # 日志文件路径
                  log_level = "info" # 日志级别:info
                  pipeline_count_limit = 1024 # 默认管道大小

                  rdb_restore_command_behavior = "rewrite" # 遇到重复键时覆盖

              • redis-cli SLAVEOF NO ONE

                • 方案二:使用数据迁移工具

                  如果需要在不停机的情况下进行更复杂的迁移,例如从单机模式迁移到集群模式,可以考虑使用专门的迁移工具,如 Redis Shake。

                • info keyspace 
                   
                   
                   
                   
                  https://www.cnblogs.com/Leonardo-li/p/18666906
                   
                  INFO Persistence
                   

                  redis-cli -p 6379 CONFIG SET repl-timeout 3
                  redis-cli -p 6379 CONFIG SET min-replicas-max-lag 1
                  redis-cli -p 6379 CONFIG SET replica-priority 1
                  redis-cli -p 6379 CONFIG SET cluster-node-timeout 2000

                • 192.168.1.243:7280> config set cluster-require-full-coverage no
                  OK
                  192.168.1.243:7280> config rewrite
                  OK

                  CONFIG SET repl-backlog-size 104857600

                   

                  1) "cluster-node-timeout"
                  2) "20000"
                  192.168.1.242:7281> CONFIG GET repl-timeout
                  1) "repl-timeout"
                  2) "10"
                  192.168.1.242:7281> CONFIG GET min-replicas-max-lag
                  1) "min-replicas-max-lag"
                  2) "10"
                  192.168.1.242:7281> CONFIG GET replica-priority
                  1) "replica-priority"
                  2) "100"

                  redis-cli -p 6379 CONFIG SET repl-timeout 3
                  redis-cli -p 6379 CONFIG SET min-replicas-max-lag 1
                  redis-cli -p 6379 CONFIG SET replica-priority 1
                  redis-cli -p 6379 CONFIG SET cluster-node-timeout 2000

                  redis-cli -p 7280 cluster failover force

                  CONFIG GET cluster-replica-validity-factor

                  cluster-node-timeout 15000
                  cluster-replica-validity-factor 20

                  redis-cli CONFIG SET cluster-node-timeout 15000
                  redis-cli CONFIG SET cluster-replica-validity-factor 20

posted @ 2025-01-19 16:35  人生信条~~  阅读(70)  评论(0)    收藏  举报