MongoDB hot backup报错

现象

在使用Percona MongoDB时在对线上MongoDB进行热备时出错,导致热备失败。日志报如下信息:

1
2
3
4
5
>db.runCommand({createBackup: 1, backupDir: "/data/backup"})
{
"ok": 0,
"errmsg": "boost::filesystem::copy_file: No such file or directory:\"/usr/local/mongodb/data/db_27001/admin/collection/12-6714811575794587466.wt\", \"/data/backup/admin/collection/12-6714811575794587466.wt\""
}

原因

由于历史的原因,存在多个不版本的MongoDB,并为了方便管理,在库中配置了下列两个参数:

1
2
directoryPerDB: true
directoryForIndexes: true

这两个参数对于热备存在兼容性问题。

解决方案

  1. 使用更高版本的Percona MongoDB
  2. 如果一定要保留directoryPerDB和directoryForIndexes,需要重新进行初始化同步。