Pages

Tuesday, 25 June 2024

redis数据库的备份和迁移



1.备份/拷贝/重启

利用 redis 的持久化功能,redis 重启的时候,会自动从硬盘的持久化文件中读取数据再恢复到内存中。利用这里原理,把redis2 的持久化备份
替换成redis1 的,然后重启redis2,它就会从硬盘持久化文件恢复到内存,这样一来 redis2 就跟 redis1 一样了
要使用这个方案,就必须了解 redis 的持久化,redis 的持久化方案有2种,rdb 模式和 aof 模式:

rdb 保存整个redis的数据
aof 保存成 redis可以执行的命令
rdb覆盖过去之后,新的redis数据就没了,毕竟是覆盖操作。而aof因为是保存的命令,只是在新的redis`上重新执行了一遍,所以不会覆盖
新 redis 上的数据。 简单来说如果需要保留新 redis 的数据,可以使用aof。

rdb方案

# 链接redis
$ redis-cli -u 127.0.0.1 -p 6379 -a 你的密码
# 执行持久化
$ 127.0.0.1:6379> bgsave
# 查看文件位置
$ 127.0.0.1:6379> config get dir

复制 redis数据目录/dump.rdb 到另一台 redis 的数据目录下,启动即可。

    ps:先关闭目标redis,先复制文件的话,在目标redis关闭的时候,会生成持久化文件,覆盖你刚刚复制的文件

aof方案:
# 设置appendonly yes
$ 127.0.0.1:6379> config set appendonly yes

# or
$ redis-cli -u 127.0.0.1 -p 6379 -a 你的密码 config set appendonly yes
执行之后,就会在 redis的数据目录 看到 appendonly.aof 文件。

目标redis:
$ redis-cli -h aliyun_redis_instance_ip -p 6379 -a password --pipe < appendonly.aof

No comments:

Post a Comment