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.