通过 ssh 的 Redis 复制无法启动

标签 redis

将 Rails 应用程序基础架构一点一点地从一个托管区域迁移到另一个托管区域(仅通过公共(public)互联网链接它们)我需要将 Redis 实例从一侧迁移到另一侧。

与其转储数据(即使是小数据:只是队列),我更愿意使用主从设置来确保没有任何丢失并且我们没有任何停机时间。

互联网说 SSH 是我的 friend 。

Old1 是托管主 Redis 服务器的旧服务器。 Redis里面绑定(bind)了一个服务器的私网IP。

New1 是托管新 Redis 服务器的新服务器。

在 New1 上,我设置了 ssh 隧道/端口转发:

ssh -L 7380:<private_old1_ip>:6379 username@old1.publicname.ex

仍然在 New1 上,我检查我是否可以连接到两个实例:

redis-cli -p 6379
redis-cli -p 7380

在这两个基地,信息都有效。

在 New1:Redis 上,通过 redis-cli 我设置了从属模式:

salveof localhost 7380

现在这是关于 New1:Redis 的信息:

# Replication
role:slave
master_host:localhost
master_port:7380
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
master_link_down_since_seconds:1399544048
slave_priority:100
slave_read_only:1
connected_slaves:0

While Old1:Redis(仍然通过隧道):

# Replication
role:master
connected_slaves:1
slave0:<private_old1_ip>,6379,online

所以隧道已经启动,并且可以正常工作。 有足够的内存可用。 从站似乎连接在 Old1 端(但显示为 Old1 ip)。 从服务器说主链接状态已关闭并且同步未在进行中。

我错过了什么?

最佳答案

其实问题很简单

日志目的地设置为/dev/null,所以/var/log 中没有任何内容

存储目录设置为 ./,这显然不能很好地与守护程序设置配合使用,并导致同步时出现权限错误。

关于通过 ssh 的 Redis 复制无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23538973/

相关文章:

redis - 使用 Redis Sorted Sets 实现 Dense Rank

cassandra - 如何存储唯一的 "Likes"或 "Views"或按比例设置?

sorting - 根据他们在 Redis 上的分数对 2(或 N)排序集进行范围搜索的最佳解决方案

caching - openldap 或 redis 存储用户 session 的理想位置是什么

node.js 和 redis : is a redis store accessible across node connections?

python - 如何为在线用户创建我的 Flask 应用程序的 rq worker? (使用redis服务器)

heroku - Heroku-Redis内存> 'maxmemory',在hobby:dev中有一个20MB的文件,应该是25MB

c# - 如何在C#中更新redis列表

php - PHP 中的 Redis session 忽略 php.ini 设置

redis - 将一个 redis key 复制(备份)到另一个 key