在redis 数据迁移(RDB文件-》集群)成功基础上再接再厉,迁移单节点到集群
注意一下涉及到的文件格式:要确保换行编码-LF(UNIX)
1. 网络互通检查
首先检查集群使用网段:
$ docker network lsNETWORK ID NAME DRIVER SCOPEbfa40a6eb2ba bridge bridgelocalb6055b32849c docker-redis-cluster_redisnet bridgelocal复制代码
集群使用网络docker-redis-cluster_redisnet
2 单节点redis
2.1 配置文件
redis.conf
port 6379cluster-enabled nocluster-config-file nodes.confcluster-node-timeout 5000appendonly no复制代码
2.2 docker-compose.yml
这里使用和集群一个网段:docker-redis-cluster_redisnet
注意-- external:true
version:'3'networks:docker-redis-cluster_redisnet:external:trueservices:redis:image:redis:6.0.9container_name:redishostname:redisrestart:alwaysports:-7000:6379networks:docker-redis-cluster_redisnet:ipv4_address:10.0.0.9volumes:-./conf/redis.conf:/etc/redis/redis.conf-./data/:/data/command:redis-server/etc/redis/redis.conf--appendonlyno复制代码
2.3 部署一个单节点redis
$ docker-compose up --build -dCreating redis ...done复制代码
3. 单节点--》集群迁移
3.1 获得迁移镜像
$ docker pull lyman1567/redis-migrate-toolUsing default tag: latestlatest: Pulling from lyman1567/redis-migrate-tool2d473b07cdd5: Pull completedb3f9a69e07b: Pull completeDigest: sha256:c6d39642f42d1882058664a10920cdff97b1439d4c5a91593549d8c1b3e68529Status: Downloaded newer imageforlyman1567/redis-migrate-tool:latestdocker.io/lyman1567/redis-migrate-tool:latest复制代码
3.2 迁移数据配置(rmt.conf)
C:/redis-migrate-tool/data/conf/rmt.conf
注:集群-集群--只需要把type:single改成type: redis cluster就可
#rmt.conf[source]type: singleservers: - 10.0.0.9:6379[target]type: redis clusterservers: - 10.0.0.10:6379[common]listen: 0.0.0.0:8888复制代码
3.3 开始嵌入单节点
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8986142ff4d4 redis:6.0.9"docker-entrypoint.s…"11 minutes ago Up 11 minutes 0.0.0.0:7000->6379/tcp redis9775b194c25b redis-cluster-node"/bin/bash /start.sh"51 minutes ago Up 51 minutes 0.0.0.0:6380->6379/tcp docker-redis-cluster_redis-2_1419e4364c06f redis-cluster-node"/bin/bash /start.sh"51 minutes ago Up 51 minutes 0.0.0.0:6384->6379/tcp docker-redis-cluster_redis-6_1e3a6230f2a20 redis-cluster-node"/bin/bash /start.sh"51 minutes ago Up 51 minutes 0.0.0.0:6382->6379/tcp docker-redis-cluster_redis-4_1bf62da9c04d9 redis-cluster-node"/bin/bash /start.sh"51 minutes ago Up 51 minutes 0.0.0.0:6381->6379/tcp docker-redis-cluster_redis-3_1a507843f88eb redis-cluster-node"/bin/bash /start.sh"51 minutes ago Up 51 minutes 0.0.0.0:6379->6379/tcp docker-redis-cluster_redis-1_1843d7f746595 redis-cluster-node"/bin/bash /start.sh"51 minutes ago Up 51 minutes 0.0.0.0:6383->6379/tcp docker-redis-cluster_redis-5_1复制代码
把工具嵌入此name:redis的单节点
$ docker run -it --network=container:8986142ff4d4 --pid=container:8986142ff4d4 -v C:/redis-migrate-tool/data/conf:/usr/local/etc lyman1567/redis-migrate-tool bash复制代码
4. 进入容器验证迁移配置
[root@redis /]# cd /usr/local/etc[root@redis etc]# lsrmt.conf[root@redis etc]# vi rmt.conf[source]type: singleservers: - 10.0.0.9:6379[target]type: redis clusterservers: - 10.0.0.10:6379[common]listen: 0.0.0.0:8888复制代码
5. 执行迁移并查看output.log文件
5.1 执行迁移
[root@redis etc]# redis-migrate-tool -c rmt.conf -o output.log -d[root@redis etc]#复制代码
5.2 查看output.log文件
和output.log同目录下会出现node10.0.0.96379@16379-1612084077217638-4314.rdb等临时文件
临时文件消失时,就证明迁移完毕了
[2021-01-31 08:09:52.784] rmt_core.c:525 Nodes count of source group : 1[2021-01-31 08:09:52.784] rmt_core.c:526 Total threads count : 12[2021-01-31 08:09:52.785] rmt_core.c:527 Read threads count assigned: 1[2021-01-31 08:09:52.785] rmt_core.c:528 Write threads count assigned: 1[2021-01-31 08:09:52.785] rmt_core.c:836 instances_by_host:[2021-01-31 08:09:52.786] rmt_core.c:840 10.0.0.9:6379[2021-01-31 08:09:52.786] rmt_core.c:842 [2021-01-31 08:09:52.786] rmt_core.c:2443 Total threads count in fact: 2[2021-01-31 08:09:52.786] rmt_core.c:2444 Read threads count in fact: 1[2021-01-31 08:09:52.786] rmt_core.c:2445 Write threads count in fact: 1[2021-01-31 08:09:52.787] rmt_core.c:2454 read thread(0):[2021-01-31 08:09:52.787] rmt_core.c:2460 10.0.0.9:6379[2021-01-31 08:09:52.787] rmt_core.c:2487 write thread(0):[2021-01-31 08:09:52.787] rmt_core.c:2493 10.0.0.9:6379[2021-01-31 08:09:52.788] rmt_core.c:2550 migrate job is running...[2021-01-31 08:09:52.788] rmt_redis.c:1735 Start connecting to MASTER[10.0.0.9:6379].[2021-01-31 08:09:52.788] rmt_redis.c:1769 Master[10.0.0.9:6379] replied to PING, replication can continue...[2021-01-31 08:09:52.788] rmt_redis.c:1080 Partial resynchronization for MASTER[10.0.0.9:6379] not possible (no cached master).[2021-01-31 08:09:52.798] rmt_redis.c:1139 Full resync from MASTER[10.0.0.9:6379]: 59f526849c29aa8b2dbb2d835fc85bc91d326739:0[2021-01-31 08:10:59.012] rmt_redis.c:1546 MASTER <-> SLAVE sync: receiving 1151163248 bytes from master[10.0.0.9:6379][2021-01-31 08:11:44.377] rmt_redis.c:1652 MASTER <-> SLAVE sync: RDB data for node[10.0.0.9:6379] is received, used: 111 s[2021-01-31 08:11:44.377] rmt_redis.c:1672 rdb file node10.0.0.9:6379-1612080592798302-63.rdb write complete[2021-01-31 08:13:31.756] rmt_redis.c:6685 Rdb file for node[10.0.0.9:6379] parsed finished, use: 107 s.[2021-01-31 08:13:31.873] rmt_redis.c:6793 All nodes' rdb file parsed finished for this write thread(0).复制代码
6. 验证集群
127.0.0.1:6379> info....# Keyspacedb0:keys=495601,expires=0,avg_ttl=0