ErJ*_*Jab 174 database data-migration database-migration redis
我目前有一个在云实例上运行的实时redis服务器,我想将这个redis服务器迁移到新的云实例,并将该实例用作我的新redis服务器.如果是MySQL,我会从旧服务器导出数据库并将其导入新服务器.我应该如何用redis做到这一点?
PS:我不打算设置复制.我想将redis服务器完全迁移到新实例.
Wil*_*hes 233
首先,在服务器A上创建转储.
A$ redis-cli
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis/"
127.0.0.1:6379> SAVE
OK
Run Code Online (Sandbox Code Playgroud)
这确保了它dump.rdb
是完全最新的,并向我们显示它的存储位置(/var/lib/redis/dump.rdb
在本例中).dump.rdb
也会定期自动写入磁盘.
接下来,将其复制到服务器B:
A$ scp /var/lib/redis/dump.rdb myuser@B:/tmp/dump.rdb
Run Code Online (Sandbox Code Playgroud)
停止B上的Redis服务器,复制dump.rdb(确保权限与以前相同),然后启动.
B$ sudo service redis-server stop
B$ sudo cp /tmp/dump.rdb /var/lib/redis/dump.rdb
B$ sudo chown redis: /var/lib/redis/dump.rdb
B$ sudo service redis-server start
Run Code Online (Sandbox Code Playgroud)
B上的Redis版本必须大于或等于A的版本,否则可能会遇到兼容性问题.
Anu*_*rag 106
通过运行BGSAVE
或SAVE
从命令行将数据库的快照保存到dump.rdb中.这将在与redis服务器相同的文件夹中创建名为dump.rdb的文件.查看所有服务器命令的列表.
将此dump.rdb复制到要迁移到的其他redis服务器.当redis启动时,它会查找此文件以初始化数据库.
Tom*_*son 33
如果你有服务器之间的连接,最好设置复制(这与微软不同,与SQL不同),新实例作为从属节点 - 然后你可以用一个命令将新节点切换到主节点并执行移动零停机时间.
小智 17
不管你相信与否,我只是为它做了一篇文章:
http://redis4you.com/articles.php?id=005&name=Seamless+migration+from+one+Redis+server+to+another
但是,如何知道主站和从站之间的数据传输何时完成?您可以使用INFO命令.
est*_*ani 14
也可以使用SLAVEOF命令迁移数据:
SLAVEOF old_instance_name old_instance_port
Run Code Online (Sandbox Code Playgroud)
检查您是否收到了钥匙KEYS *
.您也可以通过任何其他方式测试新实例,并在完成后转动复制:
SLAVEOF NO ONE
Run Code Online (Sandbox Code Playgroud)
Øyv*_*aar 13
现在你也可以使用MIGRATE,从2.6开始提供.
我不得不使用它,因为我只想将数据移动到一个数据库而不是所有数据库中.两个Redis实例位于两台不同的机器上.
如果无法从Redis-1直接连接到Redis-2,请使用ssh端口绑定:
ssh user@redis-2.foo.com -L 1234:127.0.0.1:6379
Run Code Online (Sandbox Code Playgroud)
一个小脚本,使用KEYS和MIGRATE每个键循环所有键.这是Perl,但希望你明白这个想法:
foreach ( $redis_from->keys('*') ) {
$redis_from->migrate(
$destination{host}, # localhost in my example
$destination{port}, # 1234
$_, # The key
$destination{db},
$destination{timeout}
);
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅http://redis.io/commands/migrate.
零停机迁移的关键要素是:
CONFIG SET slave-read-only no
)简而言之:
此外,redis 还具有允许在分离目标后立即禁用源 redis 以接受写入的选项:
min-slaves-to-write
min-slaves-max-lag
本主题涵盖
RedisLabs 团队非常好的解释https://redislabs.com/blog/real-time-synchronization-tool-for-redis-migration(使用 web.archive.org)
甚至他们用于迁移的交互式工具:https : //github.com/RedisLabs/redis-migrate