# Redis 数据库迁移方案
# redis 迁移方案
整理一下常用的几种 redis 迁移的方案,分别对应不同的场景。
- 备份 / 拷贝 / 重启
- redis-dump
- 客户端
# 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 |
# 2. redis-dump
redis-dump 是一个第三方的工具,提供 redis 的导出和导入。
# 安装步骤
1、安装 rvm。可参考官网:http://rvm.io/
# gpg2 没安装的化自行安装 `apt install gnupg2` | |
$ gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB | |
$ \curl -sSL https://get.rvm.io | bash -s stable | |
# 按照系统提示执行,添加系统环境 | |
$ source /etc/profile.d/rvm.sh | |
# 确认安装成功 | |
$ rvm list known |
2、安装 ruby 参考官方网站:http://www.ruby-lang.org/en/d...
# 移除国外的库,不然下载不了 | |
$ gem sources --remove https://rubygems.org/ | |
# 安装国内的资源地址 | |
$ gem sources -a https://gems.ruby-china.com/ | |
# 安装 | |
$ gem install redis-dump -V |
3、安装 redis-dump
# 导出所有db | |
$ redis-dump -u 127.0.0.1:6371 > db_full.json | |
# 导出db15 | |
$ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json | |
# 导入 | |
$ < db_full.json redis-load -u 127.0.0.1:6379 | |
$ < db_db15.json redis-load -u 127.0.0.1:6379 -d 15 | |
# OR | |
$ cat db_full | redis-load | |
$ cat db_db15.json | redis-load -d 15 | |
# 使用密码的小技巧(注意密码前面的`:`) | |
$ redis-dump -u :密码@127.0.0.1:6371 |
# 一些简单的使用
# 导出所有 db | |
$ redis-dump -u 127.0.0.1:6371 > db_full.json | |
# 导出 db15 | |
$ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json | |
# 导入 | |
$ < db_full.json redis-load -u 127.0.0.1:6379 | |
$ < db_db15.json redis-load -u 127.0.0.1:6379 -d 15 | |
# OR | |
$ cat db_full | redis-load | |
$ cat db_db15.json | redis-load -d 15 | |
# 使用密码的小技巧 (注意密码前面的 `:`) | |
$ redis-dump -u :密码@127.0.0.1:6371 |
# 3. 客户端
使用
phpredisadmin
等客户端,自带导入、导出
git 库 https://github.com/ErikDubbel...
Example: http://dubbelboer.com/phpRedi...
功能截图: