Thứ ba, 08/03/2016 | 00:00 GMT+7

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 :

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
Đầu ra
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:

Đầu ra của một hoạt động insert () thành công
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ỏ:

Đầu ra của db.stats (). Datasize
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:

Nhật ký tạo backup thành công
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:

Cấu trúc folder của bản backup MongoDB
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:

Đầu ra của dropDatabase ()
{ "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:

Nhật ký 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 đó.

Đầu ra của find ()
{ "_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 mongodumpmongorestore để 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 .


Tags:

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.04
2016-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