代码之家  ›  专栏  ›  技术社区  ›  baris

如何在不破坏或覆盖现有数据集的情况下将rdb文件转储到正在运行的/existing redis sentinel中?

  •  0
  • baris  · 技术社区  · 1 年前

    我的目标是在其中一个sentinel安装发生灾难的情况下尝试,我想在第二个redis-setinel安装上恢复该数据集。因此,这基本上是一种地理冗余和多数据中心类型的工作。

    在我的本地使用minikube的kubernetes环境中有2个sentinel安装,其中每个sentinel有1个主节点和2个工作节点。快照对两个安装都启用,为了便于解释,A和B将是这些安装的位置。

    我在本地计算机上做了一些测试,我将A的快照数据集复制到B的主实例的默认目录中,该目录为 /data 。当我这么做的时候,我还注意到同样的文件出现在minikube vm中,我猜这是安装的目录,位于 tmp/hostpath-provisioner/default/{redis-instance-name} .

    B的redis实例还没有添加关键字,因此数据集为空。现在,我确实尝试了几种不同的技术来将这个rdb文件转储/还原到B的主实例中。

    我确实试过这样的命令; redis-cli --rdb dump.rdb ,当我在关注主实例的日志时,我执行了这个命令,日志显示如下;

    1:M 06 Jun 2024 13:05:22.811 * Replica 127.0.0.1:<unknown-replica-port> asks for synchronization
    1:M 06 Jun 2024 13:05:22.811 * Delay next BGSAVE for diskless SYNC
    1:M 06 Jun 2024 13:05:27.914 * Starting BGSAVE for SYNC with target: replicas sockets
    1:M 06 Jun 2024 13:05:27.914 * Background RDB transfer started by pid 69396
    1:M 06 Jun 2024 13:05:27.916 * Connection with replica 127.0.0.1:<unknown-replica-port> lost.
    69396:C 06 Jun 2024 13:05:27.917 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
    1:M 06 Jun 2024 13:05:27.917 * Diskless rdb transfer, done reading from pipe, 0 replicas still up.
    1:M 06 Jun 2024 13:05:28.015 * Background RDB transfer terminated with success
    

    它没有将dump.rdb文件中的密钥添加到redis中。

    主要目的是实际上不干扰现有的redis。因此,卸载redis并使用helm再次安装它,或者因为它在k8s环境中,所以无法将其扩展到0并再次扩展到3。因为虽然密钥是通过dump.rdb文件添加到redis的,但我也希望现有的redis能够为传入的请求提供服务器。

    0 回复  |  直到 1 年前
    推荐文章