Cách tạo và sử dụng bản backup MongoDB trên Ubuntu 14.04
Rất nhiều nhà phát triển ứng dụng web hiện đại ngày nay chọn sử dụng database NoSQL trong các dự án của họ và MongoDB thường là lựa chọn đầu tiên của họ. Nếu bạn đang sử dụng MongoDB trong một kịch bản production , điều quan trọng là bạn phải thường xuyên tạo bản backup để tránh mất dữ liệu. May mắn là MongoDB cung cấp các công cụ dòng lệnh đơn giản để tạo và sử dụng các bản backup . Hướng dẫn này sẽ giải thích cách sử dụng các công cụ đó.Để hiểu cách backup hoạt động mà không làm xáo trộn database hiện có của bạn, hướng dẫn này sẽ bắt đầu bằng cách hướng dẫn bạn cách tạo database mới và thêm một lượng nhỏ dữ liệu vào đó. Sau đó, bạn sẽ tạo một bản backup của database , sau đó xóa database và khôi phục nó bằng cách sử dụng bản backup .
Yêu cầu
Để làm theo, bạn cần :
Một server Ubuntu 14.04 64-bit với user không phải root có quyền sudo
MongoDB 3.0.7 được cài đặt trên server của bạn, bạn có thể thực hiện theo hướng dẫn cài đặt MongoDB này
Bước 1 - Tạo database mẫu
Tạo một bản backup của một database trống không hữu ích lắm, vì vậy trong bước này, ta sẽ tạo một database mẫu và thêm một số dữ liệu vào đó.
Cách dễ nhất để tương tác với một cá thể MongoDB là sử dụng shell mongo
. Mở nó bằng lệnh mongo
.
- mongo
Một khi bạn có MongoDB nhanh chóng, tạo ra một database mới gọi là myDatabase sử dụng use
helper.
- use myDatabase
switched to db myDatabase
Tất cả dữ liệu trong database MongoDB phải thuộc về một bộ sưu tập . Tuy nhiên, bạn không phải tạo bộ sưu tập một cách rõ ràng. Khi bạn sử dụng phương pháp insert
để ghi vào tập hợp không tồn tại, tập hợp được tạo tự động trước khi dữ liệu được ghi.
Bạn có thể sử dụng mã sau để thêm ba tài liệu nhỏ vào một bộ sưu tập có tên là myCollection bằng cách sử dụng phương pháp insert
:
- db.myCollection.insert([
- {'name': 'Alice', 'age': 30},
- {'name': 'Bill', 'age': 25},
- {'name': 'Bob', 'age': 35}
- ]);
Nếu quá trình chèn thành công, bạn sẽ thấy một thông báo giống như sau:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Bước 2 - Kiểm tra kích thước của database
Đến đây bạn có một database chứa dữ liệu, bạn có thể tạo một bản backup cho nó. Tuy nhiên, các bản backup sẽ lớn nếu bạn có một database lớn và để tránh nguy cơ hết dung lượng lưu trữ và do đó làm chậm hoặc hỏng server , bạn nên kiểm tra kích thước database trước khi tạo bản backup .
Bạn có thể sử dụng phương pháp stats
và kiểm tra giá trị của khóa dataSize
để biết kích thước database của bạn tính bằng byte.
- db.stats().dataSize;
Đối với database hiện tại, giá trị của dataSize
sẽ là một số nhỏ:
592
Lưu ý giá trị của dataSize
chỉ là ước tính sơ bộ về kích thước của bản backup .
Bước 3 - Tạo bản backup
Để tạo bản backup , bạn có thể sử dụng trình dòng lệnh có tên mongodump
. Theo mặc định, mongodump
sẽ tạo một bản backup của tất cả các database có trong version MongoDB. Để tạo bản backup của một database cụ thể, bạn phải sử dụng tùy chọn -d
và chỉ định tên của database . Ngoài ra, để mongodump
biết nơi lưu trữ bản backup , bạn phải sử dụng tùy chọn -o
và chỉ định một đường dẫn.
Nếu bạn vẫn ở bên trong shell mongo
, hãy thoát nó bằng cách nhấn CTRL+D
Nhập lệnh sau để tạo bản backup của myDatabase và lưu trữ nó trong ~/backups/first_backup
:
- mongodump -d myDatabase -o ~/backups/first_backup
Nếu quá trình tạo backup thành công, bạn sẽ thấy các thông báo log sau:
2015-11-24T18:11:58.590-0500 writing myDatabase.myCollection to /home/me/backups/first_backup/myDatabase/myCollection.bson 2015-11-24T18:11:58.591-0500 writing myDatabase.myCollection metadata to /home/me/backups/first_backup/myDatabase/myCollection.metadata.json 2015-11-24T18:11:58.592-0500 done dumping myDatabase.myCollection (3 documents) 2015-11-24T18:11:58.592-0500 writing myDatabase.system.indexes to /home/me/backups/first_backup/myDatabase/system.indexes.bson
Lưu ý bản backup không phải là một file duy nhất; nó thực sự là một folder có cấu trúc sau:
first_backup └── myDatabase ├── myCollection.bson ├── myCollection.metadata.json └── system.indexes.bson
Bước 4 - Xóa database
Để kiểm tra bản backup bạn đã tạo, bạn có thể sử dụng version MongoDB đang chạy trên một server khác hoặc xóa database trên server hiện tại của bạn. Trong hướng dẫn này, ta sẽ thực hiện phần sau.
Mở shell mongo
và kết nối với myDatabase .
- mongo myDatabase
Xóa database bằng phương pháp dropDatabase
.
- db.dropDatabase();
Nếu xóa thành công, bạn sẽ thấy thông báo sau:
{ "dropped" : "myDatabase", "ok" : 1 }
Đến đây bạn có thể sử dụng phương pháp find
trong bộ sưu tập của bạn để thấy rằng tất cả dữ liệu bạn đã chèn trước đó đã biến mất.
- db.myCollection.find();
Sẽ không có kết quả từ lệnh này vì không có dữ liệu để hiển thị trong database .
Bước 5 - Khôi phục database
Để khôi phục database bằng cách sử dụng bản backup được tạo bằng mongodump
, bạn có thể sử dụng trình dòng lệnh khác có tên mongorestore
. Trước khi bạn sử dụng nó, hãy thoát khỏi shell mongo
bằng cách nhấn CTRL+D
Sử dụng mongorestore
rất đơn giản. Tất cả những gì nó cần là đường dẫn của folder chứa bản backup . Đây là cách bạn có thể khôi phục database của bạn bằng cách sử dụng bản backup được lưu trữ trong ~/backupts/first_backup
:
- mongorestore ~/backups/first_backup/
Bạn sẽ thấy các thông báo log sau nếu hoạt động khôi phục thành công:
2015-11-24T18:27:04.250-0500 building a list of dbs and collections to restore from /home/me/backups/first_backup/ dir 2015-11-24T18:27:04.251-0500 reading metadata file from /home/me/backups/first_backup/myDatabase/myCollection.metadata.json 2015-11-24T18:27:04.252-0500 restoring myDatabase.myCollection from file /home/me/backups/first_backup/myDatabase/myCollection.bson 2015-11-24T18:27:04.309-0500 restoring indexes for collection myDatabase.myCollection from metadata 2015-11-24T18:27:04.310-0500 finished restoring myDatabase.myCollection (3 documents) 2015-11-24T18:27:04.310-0500 done
Để kiểm tra dữ liệu đã khôi phục, trước tiên, hãy mở mongo
shell và kết nối với myDatabase
.
- mongo myDatabase
Sau đó, gọi phương thức find
trên collection
của bạn.
- db.myCollection.find();
Nếu mọi thứ suôn sẻ, bây giờ bạn có thể xem tất cả dữ liệu bạn đã chèn trước đó.
{ "_id" : ObjectId("5654e76f21299039c2ba8720"), "name" : "Alice", "age" : 30 } { "_id" : ObjectId("5654e76f21299039c2ba8721"), "name" : "Bill", "age" : 25 } { "_id" : ObjectId("5654e76f21299039c2ba8722"), "name" : "Bob", "age" : 35 }
Kết luận
Trong hướng dẫn này, bạn đã học cách sử dụng mongodump
và mongorestore
để backup và khôi phục database MongoDB. Lưu ý tạo bản backup là một hoạt động tốn kém và có thể làm giảm hiệu suất của version MongoDB của bạn. Do đó, bạn chỉ nên tạo các bản backup của bạn trong giờ thấp điểm.
Để tìm hiểu thêm về các chiến lược backup MongoDB, bạn có thể tham khảo hướng dẫn sử dụng MongoDB 3.0 .
Các tin liên quan
Cách cài đặt puppet 4 trong thiết lập tác nhân chính trên Ubuntu 14.042016-03-08
Cách cài đặt, cấu hình và triển khai Rocket.Chat trên Ubuntu 14.04
2016-03-07
Cách cài đặt ứng dụng khách Dropbox làm dịch vụ trên Ubuntu 14.04
2016-02-24
Cách thiết lập cụm sản xuất Elasticsearch trên Ubuntu 14.04
2016-02-22
Cách chạy ứng dụng Meteor an toàn với Sandstorm trên Ubuntu 14.04
2016-02-10
Cách bảo vệ WordPress khỏi các cuộc tấn công XML-RPC trên Ubuntu 14.04
2016-02-04
Cách tạo blog với Hexo trên Ubuntu 14.04
2016-02-04
Cách cài đặt Graylog 1.x trên Ubuntu 14.04
2016-02-04
Cách bảo mật HAProxy bằng Let's Encrypt trên Ubuntu 14.04
2016-01-22
Cách backup database OrientDB của bạn trên Ubuntu 14.04
2015-12-19