Trên trang này
- Tổng quan về ảnh chụp
- Cân nhắc
- Sao lưu và khôi phục bằng LVM trên Linux
- Sao lưu các trường hợp với các tệp nhật ký trên khối lượng riêng biệt hoặc không có nhật ký
Tài liệu này mô tả một quy trình để tạo các bản sao lưu của các hệ thống MongoDB bằng các công cụ cấp hệ thống, chẳng hạn như LVM hoặc thiết bị lưu trữ, cũng như các chiến lược phục hồi tương ứng.
Các ảnh chụp nhanh hệ thống tệp này hoặc các phương thức sao lưu "cấp khối", sử dụng các công cụ cấp hệ thống để tạo bản sao của thiết bị chứa các tệp dữ liệu của MongoDB. Các phương pháp này hoàn thành nhanh chóng và hoạt động đáng tin cậy, nhưng yêu cầu cấu hình hệ thống bổ sung bên ngoài MongoDB.
Mẹo
Ảnh chụp nhanh hoạt động bằng cách tạo các gợi ý giữa dữ liệu trực tiếp và khối lượng ảnh chụp đặc biệt. Những gợi ý này tương đương về mặt lý thuyết với "các liên kết cứng". Khi dữ liệu làm việc khác nhau từ ảnh chụp nhanh, quy trình chụp nhanh sử dụng chiến lược sao chép trên-viết. Do đó, ảnh chụp nhanh chỉ lưu trữ dữ liệu được sửa đổi.
Sau khi thực hiện ảnh chụp nhanh, bạn gắn hình ảnh chụp nhanh trên hệ thống tệp của mình và sao chép dữ liệu từ ảnh chụp nhanh. Bản sao lưu kết quả chứa một bản sao đầy đủ của tất cả dữ liệu.
MongoDB 3.2 đã thêm hỗ trợ cho việc sao lưu mức âm lượng của các phiên bản MongoDB bằng cách sử dụng công cụ lưu trữ WiredTiger khi các tệp dữ liệu và tệp nhật ký của phiên bản MongoDB nằm trên các khối lượng riêng biệt. Tuy nhiên, để tạo bản sao lưu mạch lạc, cơ sở dữ liệu phải được khóa và tất cả các ghi vào cơ sở dữ liệu phải được treo trong quá trình sao lưu.
Trước MongoDB 3.2, việc tạo các bản sao lưu mức âm lượng của các phiên bản MongoDB bằng cách sử dụng WiredTiger yêu cầu các tệp dữ liệu và tạp chí nằm trên cùng một khối lượng.
Đối với các công cụ lưu trữ được mã hóa sử dụng chế độ mã hóa AES256-GCM
, AES256-GCM
yêu cầu mọi quy trình đều sử dụng giá trị khối truy cập duy nhất với khóa.
Đối với công cụ lưu trữ được mã hóa được cấu hình bằng mật mã AES256-GCM
:
- Khôi phục từ bản sao lưu nóng trong 4.2, nếu bạn khôi phục từ các tệp được thực hiện thông qua bản sao lưu "nóng" [tức là
mongod
đang chạy], MongoDB có thể phát hiện các khóa "bẩn" khi khởi động và tự động cuộn lại khóa cơ sở dữ liệu để tránh tái sử dụng IV [vectơ khởi tạo]. - Khôi phục từ bản sao lưu lạnh
Tuy nhiên, nếu bạn khôi phục từ các tệp được thực hiện thông qua bản sao lưu "lạnh" [tức là
mongod
không chạy], MongoDB không thể phát hiện các khóa "bẩn" khi khởi động và sử dụng lại bảo mật và bảo mật tính toàn vẹn của IV.Bắt đầu từ 4.2, để tránh việc tái sử dụng các khóa sau khi khôi phục từ ảnh chụp nhanh hệ thống tập tin lạnh, MongoDB thêm tùy chọn dòng lệnh mới ____10. Khi bắt đầu với tùy chọn
0, phiên bảnumount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz mongod
cuộn qua các khóa cơ sở dữ liệu được cấu hình với mật mãAES256-GCM
và thoát.
Mẹo
Ảnh chụp nhanh hoạt động bằng cách tạo các gợi ý giữa dữ liệu trực tiếp và khối lượng ảnh chụp đặc biệt. Những gợi ý này tương đương về mặt lý thuyết với "các liên kết cứng". Khi dữ liệu làm việc khác nhau từ ảnh chụp nhanh, quy trình chụp nhanh sử dụng chiến lược sao chép trên-viết. Do đó, ảnh chụp nhanh chỉ lưu trữ dữ liệu được sửa đổi.
Sau khi thực hiện ảnh chụp nhanh, bạn gắn hình ảnh chụp nhanh trên hệ thống tệp của mình và sao chép dữ liệu từ ảnh chụp nhanh. Bản sao lưu kết quả chứa một bản sao đầy đủ của tất cả dữ liệu.not make copies of your data files or restore from filesystem snapshots ["hot" or "cold"].
MongoDB 3.2 đã thêm hỗ trợ cho việc sao lưu mức âm lượng của các phiên bản MongoDB bằng cách sử dụng công cụ lưu trữ WiredTiger khi các tệp dữ liệu và tệp nhật ký của phiên bản MongoDB nằm trên các khối lượng riêng biệt. Tuy nhiên, để tạo bản sao lưu mạch lạc, cơ sở dữ liệu phải được khóa và tất cả các ghi vào cơ sở dữ liệu phải được treo trong quá trình sao lưu.
Trước MongoDB 3.2, việc tạo các bản sao lưu mức âm lượng của các phiên bản MongoDB bằng cách sử dụng WiredTiger yêu cầu các tệp dữ liệu và tạp chí nằm trên cùng một khối lượng.
Đối với các công cụ lưu trữ được mã hóa sử dụng chế độ mã hóa AES256-GCM
, AES256-GCM
yêu cầu mọi quy trình đều sử dụng giá trị khối truy cập duy nhất với khóa.
Đối với công cụ lưu trữ được mã hóa được cấu hình bằng mật mã AES256-GCM
:
Khôi phục từ bản sao lưu nóng trong 4.2, nếu bạn khôi phục từ các tệp được thực hiện thông qua bản sao lưu "nóng" [tức là mongod
đang chạy], MongoDB có thể phát hiện các khóa "bẩn" khi khởi động và tự động cuộn lại khóa cơ sở dữ liệu để tránh tái sử dụng IV [vectơ khởi tạo].
Khôi phục từ bản sao lưu lạnh
Tuy nhiên, nếu bạn khôi phục từ các tệp được thực hiện thông qua bản sao lưu "lạnh" [tức là mongod
không chạy], MongoDB không thể phát hiện các khóa "bẩn" khi khởi động và sử dụng lại bảo mật và bảo mật tính toàn vẹn của IV.
Bắt đầu từ 4.2, để tránh việc tái sử dụng các khóa sau khi khôi phục từ ảnh chụp nhanh hệ thống tập tin lạnh, MongoDB thêm tùy chọn dòng lệnh mới ____10. Khi bắt đầu với tùy chọn
umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
0, phiên bản mongod
cuộn qua các khóa cơ sở dữ liệu được cấu hình với mật mã AES256-GCM
và thoát.Nói chung, nếu sử dụng các bản sao lưu dựa trên hệ thống tập tin cho MongoDB Enterprise 4.2+, hãy sử dụng tính năng sao lưu "nóng", nếu có thể.
Đối với MongoDB Enterprise phiên bản 4.0 trở lên, nếu bạn sử dụng chế độ mã hóa AES256-GCM
, không tạo bản sao của các tệp dữ liệu của bạn hoặc khôi phục từ các ảnh chụp nhanh hệ thống tập tin ["nóng" hoặc "lạnh"].
Cơ sở dữ liệu phải hợp lệ khi ảnh chụp nhanh diễn ra. Điều này có nghĩa là tất cả các ghi được chấp nhận bởi cơ sở dữ liệu cần phải được ghi đầy đủ vào đĩa: cho tạp chí hoặc vào các tệp dữ liệu.
Nếu có các chữ viết không có trên đĩa khi sao lưu xảy ra, bản sao lưu sẽ không phản ánh những thay đổi này.
Xóa tất cả các ghi vào đĩa và tạo khóa ghi để đảm bảo trạng thái nhất quán trong quá trình sao lưu.
Nếu bạn chọn tùy chọn này, hãy xem các trường hợp sao lưu với các tệp nhật ký trên khối lượng riêng biệt hoặc không có nhật ký.Back up Instances with Journal Files on Separate Volume or without Journaling.
Định cấu hình LVM để chạy và giữ các tệp dữ liệu MongoDB của bạn trên đỉnh của cuộc đột kích trong hệ thống của bạn.
Nếu bạn chọn tùy chọn này, hãy thực hiện thao tác sao lưu LVM được mô tả trong Tạo ảnh chụp nhanh.Create a Snapshot.
Phần này cung cấp một cái nhìn tổng quan về một quy trình sao lưu đơn giản sử dụng LVM trên hệ thống Linux. Mặc dù các công cụ, lệnh và đường dẫn có thể [một chút] khác nhau trên hệ thống của bạn, các bước sau đây cung cấp tổng quan cấp cao về hoạt động sao lưu.
Ghi chú
Chỉ sử dụng quy trình sau làm hướng dẫn cho hệ thống sao lưu và cơ sở hạ tầng. Hệ thống sao lưu sản xuất phải xem xét một số yêu cầu và yếu tố cụ thể của ứng dụng duy nhất cho các môi trường cụ thể.
Đã thay đổi trong phiên bản 3.2: Bắt đầu trong MongoDB 3.2, với mục đích sao lưu mức âm lượng của các phiên bản MongoDB bằng WiredTiger, các tệp dữ liệu và tạp chí không còn cần phải cư trú trên một tập.
Để tạo ảnh chụp nhanh với LVM, hãy đưa ra lệnh làm root ở định dạng sau:
lvcreate --size 100M --snapshot --name mdb-snap01 /dev/vg0/mongodb
Lệnh này tạo ra một ảnh chụp nhanh LVM [với tùy chọn
umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
6] có tên umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
7 của tập umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
8 trong nhóm âm lượng umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
9.Ví dụ này tạo ra một ảnh chụp nhanh có tên
umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
7 nằm ở lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
1. Vị trí và đường dẫn đến các nhóm và thiết bị khối lượng hệ thống của bạn có thể thay đổi một chút tùy thuộc vào cấu hình LVM của hệ điều hành của bạn.Ảnh chụp có một nắp ở mức 100 megabyte, vì tham số
lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
2. Kích thước này không phản ánh tổng lượng dữ liệu trên đĩa, mà là số lượng khác biệt giữa trạng thái hiện tại của lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
3 và việc tạo ra ảnh chụp nhanh [nghĩa là lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
1.]Cảnh báo
Đảm bảo rằng bạn tạo các ảnh chụp nhanh với đủ không gian để giải thích cho sự phát triển dữ liệu, đặc biệt trong khoảng thời gian cần phải sao chép dữ liệu ra khỏi hệ thống hoặc hình ảnh tạm thời.
Nếu ảnh chụp nhanh của bạn chạy ra khỏi không gian, hình ảnh ảnh chụp nhanh không thể sử dụng được. Loại bỏ khối lượng logic này và tạo một khối khác.
Ảnh chụp nhanh sẽ tồn tại khi lệnh trả về. Bạn có thể khôi phục trực tiếp từ ảnh chụp nhanh bất cứ lúc nào hoặc bằng cách tạo khối lượng logic mới và khôi phục từ ảnh chụp nhanh này sang hình ảnh thay thế.
Mặc dù ảnh chụp nhanh là tuyệt vời để tạo bản sao lưu chất lượng cao một cách nhanh chóng, nhưng chúng không lý tưởng như một định dạng để lưu trữ dữ liệu sao lưu. Ảnh chụp nhanh thường phụ thuộc và cư trú trên cùng một cơ sở hạ tầng lưu trữ như hình ảnh đĩa ban đầu. Do đó, điều quan trọng là bạn lưu trữ những bức ảnh chụp này và lưu trữ chúng ở nơi khác.
Sau khi tạo ảnh chụp nhanh, hãy gắn ảnh chụp nhanh và sao chép dữ liệu vào lưu trữ riêng biệt. Hệ thống của bạn có thể cố gắng nén các hình ảnh sao lưu khi bạn di chuyển chúng ngoại tuyến. Ngoài ra, hãy lấy một bản sao cấp khối của hình ảnh ảnh chụp nhanh, chẳng hạn như với quy trình sau:
umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
Trình tự lệnh trên thực hiện như sau:
Đảm bảo rằng thiết bị
1 không được gắn. Không bao giờ lấy một bản sao cấp khối của ảnh chụp nhanh hệ thống tập tin hoặc hệ thống tập tin được gắn kết.lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb Thực hiện bản sao cấp khối của toàn bộ hình ảnh ảnh chụp bằng cách sử dụng lệnh
6 và nén kết quả trong một tệp Gzipped trong thư mục làm việc hiện tại.lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb Cảnh báo
Đảm bảo rằng bạn tạo các ảnh chụp nhanh với đủ không gian để giải thích cho sự phát triển dữ liệu, đặc biệt trong khoảng thời gian cần phải sao chép dữ liệu ra khỏi hệ thống hoặc hình ảnh tạm thời.
Nếu ảnh chụp nhanh của bạn chạy ra khỏi không gian, hình ảnh ảnh chụp nhanh không thể sử dụng được. Loại bỏ khối lượng logic này và tạo một khối khác.
lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
Ảnh chụp nhanh sẽ tồn tại khi lệnh trả về. Bạn có thể khôi phục trực tiếp từ ảnh chụp nhanh bất cứ lúc nào hoặc bằng cách tạo khối lượng logic mới và khôi phục từ ảnh chụp nhanh này sang hình ảnh thay thế.
Mặc dù ảnh chụp nhanh là tuyệt vời để tạo bản sao lưu chất lượng cao một cách nhanh chóng, nhưng chúng không lý tưởng như một định dạng để lưu trữ dữ liệu sao lưu. Ảnh chụp nhanh thường phụ thuộc và cư trú trên cùng một cơ sở hạ tầng lưu trữ như hình ảnh đĩa ban đầu. Do đó, điều quan trọng là bạn lưu trữ những bức ảnh chụp này và lưu trữ chúng ở nơi khác.
Sau khi tạo ảnh chụp nhanh, hãy gắn ảnh chụp nhanh và sao chép dữ liệu vào lưu trữ riêng biệt. Hệ thống của bạn có thể cố gắng nén các hình ảnh sao lưu khi bạn di chuyển chúng ngoại tuyến. Ngoài ra, hãy lấy một bản sao cấp khối của hình ảnh ảnh chụp nhanh, chẳng hạn như với quy trình sau:
Trình tự lệnh trên thực hiện như sau:
Đảm bảo rằng thiết bị
1 không được gắn. Không bao giờ lấy một bản sao cấp khối của ảnh chụp nhanh hệ thống tập tin hoặc hệ thống tập tin được gắn kết.lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb Thực hiện bản sao cấp khối của toàn bộ hình ảnh ảnh chụp bằng cách sử dụng lệnh
6 và nén kết quả trong một tệp Gzipped trong thư mục làm việc hiện tại.lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb Lệnh này sẽ tạo một tệp
7 lớn trong thư mục làm việc hiện tại của bạn. Đảm bảo rằng bạn chạy lệnh này trong một hệ thống tệp có đủ không gian trống.lvcreate --size 1G --name mdb-new vg0 gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
Ghi chú
Chỉ sử dụng quy trình sau làm hướng dẫn cho hệ thống sao lưu và cơ sở hạ tầng. Hệ thống sao lưu sản xuất phải xem xét một số yêu cầu và yếu tố cụ thể của ứng dụng duy nhất cho các môi trường cụ thể.
Đã thay đổi trong phiên bản 3.2: Bắt đầu trong MongoDB 3.2, với mục đích sao lưu mức âm lượng của các phiên bản MongoDB bằng WiredTiger, các tệp dữ liệu và tạp chí không còn cần phải cư trú trên một tập.
umount /dev/vg0/mdb-snap01 lvcreate --size 1G --name mdb-new vg0 dd if=/dev/vg0/mdb-snap01 of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
Ghi chú
Mới trong phiên bản 3.6:
Tất cả các bộ sưu tập MongoDB đều có UUID theo mặc định. Khi MongoDB khôi phục các bộ sưu tập, các bộ sưu tập được khôi phục giữ lại UUID gốc của chúng. Khi khôi phục một bộ sưu tập không có UUID, MongoDB tạo ra một UUID cho bộ sưu tập được khôi phục.UUIDs by default. When MongoDB restores collections, the restored collections retain their original UUIDs. When restoring a collection where no UUID was present, MongoDB generates a UUID for the restored collection.
Để biết thêm thông tin về bộ sưu tập UUID, xem Bộ sưu tập.Collections.
Bạn có thể triển khai các bản sao lưu ngoài hệ thống bằng quá trình kết hợp và SSH.combined process and SSH.
Trình tự này giống hệt với các thủ tục được giải thích ở trên, ngoại trừ việc nó lưu trữ và nén bản sao lưu trên một hệ thống từ xa bằng SSH.
Xem xét thủ tục sau:
umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | ssh gzip > /opt/backup/mdb-snap01.gz lvcreate --size 1G --name mdb-new vg0 ssh gzip -d -c /opt/backup/mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
Đã thay đổi trong phiên bản 3.2: Bắt đầu trong MongoDB 3.2, với mục đích sao lưu mức âm lượng của các phiên bản MongoDB bằng WiredTiger, các tệp dữ liệu và tạp chí không còn cần phải cư trú trên một tập. Tuy nhiên, cơ sở dữ liệu phải được khóa và tất cả các ghi vào cơ sở dữ liệu phải bị đình chỉ trong quá trình sao lưu để đảm bảo tính nhất quán của bản sao lưu.
Nếu ví dụ mongod
của bạn đang chạy mà không có nhật ký hoặc có các tệp nhật ký trên một tập riêng, bạn phải xóa tất cả các ghi vào đĩa và khóa cơ sở dữ liệu để ngăn chặn ghi trong quá trình sao lưu. Nếu bạn có một cấu hình bộ bản sao, thì để bạn dự phòng, sử dụng thứ cấp không nhận được đọc [tức là thành viên ẩn].
Để mở khóa cơ sở dữ liệu sau khi ảnh chụp nhanh đã hoàn thành, hãy sử dụng lệnh sau trong
umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | ssh gzip > /opt/backup/mdb-snap01.gz lvcreate --size 1G --name mdb-new vg0 ssh gzip -d -c /opt/backup/mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
3umount /dev/vg0/mdb-snap01 dd if=/dev/vg0/mdb-snap01 | ssh gzip > /opt/backup/mdb-snap01.gz lvcreate --size 1G --name mdb-new vg0 ssh gzip -d -c /opt/backup/mdb-snap01.gz | dd of=/dev/vg0/mdb-new mount /dev/vg0/mdb-new /srv/mongodb
3