备份RIAK数据库数据

时间:2014-02-03 07:25:23

标签: backup riak

我对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 ()
你能帮帮我吗? :)

感谢。

1 个答案:

答案 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 backuprestore命令来备份整个群集。有几个原因。一,它存储每个对象的每个副本。这意味着,如果您使用默认副本值n=3运行,则将在备份文件中存储每个对象的3个副本。 二,该命令调用的代码是单线程的,而不是连接池。总而言之,恢复和备份将会很慢。

相反,我建议采用以下方法之一:

  1. 获取每个节点的数据目录的文件系统级快照。这是Basho目前推荐的方法,详情请参阅:http://docs.basho.com/riak/latest/ops/running/backups/

  2. 如果您确实需要“逻辑”备份(意味着,导出群集中包含的对象),您可以使用实验性的独立工具,例如Riak Data Migrator(但请参阅自述)。

  3. 我建议测试/计时这些方法,看看哪种方法更快。