Sao lưu cơ sở dữ liệu không gì khác ngoài một cách để bảo vệ hoặc khôi phục dữ liệu. Đây là quá trình lưu trữ trạng thái hoạt động, kiến trúc và dữ liệu của cơ sở dữ liệu của bạn. Nó có thể rất hữu ích trong các tình huống ngừng hoạt động kỹ thuật hoặc thảm họa. Vì vậy, điều cần thiết là phải giữ bản sao lưu cơ sở dữ liệu của bạn và cơ sở dữ liệu của bạn có một quy trình tốt và dễ dàng để sao lưu.
MongoDB cung cấp một số công cụ / kỹ thuật để sao lưu cơ sở dữ liệu của bạn một cách dễ dàng.
Trong bài viết này, chúng ta sẽ thảo luận về một số quy trình sao lưu và khôi phục MongoDB hàng đầu.
Nói chung, có ba tùy chọn phổ biến nhất để sao lưu máy chủ / cụm MongoDB của bạn.
- Mongodump / Mongorestore
- Trình quản lý đám mây MongoDB
- Ảnh chụp nhanh cơ sở dữ liệu
Ngoài các tùy chọn chung này, có nhiều cách khác để sao lưu MongoDB của bạn. Chúng tôi cũng sẽ thảo luận về tất cả các tùy chọn này trong bài viết này. Hãy bắt đầu.
MongoDump / MongoRestore
Nếu bạn có một cơ sở dữ liệu nhỏ (<100GB) và bạn muốn có toàn quyền kiểm soát các bản sao lưu của mình, thì Mongodump và Mongorestore là lựa chọn tốt nhất của bạn. Đây là các lệnh shell mongo có thể được sử dụng để sao lưu cơ sở dữ liệu hoặc bộ sưu tập của bạn theo cách thủ công. Mongodump kết xuất tất cả dữ liệu ở định dạng Binary JSON (BSON) vào vị trí được chỉ định. Mongorestore có thể sử dụng tệp BSON này để khôi phục cơ sở dữ liệu của bạn.
Sao lưu toàn bộ cơ sở dữ liệu
$ sudo mongodump --db mydb --out /var/backups/mongo
Đầu ra:
2018-08-20T10:11:57.685-0500 writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500 writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500 done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500 writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson
Trong lệnh này, đối số quan trọng nhất là --db. Nó chỉ định tên của cơ sở dữ liệu mà bạn muốn sao lưu. Nếu bạn không chỉ định đối số này thì lệnh Mongodump sẽ sao lưu tất cả cơ sở dữ liệu của bạn, đây có thể là quá trình rất chuyên sâu.
Sao lưu một Bộ sưu tập duy nhất
$ mongodump -d mydb -o /var/backups/mongo --collection users
Lệnh này sẽ chỉ sao lưu bộ sưu tập người dùng trong cơ sở dữ liệu mydb. Nếu bạn không cung cấp tùy chọn này thì nó sẽ sao lưu tất cả bộ sưu tập trong cơ sở dữ liệu theo mặc định.
Thực hiện sao lưu thường xuyên bằng Mongodump / Mongorestore
Như một thông lệ tiêu chuẩn, bạn nên sao lưu thường xuyên cơ sở dữ liệu MongoDB của mình. Giả sử bạn muốn sao lưu hàng ngày vào lúc 3:03 sáng, thì trong hệ thống Linux, bạn có thể thực hiện việc này bằng cách thêm một mục cron trong crontab.
$ sudo crontab -e
Thêm dòng này vào crontab:
3 3 * * * mongodump --out /var/backups/mongo
Khôi phục toàn bộ cơ sở dữ liệu
Để khôi phục cơ sở dữ liệu, chúng ta có thể sử dụng lệnh Mongorestore với tùy chọn --db. Nó sẽ đọc các tệp BSON do Mongodump tạo và khôi phục cơ sở dữ liệu của bạn.
$ sudo mongorestore --db mydb /var/backups/mongo/mydb
Đầu ra
2018-07-20T12:44:30.876-0500 building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500 reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500 restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500 restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500 finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500 done
Khôi phục toàn bộ bộ sưu tập
Để khôi phục chỉ một bộ sưu tập từ db, bạn có thể sử dụng lệnh sau:
$ mongorestore -d mydb -c users mydb/users.bson
Nếu bộ sưu tập của bạn được sao lưu ở định dạng JSON thay vì BSON thì bạn có thể sử dụng lệnh sau:
$ mongoimport --db mydb --collection users --file users.json --jsonArray
Ưu điểm
- Rất đơn giản để sử dụng
- Bạn có toàn quyền truy cập vào bản sao lưu của mình
- Bạn có thể đặt các bản sao lưu của mình ở bất kỳ vị trí nào như chia sẻ NFS, AWS S3, v.v.
Nhược điểm
- Mỗi lần như vậy, cơ sở dữ liệu sẽ có một bản sao lưu đầy đủ chứ không chỉ sự khác biệt.
- Đối với cơ sở dữ liệu lớn, có thể mất hàng giờ để sao lưu và khôi phục cơ sở dữ liệu.
- Theo mặc định, đây không phải là thời điểm theo mặc định, có nghĩa là nếu dữ liệu của bạn thay đổi trong khi sao lưu thì bản sao lưu của bạn có thể dẫn đến không nhất quán. Bạn có thể sử dụng tùy chọn --oplog để giải quyết vấn đề này. Nó sẽ chụp nhanh cơ sở dữ liệu khi kết thúc quá trình mongodump.
Trình quản lý hoạt động của MongoDB
Ops Manager là một ứng dụng quản lý cho MongoDB chạy trong trung tâm dữ liệu của bạn. Nó liên tục sao lưu dữ liệu của bạn và cung cấp các quy trình khôi phục tại thời điểm cho cơ sở dữ liệu của bạn. Trong ứng dụng này, có một tác nhân kết nối với các phiên bản MongoDB của bạn. Đầu tiên, nó sẽ thực hiện đồng bộ ban đầu để sao lưu trạng thái hiện tại của cơ sở dữ liệu. Tác nhân sẽ tiếp tục gửi dữ liệu oplog đã được nén và mã hóa đến Ops Manager để bạn có thể sao lưu liên tục. Sử dụng dữ liệu này, Ops Manager sẽ tạo ảnh chụp nhanh cơ sở dữ liệu. Nó sẽ tạo một ảnh chụp nhanh cơ sở dữ liệu của bạn cứ sau 6 giờ và dữ liệu oplog sẽ được lưu trữ trong 24 giờ. Bạn có thể định cấu hình lịch chụp nhanh bất kỳ lúc nào bằng Trình quản lý hoạt động.
Ưu điểm
- Đó là thời điểm theo mặc định
- Không ảnh hưởng đến hiệu suất sản xuất ngoại trừ quá trình đồng bộ hóa ban đầu
- Hỗ trợ cho các ảnh chụp nhanh nhất quán của các cụm phân đoạn
- Tính linh hoạt để loại trừ các bộ sưu tập không quan trọng
Nhược điểm
- Độ trễ mạng tăng lên theo kích thước ảnh chụp nhanh trong khi khôi phục cơ sở dữ liệu.
Trình quản lý đám mây MongoDB
MongoDB Cloud Manager là giải pháp sao lưu dựa trên đám mây cung cấp giải pháp khôi phục tại thời điểm, sao lưu liên tục và trực tuyến như một dịch vụ được quản lý đầy đủ. Bạn có thể chỉ cần cài đặt tác nhân Trình quản lý đám mây để quản lý sao lưu và khôi phục cơ sở dữ liệu của mình. Nó sẽ lưu trữ dữ liệu sao lưu của bạn trên đám mây MongoDB.
Ưu điểm
- Rất đơn giản để sử dụng. GUI tốt.
- Sao lưu liên tục các truy vấn và nhật ký hoạt động.
Nhược điểm
- Không kiểm soát dữ liệu sao lưu. Nó được lưu trữ trên đám mây MongoDB.
- Chi phí phụ thuộc vào kích thước của dữ liệu và số lượng thay đổi oplog.
- Quá trình khôi phục diễn ra chậm.
Tệp cơ sở dữ liệu ảnh chụp nhanh
Đây là giải pháp đơn giản nhất để sao lưu cơ sở dữ liệu của bạn. Bạn có thể sao chép tất cả các tệp bên dưới (nội dung của dữ liệu / thư mục) và đặt nó vào bất kỳ vị trí an toàn nào. Trước khi sao chép tất cả các tệp, bạn nên dừng tất cả các hoạt động ghi đang diễn ra vào cơ sở dữ liệu để đảm bảo tính nhất quán của dữ liệu. Bạn có thể sử dụng lệnh db.fsyncLock () để dừng tất cả các thao tác ghi.
Có hai loại ảnh chụp nhanh:một là ảnh chụp nhanh cấp đám mây và một là ảnh chụp nhanh cấp hệ điều hành.
Nếu bạn đang lưu trữ dữ liệu cơ sở dữ liệu với nhà cung cấp dịch vụ đám mây như AWS thì bạn phải chụp ảnh nhanh AWS EBS để sao lưu. Ngược lại, nếu bạn đang lưu trữ các tệp DB trong hệ điều hành gốc như Linux thì bạn phải chụp nhanh LVM. Ảnh chụp nhanh LVM không di động sang các máy khác. Vì vậy, ảnh chụp nhanh trên nền tảng đám mây tốt hơn ảnh chụp nhanh dựa trên hệ điều hành.
Ưu điểm
- Dễ sử dụng.
- Toàn quyền kiểm soát các ảnh chụp nhanh. Bạn có thể di chuyển nó đến bất kỳ trung tâm dữ liệu nào.
- Những ảnh chụp nhanh này là những ảnh chụp nhanh khác nhau, chỉ lưu trữ những điểm khác biệt so với những ảnh chụp nhanh trước đó.
- Không cần tải xuống các ảnh chụp nhanh để khôi phục cơ sở dữ liệu của bạn. Bạn chỉ có thể tạo một tập mới từ ảnh chụp nhanh của mình.
Nhược điểm
- Khi sử dụng phương pháp này, bạn chỉ có thể khôi phục cơ sở dữ liệu của mình tại các thời điểm chia tay.
- Việc bảo trì đôi khi trở nên rất phức tạp.
- Để điều phối các bản sao lưu trên tất cả các tập hợp bản sao (trong hệ thống phân đoạn), bạn cần một nhóm phát triển đặc biệt.
Công cụ sao lưu nhất quán MongoDB
Sao lưu nhất quán MongoDB là một công cụ để thực hiện sao lưu nhất quán các cụm MongoDB. Nó có thể sao lưu một cụm với một hoặc nhiều phân đoạn vào một điểm duy nhất của cơ sở dữ liệu. Nó sử dụng Mongodump làm phương pháp sao lưu mặc định. Chạy lệnh sau để sao lưu bằng công cụ này.
$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo
Tất cả các bản sao lưu được tạo bởi lệnh này đều tương thích với MongoRestore. Bạn có thể sử dụng lệnh mongorestore với tùy chọn --oplogReplay để đảm bảo tính nhất quán.
$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump
Ưu điểm
- Mã nguồn mở hoàn toàn
- Hoạt động với cụm phân đoạn
- Cung cấp một tùy chọn để sao lưu từ xa, chẳng hạn như Amazon S3
- Có sẵn tự động điều chỉnh tỷ lệ
- Rất dễ cài đặt và chạy
Bất lợi
- Sản phẩm không hoàn toàn dành cho người trưởng thành
- Rất ít tùy chọn tải lên từ xa
- Không hỗ trợ mã hóa dữ liệu trước khi lưu vào đĩa
- Kho lưu trữ mã chính thức thiếu thử nghiệm thích hợp
ClusterControl Backup
ClusterControl là một hệ thống quản lý cơ sở dữ liệu tự động tất cả trong một. Nó cho phép bạn giám sát, triển khai, quản lý và mở rộng các cụm cơ sở dữ liệu của mình một cách dễ dàng. Nó hỗ trợ MySQL, MongoDB, PostgreSQL, Percona XtraDB và Galera Cluster. Phần mềm này tự động hóa hầu như tất cả các hoạt động cơ sở dữ liệu như triển khai một cụm, thêm hoặc xóa một nút khỏi bất kỳ cụm nào, sao lưu liên tục, mở rộng cụm, v.v. Tất cả những điều này, bạn có thể thực hiện từ một GUI duy nhất được cung cấp bởi hệ thống ClusterControl.
ClusterControl cung cấp một GUI rất đẹp để quản lý sao lưu MongoDB với hỗ trợ lập lịch và báo cáo sáng tạo. Nó cung cấp cho bạn hai tùy chọn cho các phương pháp sao lưu.
- Mongodump
- Sao lưu nhất quán Mongodb
Vì vậy người dùng có thể chọn bất kỳ tùy chọn nào theo nhu cầu của mình. Công cụ này chỉ định một ID duy nhất cho tất cả các bản sao lưu và lưu trữ nó theo đường dẫn sau:ClusterControl> Cài đặt> Sao lưu> BackupID. Nếu nút được chỉ định không hoạt động trong khi thực hiện sao lưu thì công cụ sẽ tự động tìm nút trực tiếp từ cụm và thực hiện quá trình sao lưu trên nút đó. Công cụ này cũng cung cấp một tùy chọn để lập lịch sao lưu bằng bất kỳ phương pháp sao lưu nào ở trên. Bạn có thể bật / tắt bất kỳ công việc lập lịch nào chỉ bằng cách bật một nút. ClusterControl chạy quá trình sao lưu trong nền nên nó sẽ không ảnh hưởng đến các công việc khác trong hàng đợi.
Ưu điểm
- Cài đặt dễ dàng và sử dụng rất đơn giản
- Nhiều tùy chọn cho các phương pháp sao lưu
- Lên lịch sao lưu rất dễ dàng bằng cách sử dụng biểu mẫu GUI đơn giản
- Xác minh sao lưu tự động
- Báo cáo dự phòng với trạng thái
Bất lợi
- Cả hai phương pháp sao lưu đều sử dụng nội bộ mongodump, điều này có một số vấn đề khi xử lý cơ sở dữ liệu rất lớn.
Kết luận
Một chiến lược sao lưu tốt là một phần quan trọng của bất kỳ hệ thống quản lý cơ sở dữ liệu nào. MongoDB cung cấp nhiều tùy chọn để sao lưu và khôi phục / khôi phục. Cùng với một phương pháp sao lưu tốt, điều rất quan trọng là phải có nhiều bản sao của cơ sở dữ liệu. Điều này giúp khôi phục cơ sở dữ liệu mà không có thời gian chết dù chỉ một giây. Đôi khi đối với các cơ sở dữ liệu lớn hơn, quá trình sao lưu có thể rất tốn tài nguyên. Vì vậy, máy chủ của bạn nên được trang bị CPU tốt, RAM và nhiều dung lượng đĩa hơn để xử lý loại tải này. Quá trình sao lưu có thể làm tăng tải trên máy chủ vì những lý do này, vì vậy bạn nên chạy quá trình sao lưu vào ban đêm hoặc giờ không phải cao điểm.