MarkLogic 7 - 使用rest-api进行数据库备份

时间:2015-10-20 21:09:11

标签: marklogic

我希望使用rest-api在ML7中自动备份。 由于没有开箱即用,我想我可以在所需的时间表上添加带有curl命令的新扩展和设置脚本。 听起来很简单,但出于某些原因,当我尝试安装我的扩展程序时,它会泄露出无效内容'和日志显示:

RESTAPI-INVALIDCONTENT: (err:FOER0000) Invalid content: invalid backupdb extension: could not parse XQuery extension backupdb; please see the server error log for detail XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, unexpected QName_; backupdb either is not a valid module or does not provide extension functions (delete, get, put, post) in the http://marklogic.com/rest-api/resource/backupdb namespace

这是我的扩展程序的代码:

xquery version "1.0-ml";

module namespace backupdb =
    "http://marklogic.com/rest-api/resource/backupdb";

import module namespace admin = "http://marklogic.com/xdmp/admin"
    at "/MarkLogic/admin.xqy";


declare variable $dbname := "database-backup";
declare variable $s3bucket := "bucket-destination";

declare function backupdb:put(
    $context as map:map,
    $params  as map:map,
    $input   as document-node()*
) as document-node()?
{
  let $dbname := map:get($params, $dbname)
  let $s3bucket := map:get($params, $s3bucket)
  xdmp:database-backup(
    (:xdmp:database-forests(xdmp:database($dbname)), $s3bucket ):)
    xdmp:database-forests(xdmp:database($dbname)), "s3://bucketname/folder" )
        (: "s3://s3bucket/folder"); :)

};

根据我的另一个问题的回答,我得到了stackoverflow,我认为我可以使用参数并且卷曲到类似的东西(成功安装后):

curl --anyauth --user "${USER}":"${pass}" -X PUT -d 'undefined'  'http://localhost:8040/v1/resources/backupdb?rs:database-backup=Documents&rs:bucket-destination=s3://bucket/folder'

POST方法返回相同的错误。 我在这里做错了什么?

欢迎任何建议。

谢谢你, 欧内斯特

2 个答案:

答案 0 :(得分:1)

此外,您的函数中存在语法错误(错过了FLWOR中的返回),您无需导入管理库。

答案 1 :(得分:0)

上面的curl命令调用资源服务扩展。在成功安装之前,您无法调用扩展程序。

另外,

  • curl需要PUT或POST请求才能在安装时使用-H 'content-type: _CONTENT_TYPE_HERE_';指定有效负载的内容类型内容类型应用/ XQuery的
  • 在安装时使用-d @/path/to/xquerysource.xqy将本地路径传递到 XQuery 源文件。

以下是有关安装资源服务扩展的文档,其中包括一个卷曲示例:

http://docs.marklogic.com/7.0/REST/PUT/v1/config/resources/%5Bname%5D

以下是有关调用资源服务扩展的文档:

http://docs.marklogic.com/7.0/REST/PUT/v1/resources/%5Bname%5D

希望有帮助,