Backup mongodb với mongodump trong ubuntu

Nội dung bài viết

Video học lập trình mỗi ngày

Bạn biết đấy, vì sao chúng ta lại backup dữ liệu hằng tuần. Thậm chí những hệ thống lớn như tài chính, chứng khoán thì backup liên tục có thể mỗi giây một lần. Vì đây là một công việc quan trọng và cần thiết hơn hết. Vì vậy, với những ai đang sử dụng mongodb thì bài viết này sẽ hướng dẫn backup mongodb auto. Sẽ nhanh thôi. 

Xem thêm: Mongodb create database and user terminal

Những ai mà muốn test chạy thủ công thì xem hướng dẫn này trên youtube: "How to backup MongoDb on Linux". Còn đây là cách auto.

Create Backup Script

Đầu tiên chúng ta tạo một file tập hợp những lệnh kết hợp như mongodump ...

$nano backup_mongo.sh

Bạn chỉ cần copy file này là ổn, nhớ thay tham số của bạn. Một file ghi chi tiết cụ thể của một LTV.

#!/bin/sh

#=====================================================================
# Set the following variables as per your requirement
#=====================================================================
# Database Name to backup
MONGO_DATABASE="testBackup"
# Database host name
MONGO_HOST="127.0.0.1"
# Database port
MONGO_PORT="27017"
# Backup directory
BACKUPS_DIR="/var/backups/$MONGO_DATABASE"
# Database user name
DBUSERNAME="new_user"
# Database password
DBPASSWORD="some_password"
# Authentication database name
DBAUTHDB="testBackup"
# Days to keep the backup
DAYSTORETAINBACKUP="1"
#=====================================================================

TIMESTAMP=`date +%F-%H%M`
BACKUP_NAME="$MONGO_DATABASE-$TIMESTAMP"

echo "Performing backup of $MONGO_DATABASE"
echo "--------------------------------------------"
# Create backup directory
if ! mkdir -p $BACKUPS_DIR; then
  echo "Can't create backup directory in $BACKUPS_DIR. Go and fix it!" 1>&2
  exit 1;
fi;
# Create dump
mongodump -d $MONGO_DATABASE --username $DBUSERNAME --password $DBPASSWORD --authenticationDatabase $DBAUTHDB
# Rename dump directory to backup name
mv dump $BACKUP_NAME
# Compress backup
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
# Delete uncompressed backup
rm -rf $BACKUP_NAME
# Delete backups older than retention period
find $BACKUPS_DIR -type f -mtime +$DAYSTORETAINBACKUP -exec rm {} +
echo "--------------------------------------------"
echo "Database backup complete!"

Bước tiếp theo set quyền cho file mới tạo

~# chmod +x backup_mongo.sh

Tiếp theo test thử bằng tay

root@anonystick:~# ./backup_mongo.sh
Performing backup of testBackup
--------------------------------------------
2020-12-01T07:13:38.856+0000    writing testBackup.testBackup to dump/testBackup/testBackup.bson
2020-12-01T07:13:38.857+0000    done dumping testBackup.testBackup (1 document)
2020-12-01T07:13:38.858+0000    writing testBackup.test to dump/testBackup/test.bson
2020-12-01T07:13:38.858+0000    done dumping testBackup.test (1 document)
testBackup-2020-12-01-0713/
testBackup-2020-12-01-0713/testBackup/
testBackup-2020-12-01-0713/testBackup/testBackup.bson
testBackup-2020-12-01-0713/testBackup/testBackup.metadata.json
testBackup-2020-12-01-0713/testBackup/test.metadata.json
testBackup-2020-12-01-0713/testBackup/test.bson
--------------------------------------------
Database backup complete!
root@anonystick:~# cd /var/backups/
root@anonystick:/var/backups# ls -la
total 1432
drwxr-xr-x  3 root root     4096 Dec  1 07:13 .
drwxr-xr-x 14 root root     4096 Sep 29 02:11 ..
-rw-r--r--  1 root root    61440 Nov  6 06:25 alternatives.tar.0
-rw-r--r--  1 root root     2893 Oct 26 06:25 alternatives.tar.1.gz
-rw-r--r--  1 root root     2882 Oct  3 06:25 alternatives.tar.2.gz
-rw-r--r--  1 root root     2527 Sep 29 06:25 alternatives.tar.3.gz
-rw-r--r--  1 root root    15788 Nov  5 07:26 apt.extended_states.0
-rw-r--r--  1 root root     1724 Nov  5 06:40 apt.extended_states.1.gz
-rw-r--r--  1 root root     2368 Oct 26 02:25 apt.extended_states.2.gz
-rw-r--r--  1 root root     2369 Oct  3 02:20 apt.extended_states.3.gz
-rw-r--r--  1 root root     2027 Sep 29 04:51 apt.extended_states.4.gz
-rw-r--r--  1 root root      886 Aug 25 10:59 apt.extended_states.5.gz
-rw-r--r--  1 root root       11 Aug 25 10:49 dpkg.arch.0
-rw-r--r--  1 root root       43 Aug 25 10:49 dpkg.arch.1.gz
-rw-r--r--  1 root root       43 Aug 25 10:49 dpkg.arch.2.gz
-rw-r--r--  1 root root       43 Aug 25 10:49 dpkg.arch.3.gz
-rw-r--r--  1 root root      437 Aug 25 10:54 dpkg.diversions.0
-rw-r--r--  1 root root      202 Aug 25 10:54 dpkg.diversions.1.gz
-rw-r--r--  1 root root      202 Aug 25 10:54 dpkg.diversions.2.gz
-rw-r--r--  1 root root      202 Aug 25 10:54 dpkg.diversions.3.gz
-rw-r--r--  1 root root      281 Oct  2 14:59 dpkg.statoverride.0
-rw-r--r--  1 root root      188 Oct  2 14:59 dpkg.statoverride.1.gz
-rw-r--r--  1 root root      188 Oct  2 14:59 dpkg.statoverride.2.gz
-rw-r--r--  1 root root      172 Sep 29 04:51 dpkg.statoverride.3.gz
-rw-r--r--  1 root root   680146 Nov  5 07:26 dpkg.status.0
-rw-r--r--  1 root root   202897 Oct 26 02:26 dpkg.status.1.gz
-rw-r--r--  1 root root   202048 Oct  3 02:20 dpkg.status.2.gz
-rw-r--r--  1 root root   183717 Sep 29 04:51 dpkg.status.3.gz
-rw-------  1 root root      729 Oct  1 02:38 group.bak
-rw-------  1 root shadow    603 Oct  1 02:38 gshadow.bak
-rw-------  1 root root     1724 Oct  1 02:38 passwd.bak
-rw-------  1 root shadow   1303 Oct  1 02:38 shadow.bak
drwxr-xr-x  2 root root     4096 Dec  1 07:13 testBackup
root@anonystick:/var/backups# cd  testBackup/

Chú ý: Chính là file này đây "testBackup" Sau khi chạy bằng tay cảm thấy ok thì tiến hành setup crontab. Giả sử bạn đã install crontab rồi thì add thêm như sau: Xem thêm: How to set up nodejs cron jobs 

# MongoDB Backup
00 00 * * * /path/to/script/mongobackup.sh

Lệnh này cho phép chúng ta chạy backup lúc 12h hằng đêm.

Có thể bạn đã bị missing