Powershell scripts for MSSQL or MongoDB backup

Trong thế giới nguy hiểm hiện nay của tin tặc và hacker rình rập ngày đêm, thì việc bảo vệ thành quả, sản phẩm của bạn hết sức quan trọng.

Một số cách thức phá hoại tiêu biểu

  • Xóa sạch database của bạn, để lại thông tin email/bitcoin address đòi chuộc
  • Encrypt toàn bộ data trên server của bạn và để lại thông tin email/bitcoin address đòi chuộc

Chính việc này dẫn đến nhu cầu backup nhanh chóng và kịp thời, đồng thời phải tự động hóa quá trình này.

Script Powershell dưới đây chia sẻ cách Backup database trên Server của bạn, đồng thời đẩy lên gitlab.com để lưu trữ, sau đó thông báo cho bạn kết quả thực hiện.

Bước 1: Tạo script Backup MongoDB/MSSQL

# Xóa backup cũ
Remove-Item -LiteralPath Folder_Path_Backup_MongoDB -recurse -force
# Thực hiện backup & nén file
mongodump -d MongoDB_Name -o Folder_Path_Backup_MongoDB 
$date = Get-Date -Format "yyyyMMddHHmm"
Compress-Archive -Path Folder_Path_Backup_MongoDB\MongoDB_Name\* -DestinationPath Folder_Path_Backup_MongoDB\MongoDB_Name_$date.zip  -force  
# Commit lên gitlab. Folder chứa backup phải setup git trước
CD Folder_Path_Backup_MongoDB 
git add *; 
git commit -m 'Backup Database MongoDB'; 
git push -q origin master
# Gửi noti lên bot
wget https://bot.tuanitpro.com/api/v1/send?text=Backup_MongoDB%20successfully -UseBasicParsing

Script backup SQL Server

Remove-Item -LiteralPath Folder_Path_Backup_MSSQL -recurse -force
New-Item -ItemType "directory" -Path "Folder_Path_Backup_MSSQL"
$date = Get-Date -Format "yyyyMMddHHmm"
Backup-SqlDatabase -ServerInstance ".\SQLEXPRESS" -Database "DB_Name" -BackupFile "Folder_Path_Backup_MSSQL\DB_Name_$date.bak"

CD "Folder_Path_Backup_MSSQL"
git add *; 
git commit -m 'Backup Database MSSQL'; 
git push -q origin master

wget https://bot.tuanitpro.com/api/v1/send?text=Backup_MSSQL%20successfully -UseBasicParsing

Lưu script lại để dùng cho mục đích chạy auto.
Bước 2: Thêm vào Task Scheduler của Windows để thực hiện chạy mỗi ngày.

-ExecutionPolicy Bypass C:\data\backup-mongodb.ps1

Chúc các bạn thành công.

MongoDB shell command common

Add new field to every document in a MongoDB collection

db.your_collection.update({},
                          {$set : {"new_field":1}},
                          {upsert:false,
                          multi:true}) 

Remove field from every document in a MongoDB collection

db.your_collection.update({},
                          {$unset : {"old_field":null}},
                          {upsert:false,
                          multi:true}) 

Remove field from every nested document in a MongoDB collection

db.your_collection.update({},
                          {$unset : {"old_field.$[].old_field_child":null}},
                          {upsert:false,
                          multi:true}) 

Rename field from every document in a MongoDB collection

db.your_collection.update({},
                          {$rename: {"old_field_name":"new_field_name"}},
                          {upsert:false,
                          multi:true}) 

Backup and Restore

mongodump -d CollectionName-o c:\data\mongodb\backup
mongorestore c:\data\mongodb\backup