redis - 从具有多个数据库的实例复制单个 Redis 数据库

标签 redis database-replication

我有一个具有两个数据库的 Redis 实例。现在我想设置第二个实例和 replicate第一个实例,但第二个实例应该只有一个数据库,并且只从第一个实例复制 db 0。 当我尝试这样做时(为第二个实例设置 slaveof ...),我在 Redis 日志文件中收到以下错误消息:

FATAL: Data file was created with a Redis server configured to handle more than 1 databases. Exiting

我尝试使用 redis-dump但是当我尝试将生成的转储导入新实例时出现错误。 (我认为与 2 dbs 和 1 db 无关,而是 redis-dump 中的一个错误,它仍处于 alpha 阶段。

怎么办?

最佳答案

我是这样实现的(在 Gurpartap Singh 的帮助下):

  • 像第一个一样用databases 2配置第二个Redis实例
  • 复制第一个实例(参见 http://redis.io/topics/replication)
  • 打开第二个 Redis 实例的命令行(使用 redis-cli)
  • 在 Redis CLI 上:SELECT 1(选择第二个数据库)
  • 在 Redis CLI 上:FLUSHDB(删除第二个数据库中的所有键)
  • 在 Redis CLI 上:SAVE(将数据集保存到磁盘)
  • 退出 Redis CLI 并停止 Redis
  • 将配置更改为数据库 1
  • 再次启动Redis

此时你应该有一个正在运行的 Redis 实例只有一个 db(原始 Redis 实例中的 db 0)

这里的关键是,当我们删除第二个数据库中的所有键,然后将数据集保存到磁盘时,生成的转储只有一个数据库。 (感谢 Gurpartap Singh 的提示)

关于redis - 从具有多个数据库的实例复制单个 Redis 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819387/

相关文章:

使用 SSL 时 Azure Redis 连接失败

python - 如何在测试 FastAPI 应用程序时触发生命周期启动和关闭?

mysql - 我们可以在 MySQL 5.0 复制中做什么来解决带宽问题?

java - DBCursor.getServerAddress 是否按我的预期工作?

MySQL 复制 : Row based?

postgresql - pg_ctl promote not suspending replication 快速

windows - 调用 tcp [::1]:6397: connectex: 无法建立连接,因为目标机器主动拒绝它

java - 调用方法 "SecurityUtils.getSubject();"是否总是会命中 redis 数据库?

caching - WebApi - Redis 缓存与输出缓存

主方案更改后 MySQL 复制失败