【发布时间】:2012-06-22 11:25:26
【问题描述】:
我有一个 node.js 应用程序,使用 RedisToGo 并在 Heroku 中运行。我想将 Redis To Go 数据库复制到 localhost 进行测试。
在开发 Ruby on Rails 应用程序时,我可以使用heroku db:pull 命令。有什么类似的命令可以用于 node.js 和 Redis 吗?
谢谢。
【问题讨论】:
标签: node.js heroku redis redistogo
我有一个 node.js 应用程序,使用 RedisToGo 并在 Heroku 中运行。我想将 Redis To Go 数据库复制到 localhost 进行测试。
在开发 Ruby on Rails 应用程序时,我可以使用heroku db:pull 命令。有什么类似的命令可以用于 node.js 和 Redis 吗?
谢谢。
【问题讨论】:
标签: node.js heroku redis redistogo
您可以将本地 Redis 实例从属到 RedisToGo 实例 - http://redistogo.com/documentation/exporting
【讨论】:
有可以从 redistogo 支持知识库获得指南,但它被删除了,我使用返回机器获取它的内容并做了一个要点:https://gist.github.com/mmcdaris/29cfe920c846ae6dd5c6eb354c9abdd2 相同的结果不同的方法。
【讨论】:
这些是我为 Heroku Redis 实例创建本地备份所采取的步骤,但这对 RedisToGo 和 RedisCloud 等其他提供商应该有效。
在您要进行备份的机器上,跳转到 redis CLI:
redis-cli
如果您的主 Redis 数据库(您要复制的数据库)有密码:
config set masterauth <password>
运行以下命令开始复制:
SLAVEOF <host> <port>
要检查复制是否正在进行运行:
INFO replication
您应该会看到如下内容:
# Replication
role:slave
master_host:some-host.compute-1.amazonaws.com
master_port:6519
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:35492914
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
注意master_link_status 应该是up。
同步完成后,INFO replication 应显示:
master_sync_in_progress:0
要检查数据集是否已同步,您可以比较数据库的大小:
DBSIZE
给定从属数据库和主数据库匹配的键数,然后将数据库保存到磁盘:
BGSAVE
CONFIG GET dir
你应该找到 config 命令列出的dump.rdb。
最后,您可以通过以下方式停止复制:
SLAVEOF NO ONE
【讨论】: