1. 使用docker 命令
save
或者 bgsave 【推荐使用 异步】
rdb文件被存储在docker 中的 /data/dump.rdb 这里。
先复制docker中的rdb文件到当前目录下
docker cp xxx:/data/dump.rdb ./
2. 复制文件到目标机器
scp ./dump.rdb root@xxxx:/root/redis/dump.rdb
3. 在目标机器中,路径/root/redis下下载redis.conf 文件
wget http://download.redis.io/redis-stable/redis.conf
修改配置redis.conf 按照自己的需求:
比如:新增密码
requirepass xxxx123123
4. docker 通过镜像启动Redis,第一次启动
ps:这里推荐redis.conf 与dump.rdb 在一个文件中,原因是,在dump启动路径不同的情况下,dump.rdb 映射,每次启动都会去重新将dump.rdb 文件重新加载,这里的重启是指 docker restart 会重新加载dump.rdb 文件。
docker run -d --name my-redis -p 6379:6379 -v /root/redis:/data redis
至此整体数据迁移完成。
ps: 后面因为你有了这个dump.rdb 文件,之后所有的数据都会自动同步到这个dump.rdb 文件。
说实话,我不太知道之前docker中的dump.rdb 文件为啥没有,可能是我的数据量太少,save之后才有的这个文件。
我猜测,最开始是aof来存储数据,系统第一次启动发现存在rdb 文件,他认为已经能够触发同步数据到dump.rdb 文件,之后的操作都会在save 触发条件达成之后 比如sava 900 1 ....等,自动同步数据到此rdb种。再次之后测试,使用容器重启redis,则数据会先同步到dump.rdb 中,再自动重启redis服务。
若是关闭redis 再删除此dump.rdb 文件,启动redis容器,则所有数据丢失。