Helpex - Trao đổi & giúp đỡ Đăng nhập

Nhận Bộ tự động sao lưu cho MongoDB (Với một chút Node.js)

Hướng dẫn này mô tả quy trình thiết lập sao lưu tự động cho MongoDB bằng Node.js. Trước khi chúng ta đi sâu vào quy trình hai bước này, bạn cần một vài điều kiện tiên quyết.

  • Các mô-đun Fs và lodash npm nên được cài đặt.
  • Đảm bảo rằng MongoDB của bạn được bảo vệ bằng tên người dùng và mật khẩu. Nếu không, hãy làm theo các bước tại đây .

Bước 1

Tạo tệp JavaScript trong thư mục dự án của bạn có tên mongodb_backup.js và thêm mã bên dưới. Tất nhiên, bạn sẽ muốn thay thế các biến <databaseUsername>, <databasePassword>, <databaseName>, <serverPath> bằng các giá trị của cơ sở dữ liệu của bạn.

var fs = require('fs');
var _ = require('lodash');
var exec = require('child_process').exec;

var dbOptions =  {
    user: '<databaseUsername>',
    pass: '<databasePassword>',
    host: 'localhost',
    port: 27017,
    database: '<databaseName>',
    autoBackup: true, 
    removeOldBackup: true,
    keepLastDaysBackup: 2,
    autoBackupPath: '<serverPath>' // i.e. /var/database-backup/
};

/* return date object */
exports.stringToDate = function (dateString) {
    return new Date(dateString);
}

/* return if variable is empty or not. */
export.empty = function(mixedVar) {
    var undef, key, i, len;
    var emptyValues = [undef, null, false, 0, '', '0'];
    for (i = 0, len = emptyValues.length; i < len; i++) {
        if (mixedVar === emptyValues[i]) {
        return true;
        }
    }
    if (typeof mixedVar === 'object') {
        for (key in mixedVar) {
return false;
        }
        return true;
    }
    return false;
};


// Auto backup script

dbAutoBackUp: function () {
// check for auto backup is enabled or disabled
    if (dbOptions.autoBackup == true) {
        var date = new Date();
        var beforeDate, oldBackupDir, oldBackupPath;
        currentDate = this.stringToDate(date); // Current date
        var newBackupDir = currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate();
        var newBackupPath = dbOptions.autoBackupPath + 'mongodump-' + newBackupDir; // New backup path for current backup process
        // check for remove old backup after keeping # of days given in configuration
        if (dbOptions.removeOldBackup == true) {
            beforeDate = _.clone(currentDate);
            beforeDate.setDate(beforeDate.getDate() - dbOptions.keepLastDaysBackup); // Substract number of days to keep backup and remove old backup
            oldBackupDir = beforeDate.getFullYear() + '-' + (beforeDate.getMonth() + 1) + '-' + beforeDate.getDate();
            oldBackupPath = dbOptions.autoBackupPath + 'mongodump-' + oldBackupDir; // old backup(after keeping # of days)
        }
        var cmd = 'mongodump --host ' + dbOptions.host + ' --port ' + dbOptions.port + ' --db ' + dbOptions.database + ' --username ' + dbOptions.user + ' --password ' + dbOptions.pass + ' --out ' + newBackupPath; // Command for mongodb dump process

        exec(cmd, function (error, stdout, stderr) {
            if (this.empty(error)) {
                // check for remove old backup after keeping # of days given in configuration
              if (dbOptions.removeOldBackup == true) {
                    if (fs.existsSync(oldBackupPath)) {
                        exec("rm -rf " + oldBackupPath, function (err) { });
                    }
                }
            }
        });
    }
}

Bước 2

Để tạo một cron, hãy cài đặt mô-đun cron từ trình quản lý gói NPM  bằng cách sử dụng  npm install cron --saveThêm đoạn mã dưới đây vào server.js / main.js / index.js global.CronJob = request ('Đường dẫn của bạn đến tệp cron.js'); . Bây giờ, hãy tạo  tệp cron.js trong dự án của bạn và dán đoạn mã bên dưới vào đó.

var CronJob = require('cron').CronJob;
var Cron = require('./mongodb_backup.js');

new CronJob('0 0 0 * * *', function() {
    Cron.dbAutoBackUp();
}, null, true, 'America/New_York');


Bất kỳ câu hỏi hoặc vấn đề? Hãy hỏi chúng tôi, và chúng tôi sẽ sẵn lòng giúp bạn.

9 hữu ích 0 bình luận 15k xem chia sẻ

Có thể bạn quan tâm

loading