Gia tăng sao lưu MongoDB

Một số tùy chọn tôi đã thử bao gồm chỉ chụp ảnh nhanh hàng ngày với mongodump hoặc lưu trữ các khác biệt gia tăng của điều này với sự trùng lặp. Tuy nhiên, với tập dữ liệu của tôi là vài trăm GB, các phương pháp này quá chậm

Sao lưu MMS sẽ là giải pháp hoàn hảo. Thật không may, tôi không thể lưu trữ các bản sao lưu ở Hoa Kỳ do các quy định về quyền riêng tư, vì vậy tôi đang tìm thứ gì đó chạy tại chỗ. Tôi đang cân nhắc tùy chọn MMS tại chỗ nhưng cũng muốn xem xét các tùy chọn khác

Tôi đang xem xét viết kịch bản một giải pháp sao lưu các kết xuất/ảnh chụp nhanh định kỳ, sau đó liên tục lưu oplog. Một cách tiếp cận như thế này sẽ làm việc?

1. Chụp nhanh hàng tuần với mongodump --oplog

2. Mỗi giờ (giả sử oplog luôn có hơn một giờ thay đổi), kết xuất tất cả dữ liệu mới từ oplog với nội dung như thế này

mongodump -d local -c oplog. rs --query "{ts. { "$gt". { "$dấu thời gian". {"t". (dấu thời gian ở đây) } } }}"

Sẽ phải cẩn thận để theo dõi dấu thời gian được nhìn thấy lần cuối và cũng như không có khoảng trống trong oplog

3. Di chuyển các tệp này đến một số vị trí sao lưu ngoại vi

1. Thực hiện kết xuất đầy đủ mới nhất và khôi phục bằng mongorestore --oplogReplay

2. Đối với mỗi kết xuất oplog sau đó (theo thứ tự)

một. Đặt oplog vào một thư mục trống, nói "oplog-n", như oplog. bson (thay vì local/oplog. rs. bson)

b. Khôi phục oplog với mongorestore --oplogReplay "oplog-n"

* Có thể đạt được khôi phục tại thời điểm bằng cách sử dụng tùy chọn --oplogLimit

* Việc khôi phục có thể được thực hiện bằng một lệnh mongorestore duy nhất bằng cách nối oplog. bson (có thể cần cẩn thận để làm cho định dạng hợp lệ)

Phương pháp này có hiệu quả không?

Tôi biết về dự án Tarja, dự án này hoạt động tương tự. Tuy nhiên, tôi sẽ cảm thấy thoải mái hơn khi chỉ sử dụng các lệnh MongoDB tiêu chuẩn và một số tập lệnh giống như bash

Sao lưu cơ sở dữ liệu là một trong những quy trình quan trọng nhất đối với bất kỳ quản trị viên cơ sở dữ liệu hoặc hệ thống nào. Sao lưu cơ sở dữ liệu là bản sao dữ liệu từ cơ sở dữ liệu giúp tái sử dụng cơ sở dữ liệu trong trường hợp có bất kỳ sự cố mất mát nào xảy ra

Sao lưu và khôi phục cơ sở dữ liệu MongoDB rất quan trọng khi bạn muốn di chuyển cơ sở dữ liệu của mình sang một máy chủ khác hoặc chuyển sang MongoDB. MongoDB đi kèm với lệnh mongodump và mongorestore để sao lưu và khôi phục cơ sở dữ liệu. Nó là một công cụ rất đơn giản và mạnh mẽ để thực hiện quá trình sao lưu và phục hồi trên các máy chủ trực tiếp một cách hiệu quả

Mongodump là công cụ sao lưu để tạo bản xuất nhị phân nội dung của cơ sở dữ liệu. Nó có thể xuất dữ liệu từ các triển khai cụm độc lập, bản sao và cụm được chia sẻ

Mongorestore là một công cụ khôi phục cơ sở dữ liệu tải dữ liệu từ kết xuất cơ sở dữ liệu nhị phân được tạo bởi mongodump hoặc đầu vào tiêu chuẩn vào một cá thể mongod hoặc mongos

Hướng dẫn này sẽ chỉ cho bạn cách sao lưu và khôi phục cơ sở dữ liệu MongoDB

Mục lục

Yêu cầu

  • Một máy chủ chạy hệ điều hành Linux có cài đặt MongoDB

  • Mật khẩu gốc được thiết lập trên máy chủ của bạn

Cú pháp cơ bản

Cú pháp cơ bản của lệnh mongodump được hiển thị bên dưới

mongodump --host [host-name] --username [username] --password [password] --port [port-number] --db [database-name] --out [backup-directory]

Một lời giải thích ngắn gọn về từng tùy chọn được hiển thị bên dưới

  • --chủ nhà. Chỉ định tên máy chủ hoặc địa chỉ IP của máy chủ cơ sở dữ liệu

  • --tên tài khoản. Chỉ định tên người dùng cơ sở dữ liệu

  • --mật khẩu mở khóa. Chỉ định mật khẩu của người dùng cơ sở dữ liệu

  • --Hải cảng. Chỉ định số cổng của phiên bản MongoDB

  • --db. Chỉ định tên cơ sở dữ liệu bạn muốn sao lưu

  • --ngoài. Chỉ định vị trí của đường dẫn sao lưu

Cú pháp cơ bản của lệnh mongorestore được hiển thị bên dưới

mongorestore --host [host-name] --username [username] --password [password] --port [port-number] --db [database-name] --drop [backup-location]

Ở đâu

--drop được sử dụng để xóa cơ sở dữ liệu nếu nó đã tồn tại

Cách sao lưu cơ sở dữ liệu MongoDB

Phần này sẽ chỉ ra cách sao lưu một và nhiều cơ sở dữ liệu trên máy chủ cục bộ và máy chủ từ xa trong MongoDB

Sao lưu một cơ sở dữ liệu duy nhất

Bạn có thể sử dụng lệnh mongodump để sao lưu một hoặc toàn bộ cơ sở dữ liệu. Ví dụ: để sao lưu một cơ sở dữ liệu có tên testdb và lưu bản sao lưu bên trong thư mục /opt trên máy chủ cục bộ, hãy chạy lệnh sau

mongodump --db testdb --out /opt/

Lệnh trên sẽ sao lưu cơ sở dữ liệu testdb và tạo một thư mục có tên cơ sở dữ liệu bên trong thư mục /opt

Sao lưu một bộ sưu tập duy nhất

Bạn cũng có thể sao lưu một bộ sưu tập từ cơ sở dữ liệu bằng cách chỉ định tùy chọn --collection bằng lệnh mongodump

Ví dụ: để sao lưu một bộ sưu tập có tên là bộ sưu tập thử nghiệm từ cơ sở dữ liệu testdb, hãy chạy lệnh sau

mongodump --collection testcollection --db testdb --out /opt/

mongodump Tất cả cơ sở dữ liệu

Để sao lưu tất cả cơ sở dữ liệu MongoDB, bạn không cần chỉ định bất kỳ tên cơ sở dữ liệu nào bằng lệnh mongodump

Bạn có thể chạy lệnh sau để sao lưu tất cả cơ sở dữ liệu MongoDB và lưu bản sao lưu bên trong thư mục /mnt

Lệnh này sẽ sao lưu tất cả cơ sở dữ liệu MongoDB và lưu nó trong thư mục /mnt

Sao lưu cơ sở dữ liệu từ xa

Để sao lưu cơ sở dữ liệu từ máy chủ MongoDB từ xa. Bạn sẽ cần chỉ định địa chỉ IP và cổng của máy chủ MongoDB từ xa. Bạn cũng sẽ cần định cấu hình MongoDB để cho phép kết nối từ xa

Ví dụ: để sao lưu một cơ sở dữ liệu có tên remotedb từ máy chủ MongoDB từ xa (192. 168. 0. 101), hãy chạy lệnh sau

mongodump --host 192.168.0.101 --port 27017 --username admin --password yourpassword --db remotedb --out /opt/

Ở đâu

192. 168. 0. 101 là địa chỉ IP của máy chủ MongoDB từ xa, 27017 là số cổng MongoDB, admin là tên người dùng cơ sở dữ liệu, yourpassword là mật khẩu của người dùng quản trị và remotedb là tên của cơ sở dữ liệu mà bạn muốn sao lưu

Cách khôi phục cơ sở dữ liệu MongoDB

Phần này sẽ chỉ cho bạn cách khôi phục một và nhiều cơ sở dữ liệu trên máy chủ cục bộ và máy chủ từ xa

Khôi phục một cơ sở dữ liệu duy nhất

Bạn có thể dễ dàng sử dụng lệnh mongorestore làm lệnh khôi phục MongoDB trên một cơ sở dữ liệu bằng cách sử dụng bản sao lưu mà chúng tôi đã tạo trước đó

Ví dụ: để khôi phục một bản sao lưu cơ sở dữ liệu có tên testdb , hãy chạy lệnh sau

mongorestore --db testdb --drop /opt/testdb

Lệnh này sẽ khôi phục cơ sở dữ liệu testdb từ thư mục /opt/testdb

Khôi phục tất cả cơ sở dữ liệu

Để khôi phục tất cả cơ sở dữ liệu MongoDB, bạn không cần chỉ định tùy chọn --db. Bạn có thể khôi phục tất cả cơ sở dữ liệu bằng cách chạy lệnh sau

Thao tác này sẽ khôi phục tất cả cơ sở dữ liệu MongoDB từ bản sao lưu bên trong thư mục /opt

Khôi phục cơ sở dữ liệu từ xa

Bạn có thể khôi phục cơ sở dữ liệu MongoDB bằng cách chỉ định tham số --host và --port bằng lệnh mongorestore

Ví dụ: để khôi phục bản sao lưu từ cơ sở dữ liệu duy nhất có tên remotedb trên máy chủ MongoDB từ xa (192. 168. 0. 101), hãy chạy lệnh sau

mongorestore --host 192.168.0.101 --port 27017 --username admin --password yourpassword --db remotedb --drop /opt/remotedb

Tự động sao lưu cơ sở dữ liệu MongoDB với Cron

Thường xuyên dọn dẹp cơ sở dữ liệu MongoDB là một cách làm tốt cho bất kỳ quản trị viên hệ thống nào. Ví dụ: bạn có thể tạo tập lệnh sao lưu cơ sở dữ liệu và lên lịch cho nó bằng Cron job

Bạn có thể tạo tập lệnh sao lưu bằng lệnh sau

Thêm các dòng sau

#!/bin/bash TODAY=`date +%d%b%Y` BACKUPDIR=/backup/mongo mkdir -p ${BACKUPDIR}/${TODAY} mongodump --host localhost --db testdb --out ${BACKUPDIR}/${TODAY}/

Lưu và đóng tệp, sau đó tạo một công việc định kỳ để chạy tập lệnh trên hàng ngày vào lúc 10 giờ sáng

Thêm các dòng sau

________số 8

Lưu và đóng tệp khi bạn hoàn tất

Phần kết luận

Hướng dẫn trên đã hướng dẫn bạn cách sao lưu và khôi phục cơ sở dữ liệu MongoDB bằng tiện ích dòng lệnh mongodump và mongorestore. Tôi hy vọng những công cụ này sẽ giúp bạn thực hiện quy trình hàng ngày của mình

Nếu bạn không muốn quản lý việc này, hãy xem Giải pháp sao lưu MongoDB của chúng tôi

Mongodump có khóa cơ sở dữ liệu không?

Mongodump không khóa cơ sở dữ liệu. Bạn có thể đọc và ghi tệp dễ dàng

Chúng tôi có thể thực hiện sao lưu gia tăng trong MongoDB không?

Có, bạn có thể thực hiện cả sao lưu toàn bộ và sao lưu gia tăng với sự trợ giúp của Mongobackup, một công cụ bên ngoài của MongoDB. Sao lưu toàn bộ sẽ được thực hiện bởi dbPath trong hệ thống tệp, trong khi sao lưu gia tăng sẽ được thực hiện bằng kết xuất oplog một phần

Làm thế nào bạn có thể xác định tính nguyên tử trong cơ sở dữ liệu?

Nó được gọi là tính nguyên tử khi nhiều hoạt động được nhóm thành một thực thể logic duy nhất. Ví dụ: nếu bạn muốn cập nhật ba cơ sở dữ liệu trong một hành động logic đơn lẻ, bạn có thể gọi đó là tính nguyên tử

Là sao lưu gia tăng là tốt nhất?

Do đó, sao lưu gia tăng thường tốt hơn trên đám mây vì chúng thường tiêu tốn ít tài nguyên hơn . Sao lưu gia tăng cũng nhỏ hơn sao lưu vi sai. Với không gian lưu trữ là một yếu tố chi phí lớn trong đám mây, sao lưu càng nhỏ thì càng tốt.

Hạn chế của sao lưu gia tăng là gì?

Nhược điểm của sao lưu gia tăng . Yêu cầu sao lưu toàn bộ ngoài sao lưu gia tăng để khôi phục hoàn toàn. Phục hồi yêu cầu ghép dữ liệu từ nhiều bộ sao lưu. Khả năng phục hồi dữ liệu không đầy đủ nhỏ nếu một hoặc nhiều bộ sao lưu bị lỗi. Recovery time may be slower. Requires a full backup in addition to incremental backups for complete recovery. Recovery requires the piecing together of data from multiple backup sets. Small potential for incomplete data recovery if one or more backup sets have failed.

Phương pháp sao lưu gia tăng là gì?

Sao lưu gia tăng là loại sao lưu chỉ sao chép dữ liệu đã được thay đổi hoặc tạo kể từ khi hoạt động sao lưu trước đó được tiến hành . Phương pháp sao lưu gia tăng được sử dụng khi lượng dữ liệu phải được bảo vệ quá lớn để thực hiện sao lưu toàn bộ dữ liệu đó mỗi ngày.

Làm cách nào để tự động sao lưu MongoDB?

Nội dung .
Tạo một mô-đun Terraform (tùy chọn)
Tạo hình ảnh Docker với công cụ cần thiết
Xác định các biến và dữ liệu
Tạo một thùng S3 để lưu trữ các bản sao lưu
Tạo vai trò IAM và Tài khoản dịch vụ Kubernetes
Lưu trữ mật khẩu của MongoDB dưới dạng Bí mật Kubernetes
Tạo Kubernetes CronJob
Triển khai hạ tầng