我对RIAK很新。我有一个包含5个节点的集群,我想备份集群上的数据。我运行以下命令来备份数据。
[root@PCPRIAK33 local]# riak-admin backup localhost riak /var/local/temp all
但是我收到以下错误。
Attempting to restart script through sudo -H -u riak
{"init terminating in do_boot",{{nocatch,{could_not_reach_node,localhost}},[{riak_kv_backup,ensure_connected,1,[{file,"src/riak_kv_backup.erl"},{line,171}]},{riak_kv_backup,backup,3,[{file,"src/riak_kv_backup.erl"},{line,40}]},{erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,572}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}
init terminating in do_boot ()
你能帮帮我吗? :)
感谢。
答案 0 :(得分:4)
我会首先回答您的问题(如何使用riak-admin backup
),但最后会看到有关首选备份方法的评论。
命令是:
riak-admin backup <node name> <erlang cookie> <file name with path> all
您可以在riak vm.args
文件中找到的节点名称(查找看起来像-name riak@127.0.0.1
的行)。它的格式为riak@xx.xx.xx.xx
,带有IP地址。因此,在我的本地计算机上,单个节点名为riak@127.0.0.1
。
erlang Cookie也可以在vm.args
文件中找到,很可能是erlang
。
文件名参数应该是实际文件名的完全限定路径(意思是,您不能仅为其指定目录名)。文件名和扩展名是任意的。所以,我会使用像cluster_backup.riak
这样的东西。
所以,总而言之,你的backup command应该是这样的:
riak-admin backup riak@<your node ip> riak /var/local/temp/cluster_backup.riak all
现在,尽管如此,我不建议使用riak-admin backup
和restore
命令来备份整个群集。有几个原因。一,它存储每个对象的每个副本。这意味着,如果您使用默认副本值n=3
运行,则将在备份文件中存储每个对象的3个副本。
二,该命令调用的代码是单线程的,而不是连接池。总而言之,恢复和备份将会很慢。
相反,我建议采用以下方法之一:
获取每个节点的数据目录的文件系统级快照。这是Basho目前推荐的方法,详情请参阅:http://docs.basho.com/riak/latest/ops/running/backups/
如果您确实需要“逻辑”备份(意味着,导出群集中包含的对象),您可以使用实验性的独立工具,例如Riak Data Migrator(但请参阅自述)。
我建议测试/计时这些方法,看看哪种方法更快。