首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MarkLogic 7-数据库-使用rest-api进行备份

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

Stack Overflow用户
提问于 2015-10-20 21:09:11
回答 2查看 282关注 0票数 0

我希望在ML7中使用rest实现自动备份。由于这不是现成的,所以我想我只需按所需的时间表添加新的扩展和安装脚本即可使用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

以下是我的分机代码:

代码语言:javascript
复制
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"); :)

};

根据我在堆栈溢出上得到的另一个问题的答案,我认为我可以使用参数,并且可以使用类似于(安装成功后)的卷曲:

代码语言:javascript
复制
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方法返回相同的错误。我在这里做错什么了?

欢迎任何建议。

谢谢你,欧内斯特

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-20 22:10:28

另外,您的函数中有一个语法错误(在FLWOR中缺少一个返回),并且不需要导入Admin库。

票数 1
EN

Stack Overflow用户

发布于 2015-10-20 21:48:57

上面的curl命令调用资源服务扩展。在安装成功之前,您不能调用分机。

另外,

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

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

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

希望这有帮助,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33246818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档