当前位置: 首页 > 面试题库 >

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

狄宾实
2023-03-14
问题内容

我有一个Redis实例,其中有两个数据库。现在,我想设置第二个实例并复制第一个实例,但是第二个实例应该仅具有一个数据库,并且仅复制第一个实例中的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
  • 将配置更改为 databases 1
  • 重新启动Redis

此时,您应该有一个只有一个数据库的运行Redis实例(原始Redis实例的db 0)

这里的关键是,当我们删除第二个数据库中的所有密钥,然后将数据集保存到磁盘时,生成的转储只有一个数据库。(感谢古尔帕塔普·辛格的暗示)



 类似资料:
  • 我的团队目前有几个试用版客户在使用我们的产品。当前将客户的数据库升级到最新版本的方法包括重新初始化数据库和手工重新创建客户配置,这并不多,但肯定很繁琐,并且会随着我们实施某种迁移策略而改变。 我的问题是,是否可以使用flyway(或其他一些工具)来管理我们产品的所有实例的数据库模式迁移,同时保留独立的实例数据?解决这类问题的最佳方法是什么。

  • 问题内容: 我试图弄清楚如何使用docker-compose.yml和2个从sql dump导入的数据库来实现docker。 以上返回以下内容: 基本上,我试图在单个docker compose文件中获取整个堆栈设置,创建2个数据库并导入相应的sql转储。有人有什么建议吗? 问题答案: 就像其他可能对此有所了解的人的更新一样。 我通过删除解决了这个问题: 从 docker-compose.yml中

  • 问题内容: 我对使用Docker容器的最佳做法有疑问。 我开发的每个应用程序都需要一个数据库。现在我的问题是我应该使用一个带有多个数据库的mysql docker实例还是应该为每个数据库创建一个实例。我为每个数据库创建一个实例时看到的缺点是我无法拥有有权访问所有数据库的用户。我出于安全原因知道这是一个专家,但是当我尝试从客户端进行备份时,需要在每个实例中进行备份。而且不是多个实例占用大量资源(尽管

  • 我有一个运行多个应用程序(服务)的Kubernetes环境。现在我有点困惑如何设置MySQL数据库实例。 根据不同的来源,每个微服务都应该有自己的数据库。我应该在高可用性模式下创建一个运行多个数据库的MySQL statefulset,还是应该为每个运行一个数据库的应用程序(服务)部署一个单独的MySQL实例。 我的第一个想法将是第一个选择,因此HA应该在哪里有用?我想听听大家对此有什么不同的看法

  • 如果我分割成多个数据库,所有的东西仍然是单线程的,而且我仍然只能使用一个核心。如果我只是在同一个盒子上启动另一个Redis实例,我将使用一个额外的核心。最重要的是,我不能给Redis数据库命名,也不能给它们任何更符合逻辑的标识符。那么,说完所有这些,为什么/什么时候我会想要使用多个Redis数据库,而不是仅仅为我想要的每个额外数据库构建一个额外的Redis实例呢?与此相关的是,为什么Redis不尝

  • 问题内容: 我需要将数据从一个表复制到另一个表。这两个表几乎具有相同的结构,但是位于不同的数据库中。 我试过了 我尝试此操作,但跨数据库出现错误…未实现 问题答案: 这是一个非常简单的任务。只需为此目的使用dblink: 如果您需要定期从外部数据库中获取数据,明智的做法是定义服务器和用户映射。然后,您可以使用较短的语句: