有没有一种方法可以在MarkLogic中以优化的方式为所有数据库安排备份



我在我们公司担任40多个MarkLogic集群的管理员。它们中的每一个都有不同的数据库和大小的数据库。我想知道是否有人写了代码来在一次尝试中创建所有数据库备份。

目前,我正在使用xqy脚本来检查我的所有数据库,并为每个数据库安排备份。我安排每次备份间隔5分钟,因为同时运行两次备份可能会导致磁盘上的文件不一致(至少过去是这样(。

如果能够在集群级别(而不是数据库级别(安排备份,并且该计划应该负责为集群中的所有数据库创建备份(可以选择排除某些数据库或特别包括某些数据库(,那就太好了。

此群集备份应备份第一个数据库,等待它完成,然后立即启动下一个数据库备份,依此类推。这将减少总备份时间。目前,对于一个总共只有5Gb数据的集群,我的备份计划需要一个多小时(从第一次备份到最后一次备份(:-(。系统数据库的备份已经需要10倍5分钟的等待时间。

在ML api术语中,我想到的是这样的东西:

admin:cluster-weekly-backup(
$backup-dir as xs:string,
$backup-period as xs:positiveInteger,
$days as xs:string+,
$start-time as xs:time,
$max-backups as xs:unsignedLong,
$include-databases as xs:string,     
$exclude-databases as xs:string,
$backup-security-db as xs:boolean,
$backup-schemas-db as xs:boolean,
$backup-triggers-db as xs:boolean,
[$include-replicas as xs:boolean],
[$journal-archiving as xs:boolean],
[$journal-archive-path as xs:string],
[$lag-limit as xs:unsignedLong]
) as element(configuration)

在这种情况下,您可以指定$include数据库或$exclude数据库,但不能同时指定两者。$include数据库的默认值是";所有";$exclude数据库的默认值是";无";

如果在"数据库"中指定1个或多个数据库$包括数据库";只有那些数据库正在备份如果在"数据库"中指定1个或多个数据库$排除数据库",这些数据库将从备份中排除

我希望有人已经创建了这样的东西,或者可以为我写一些代码

我的目标是在一个集群中只有一个用于备份的计划作业,它自动包括所有数据库,甚至应该备份新的数据库。

Casper

感谢您的回复FIona。

我意识到admin:cluster-***-backup是一个无效的命令,我只是想指出,如果有它的话会很方便。

我的经验是,同时运行多个备份,同时包括触发器和安全数据库,这可能会导致备份写入错误的目录,因此我希望按顺序运行备份。

我现在安排所有备份间隔5分钟,但即使是小型数据库也需要至少1小时才能完成所有备份。

对于大型数据库,由于必须在两次连续备份之间留出一定的空间,因此备份时间甚至会更长。

为了安排它们,我使用了一个xqy脚本,它还创建了备份目录,我甚至不必指定数据库,它从主机中获取所有数据库。

不过,问题不在于时间安排,而在于最大限度地减少从第一次备份到最后一次备份所需的时间,以确保备份窗口尽可能短,并且不会对运行时间内的性能产生影响。

我最近发现触发器、模块和安全数据库包含特定于另一个数据库的信息,因此我想将它们全部包含在这些数据库的备份中。

这些备份实际上是针对DR的,所有环境都在本地故障切换中运行,而在HA的3节点集群中运行。

Casper

最新更新