当前位置: 首页 > wzjs >正文

东阿网站建设公司怎么seo网站推广

东阿网站建设公司,怎么seo网站推广,官网的网站设计公司,郑州网站开发公司电话Redis 集群迁移是一个复杂的过程,需要根据具体场景(如版本升级、架构调整、云平台迁移等)选择合适的方案。以下是几种常见的迁移方式及操作步骤,供参考: 迁移方式: 全量迁移(业务可中断&#x…

Redis 集群迁移是一个复杂的过程,需要根据具体场景(如版本升级、架构调整、云平台迁移等)选择合适的方案。以下是几种常见的迁移方式及操作步骤,供参考:

迁移方式:

  • 全量迁移(业务可中断)

  • 全量迁移+增量迁移(业务不能中断情况下)

一、基于 Redis 集群自身特性迁移

适用于同版本 Redis 集群之间的数据迁移,例如从旧集群迁移到新集群,或调整集群节点配置 或 新建一个节点加入旧集群进行节点主从间的替换。

1. 原理:使用 cluster replicate 命令

通过将新节点添加为旧节点的从节点,同步数据后提升为主节点,逐步替换旧集群节点。

2. 操作步骤:
步骤 1:准备新集群或新节点
  • 部署新的 Redis 集群节点(节点数与旧集群一致,或按新架构规划),确保网络互通。
  • 查看当前集群状态(reis集群配置参考)
/data # redis-cli -p 7001 cluster nodes
d50856317e509ab8add95baa06c2324bc97b5e8d 172.18.0.3:7002@17002 master - 0 1747807849000 2 connected 5461-10922
bef486e0773ee8efb8bb4b9425115af7ccce4a65 172.18.0.2:7001@17001 myself,master - 0 1747807848000 1 connected 0-5460
1fd3bb65f20b8091fa89c2959bcfc2deef7af1a6 172.18.0.6:7005@17005 slave bef486e0773ee8efb8bb4b9425115af7ccce4a65 0 1747807849411 1 connected
a3fe31a1b726f626b4703d3ebb77ccec0a9182af 172.18.0.4:7003@17003 master - 0 1747807847000 3 connected 10923-16383
e48ea426732610b3a8e058e4955fc8b16b50f717 172.18.0.5:7004@17004 slave a3fe31a1b726f626b4703d3ebb77ccec0a9182af 0 1747807847000 3 connected
c55ed02356d4ef3d5ddfed8e8da15b6fe33d0809 172.18.0.7:7006@17006 slave d50856317e509ab8add95baa06c2324bc97b5e8d 0 1747807847332 2 connected
步骤 2:逐个迁移主节点

以迁移移除旧主节点 172.18.0.3 为例:

  • 配置172.18.0.8 节点:
lantai@lantaideMacBook-Pro redis-cluster % pwd
/Users/lantai/data/redis-cluster
lantai@lantaideMacBook-Pro redis-cluster % ls -ls
total 0
0 drwxr-xr-x  4 lantai  staff  128  5 19 18:58 nodes1
0 drwxr-xr-x  4 lantai  staff  128  5 19 18:58 nodes2
0 drwxr-xr-x  4 lantai  staff  128  5 19 18:58 nodes3
0 drwxr-xr-x  4 lantai  staff  128  5 19 18:58 nodes4
0 drwxr-xr-x  4 lantai  staff  128  5 19 18:58 nodes5
0 drwxr-xr-x  4 lantai  staff  128  5 19 18:58 nodes6
lantai@lantaideMacBook-Pro redis-cluster % mkdir -p nodes7/data nodes7/conf

编写 Redis 配置文件(nodes7/conf/redis.conf

port 7007              
cluster-enabled yes       
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes              
dir /data

启动 172.18.0.8 节点

docker run -d --name redis7 -p 7007:7007 -p 17007:17007 \
-v /Users/lantai/data/redis-cluster/nodes7/conf/redis.conf:/etc/redis/redis.conf \
-v /Users/lantai/data/redis-cluster/nodes7/data:/data \
--network redis_net \
--ip 172.18.0.8 \
redis:7.0-alpine \
redis-server /etc/redis/redis.conf

–network redis_net : 绑定redis cluter容器组的桥接网卡,方便相互网络通信。

–ip :指定固定ip

  • 两集群间节点间替换法
    • 在新集群中选择一个节点 A',执行以下命令使其成为旧主节点 A 的从节点:
redis-cli -h <新节点A' IP> -p <端口> cluster replicate <旧主节点A的ID>
  • 单节点替换集群中的节点法
    • 这里只是新增了一台172.18.0.8,不是新创建了一个新集群
    • 先让新节点加入旧集群
redis-cli -h 172.18.0.8 -p 7007 cluster meet 172.18.0.2 7001

查看目前集群状态

可以看到172.18.0.8 节点已加入集群,并为master节点

/data #  redis-cli -p 7007 cluster nodes
a3fe31a1b726f626b4703d3ebb77ccec0a9182af 172.18.0.4:7003@17003 master - 0 1747810979000 3 connected 10923-16383
1fd3bb65f20b8091fa89c2959bcfc2deef7af1a6 172.18.0.6:7005@17005 slave bef486e0773ee8efb8bb4b9425115af7ccce4a65 0 1747810978494 1 connected
6134e61436684124fb58b101bf7955db34279943 172.18.0.8:7007@17007 myself,master - 0 1747810976000 0 connected
d50856317e509ab8add95baa06c2324bc97b5e8d 172.18.0.3:7002@17002 master - 0 1747810978599 2 connected 5461-10922
bef486e0773ee8efb8bb4b9425115af7ccce4a65 172.18.0.2:7001@17001 master - 0 1747810979533 1 connected 0-5460
c55ed02356d4ef3d5ddfed8e8da15b6fe33d0809 172.18.0.7:7006@17006 slave d50856317e509ab8add95baa06c2324bc97b5e8d 0 1747810979533 2 connected
e48ea426732610b3a8e058e4955fc8b16b50f717 172.18.0.5:7004@17004 slave a3fe31a1b726f626b4703d3ebb77ccec0a9182af 0 1747810979644 3 connected

让172.18.0.8 节点变更为172.18.0.3的从节点

/data # redis-cli -c -h 172.18.0.8 -p 7007 cluster replicate d50856317e509ab8add95baa06c2324bc97b5e8d
OK

验证:

redis-cli -c -h 172.18.0.8 -p 7007 info replication

输出:

/data # redis-cli -c -h 172.18.0.8 -p 7007 info replication
# Replication
role:slave
master_host:172.18.0.3
master_port:7002
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_read_repl_offset:4612
slave_repl_offset:4612
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:0f40fea9c8e8ef9ded3c8cabae1872706b541272
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4612
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:4557
repl_backlog_histlen:56
  • 等待数据同步
    - master_link_status: up 表示同步完成。
  • 查询集群中的key
/data # redis-cli -c -h 172.18.0.8 -p 7007
172.18.0.8:7007> get hello
-> Redirected to slot [866] located at 172.18.0.2:7001
"world"
172.18.0.2:7001> get number
-> Redirected to slot [7743] located at 172.18.0.3:7002
"15665565"
172.18.0.3:7002> 
  • 提升新节点为主节点

    a. 确认172.18.0.3的节点相关信息

这里172.18.0.7,172.18.0.8都为172.18.0.3的从节点

/data # redis-cli -c -h 172.18.0.3 -p 7002 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.18.0.8,port=7007,state=online,offset=6600,lag=0
slave1:ip=172.18.0.7,port=7006,state=online,offset=6600,lag=1
master_failover_state:no-failover
master_replid:0f40fea9c8e8ef9ded3c8cabae1872706b541272
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:6600
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:6600

b. 执行手动故障转移

  • 前提:确保数据同步完成了

使172.18.0.8其成为主节点

redis-cli -c -h 172.18.0.8 -p 7007 cluster failover takeover
# takeover 参数:强制立即进行故障转移,无需等待多数投票。

c. 验证 172.18.0.8 已成为主节点

/data # redis-cli -c -h 172.18.0.8 -p 7007 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.18.0.3,port=7002,state=online,offset=7146,lag=0
slave1:ip=172.18.0.7,port=7006,state=online,offset=7146,lag=0
master_failover_state:no-failover
master_replid:8290ec231c1907815cb249c692e2a34e3081bf85
master_replid2:0f40fea9c8e8ef9ded3c8cabae1872706b541272
master_repl_offset:7160
second_repl_offset:7063
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:4557
repl_backlog_histlen:2604

可以看到172.18.0.3已经切换为主节点了

d. 验证槽位是否迁移完成

/data # redis-cli -c -h 172.18.0.8 -p 7007 cluster slots
2) 1) (integer) 54612) (integer) 109223) 1) "172.18.0.8"2) (integer) 70073) "6134e61436684124fb58b101bf7955db34279943"4) (empty array)4) 1) "172.18.0.3"2) (integer) 70023) "d50856317e509ab8add95baa06c2324bc97b5e8d"4) (empty array)5) 1) "172.18.0.7"2) (integer) 70063) "c55ed02356d4ef3d5ddfed8e8da15b6fe33d0809"4) (empty array)
# 确认所有槽位(如 5461-10922)已由 172.18.0.8 负责

e. 下线 172.18.0.3 这个从节点

确认点:

  • 角色为 slave:确认是从节点。
  • 无槽位分配:结尾无 表示不负责任何槽位。

确认从节点的id

/data # redis-cli -c -h 172.18.0.8 -p 7007 cluster nodes | grep "172.18.0.3:7002" | awk '{print $1}'
d50856317e509ab8add95baa06c2324bc97b5e8d

删除172.18.0.3从节点

redis-cli --cluster del-node 172.18.0.8:7007 d50856317e509ab8add95baa06c2324bc97b5e8d

输出

>>> Removing node d50856317e509ab8add95baa06c2324bc97b5e8d from cluster 172.18.0.8:7007
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.

验证

/data # redis-cli -c -h 172.18.0.8 -p 7007 cluster nodes
a3fe31a1b726f626b4703d3ebb77ccec0a9182af 172.18.0.4:7003@17003 master - 0 1747824472000 3 connected 10923-16383
1fd3bb65f20b8091fa89c2959bcfc2deef7af1a6 172.18.0.6:7005@17005 slave bef486e0773ee8efb8bb4b9425115af7ccce4a65 0 1747824473028 1 connected
6134e61436684124fb58b101bf7955db34279943 172.18.0.8:7007@17007 myself,master - 0 1747824473000 7 connected 5461-10922
bef486e0773ee8efb8bb4b9425115af7ccce4a65 172.18.0.2:7001@17001 master - 0 1747824474060 1 connected 0-5460
c55ed02356d4ef3d5ddfed8e8da15b6fe33d0809 172.18.0.7:7006@17006 slave 6134e61436684124fb58b101bf7955db34279943 0 1747824473000 7 connected
e48ea426732610b3a8e058e4955fc8b16b50f717 172.18.0.5:7004@17004 slave a3fe31a1b726f626b4703d3ebb77ccec0a9182af 0 1747824472510 3 connected
/data # 
/data # redis-cli -c -h 172.18.0.8 -p 7007 info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.18.0.7,port=7006,state=online,offset=9512,lag=1
master_failover_state:no-failover
master_replid:8290ec231c1907815cb249c692e2a34e3081bf85
master_replid2:0f40fea9c8e8ef9ded3c8cabae1872706b541272
master_repl_offset:9512
second_repl_offset:7063
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:4557
repl_backlog_histlen:4956
  • 验证集群中的key
/data # redis-cli -c -h 172.18.0.8 -p 7007
172.18.0.8:7007> get number
"15665565"
# key number已经成功查询到在172.18.0.8生节点上了
172.18.0.8:7007> get hello
-> Redirected to slot [866] located at 172.18.0.2:7001
"world"

至此,新节点加入提升为主节点,替换旧的主节点完成。

二、使用 Redis 官方工具集群间迁移

支持(跨版本/跨架构)

1. redis-cli --cluster 工具(适用于同版本集群)
  • 全量迁移:通过 redis-cli --cluster reshard 命令将旧集群的槽位和数据批量迁移到新集群。
redis-cli --cluster reshard <新集群主节点IP:端口> --from <旧集群所有主节点ID,用逗号分隔> --to <新集群主节点ID> --slots <总槽位数> --yes
2. redis-migrate-tool(适用于跨版本或单机→集群)
  • 工具简介:Redis 6.0+ 引入的官方迁移工具,支持单机实例或集群间的数据迁移,支持全量迁移和增量同步。
  • 安装:随 Redis 源码包提供,编译后位于 src/ 目录下。
  • 示例(单机迁移到集群)
./redis-migrate-tool --from-uri redis://<旧单机IP:端口> --to-uri redis://<新集群IP:端口> --cluster
  • --cluster:目标为集群时需指定。
  • 其他参数:--auth(认证密码)、--copy(全量迁移)、--replicate(全量+增量同步)。
3. 源迁移工具RedisShake

RedisShake是一款开源的Redis迁移工具,支持Cluster集群的在线迁移与离线迁移(备份文件导入)。DCS Cluster集群与Redis Cluster集群设计一致,数据可平滑迁移。

参考链接:https://support.huaweicloud.com/usermanual-dcs/dcs-migrate-demo02.html

官方中文文档:https://tair-opensource.github.io/RedisShake/zh/guide/introduction.html

三、基于 RDB 文件的迁移(适用于冷迁移)

适用于停机维护场景,通过手动备份 RDB 文件并恢复到新集群。

操作步骤:
  1. 备份旧集群数据
redis-cli -h <旧主节点IP> -p <端口> save
- 对每个主节点执行 `SAVE` 或 `BGSAVE` 生成 RDB 文件。
  1. 传输 RDB 文件:将 RDB 文件复制到新集群节点的数据目录(通常为 dir 配置项指定的路径)。
  2. 重启新节点并加载 RDB
    • 修改新节点配置文件(redis.conf),确保 dbfilename 与 RDB 文件名一致。
    • 重启 Redis 服务,自动加载 RDB 文件。
  3. 构建新集群
    • 使用 redis-cli --cluster create 命令将新节点组成集群,并分配槽位。

四、云平台迁移(以阿里云为例)

若涉及云平台(如从自建集群迁移到云托管 Redis),可通过以下方式:

1. 使用云平台迁移工具
  • 阿里云 Redis 提供 数据迁移工具,支持从自建集群或其他云厂商迁移数据:
    1. 登录阿里云 Redis 控制台,选择“数据迁移”。
    2. 配置源集群(自建 Redis 集群)和目标集群(阿里云 Redis 集群)信息。
    3. 启动全量迁移,完成后切换业务流量。
2. 手动迁移(适用于小数据量)
  • 通过 redis-cli 或第三方工具(如 redis-trib.rb)将数据逐个槽位迁移到云集群。

五、注意事项

  1. 数据一致性
    • 迁移过程中避免写入操作,或使用增量同步(如 --replicate 参数)确保最终一致性。
  2. 版本兼容性
    • 跨大版本(如 Redis 4.x → 6.x)迁移时,需注意新特性和废弃命令的影响。
  3. 监控与回滚
    • 迁移期间监控集群状态(内存、CPU、网络延迟)。
    • 提前备份旧集群数据,以便迁移失败时快速回滚。
  4. 流量切换
    • 迁移完成后,通过修改 DNS 或负载均衡配置,将业务流量切换到新集群。

六、常用命令总结

命令说明
CLUSTER REPLICATE <nodeID>将当前节点设置为指定节点的从节点
redis-cli --cluster reshard <IP:port> --from <srcID> --to <dstID>迁移槽位和数据到目标节点
redis-migrate-tool --from-uri --to-uri官方迁移工具,支持跨版本和架构迁移
SAVE / BGSAVE生成 RDB 快照
根据实际场景选择合适的迁移方案,建议先在测试环境演练,确保流程可靠后再执行生产环境迁移。
http://www.dtcms.com/wzjs/835690.html

相关文章:

  • 如何建设网站的论文海外互联网推广平台
  • 从事网站建dw做网站怎么换图片
  • 北京网站设计我选刻微信加人推码35一单
  • 哪个视频网站有潮汕做爰视频网站开发项目介绍
  • 网站会员功能介绍手机站模板
  • 兴城泳装电子商务网站建设十大排行装修公司
  • 博客网站建设方案书wordpress幻灯片回收站在哪里
  • 网站开发的背景与环境四川省建设厅燃气网站
  • 网站工程师是做什么的写过太原的网站
  • 运营派网站dede 网站地图 调用文章
  • 铜陵网站优化wordpress mysql 配置文件
  • 山东春季高考网站建设新能源汽车十大名牌
  • 网站设计步骤的教学设计动漫设计是什么
  • 写代码做网站学做吃的的网站
  • 什么网站程序可以做抽奖页面网站每天点击量多少好
  • 鞍山网站建设工作室咨询公司的成本费用有哪些
  • 网站设计需要学什么软件公关公司多少钱一个月
  • 网站建设公司介绍ppt做网站可以用php
  • 施工企业会计课后答案网站的优化从哪里进行
  • 太平鸟品牌门户网站建设天津建设工程网官网
  • 个人网站毕业设计最新国际要闻
  • 秸秆可以发酵吗网站建设吗网络营销工具的定义
  • 个人网站设计 优帮云互联网网站建设问卷调查
  • 图片网站 建站怎样做网络推广给我 你所有地方都上手
  • 购物 网站建设的市场分析申请免费建站
  • 企业型网站建设咨询电话wordpress jquery ui
  • 毕业设计2网站建设做宾馆网站好
  • 网站建设颜色搭配怎么在手机上做网站
  • 驻马店做网站的公司南宁小程序定制开发
  • 网站建设pad版本是什么学会wordpress后万能