Nếu bạn đã sao lưu cơ sở dữ liệu bằng mongodump
, bạn có thể khôi phục nó bằng cách sử dụng mongorestore
tiện ích.
mongorestore
tiện ích 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 thành mongod
hoặc mongos
ví dụ.
Kiểm tra Công cụ Cơ sở dữ liệu MongoDB
mongorestore
tiện ích là một phần của gói Công cụ cơ sở dữ liệu MongoDB. Công cụ cơ sở dữ liệu MongoDB là một bộ tiện ích dòng lệnh để làm việc với MongoDB.
Nếu bạn không chắc mình có Công cụ cơ sở dữ liệu MongoDB / mongorestore
hay không Cài đặt. Hãy thử chạy lệnh sau trong Terminal hoặc Command Prompt của bạn để kiểm tra:
mongorestore --version
Nếu chưa có, bạn có thể sử dụng hướng dẫn cài đặt trên trang web MongoDB để cài đặt vào hệ thống của mình.
Chạy lệnh ở đâu?
Bạn cần chạy mongorestore
lệnh từ dòng lệnh của hệ thống của bạn (ví dụ:cửa sổ Terminal hoặc Command Prompt mới).
Đừng chạy chúng từ mongo
vỏ bọc.
Khôi phục tất cả cơ sở dữ liệu từ một thư mục
Lệnh sau khôi phục tất cả cơ sở dữ liệu đã được sao lưu vào dump/
thư mục:
mongorestore dump/
Ví dụ này khôi phục cơ sở dữ liệu về phiên bản cục bộ đang chạy trên cổng mặc định 27017. Chúng tôi biết điều này vì chúng tôi không cung cấp bất kỳ máy chủ, cổng, thông tin xác thực nào, v.v.
Khôi phục một cơ sở dữ liệu cụ thể
Bạn có thể sử dụng --nsInclude
để chỉ định một cơ sở dữ liệu để khôi phục.
Ví dụ:
mongorestore --nsInclude="PetHotel.*" dump/
Trong trường hợp này, chúng tôi đã khôi phục PetHotel
cơ sở dữ liệu. Chúng tôi đã khôi phục tất cả các bộ sưu tập vì chúng tôi đã sử dụng ký tự đại diện dấu hoa thị (*
) để chỉ định tất cả các bộ sưu tập.
Khôi phục một bộ sưu tập cụ thể
Bạn cũng có thể sử dụng --nsInclude
để chỉ định một bộ sưu tập để khôi phục.
Ví dụ:
mongorestore --nsInclude="PetHotel.pets" dump/
Ví dụ này khôi phục bộ sưu tập thú cưng từ PetHotel
cơ sở dữ liệu. Nếu cơ sở dữ liệu không tồn tại, nó sẽ được tạo bằng một bộ sưu tập duy nhất (pets
).
Ví dụ này gần giống với ví dụ trước, ngoại trừ việc thay vì sử dụng ký tự đại diện dấu hoa thị (*
) để chỉ định tất cả các bộ sưu tập, chúng tôi đã chỉ định rõ ràng bộ sưu tập mà chúng tôi muốn khôi phục.
Đổi tên bộ sưu tập
Bạn có thể sử dụng --nsFrom
và --nsTo
tham số để chỉ định tên mới cho bộ sưu tập.
Ví dụ:
mongorestore --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2' dump/
Điều này đổi tên pets
bộ sưu tập vào pets2
.
Lưu ý rằng đoạn mã trên cũng khôi phục tất cả các cơ sở dữ liệu và bộ sưu tập khác trong dump/
danh mục. Sự khác biệt duy nhất là pets
bộ sưu tập được khôi phục dưới dạng pets2
.
Nếu bạn chỉ muốn khôi phục một bộ sưu tập duy nhất (và đổi tên nó trong quá trình này), thì hãy sử dụng --nsInclude
tham số.
Ví dụ:
mongorestore --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2' --nsInclude="PetHotel.pets" dump/
Đổi tên cơ sở dữ liệu
Bạn có thể sử dụng khái niệm tương tự để đổi tên cơ sở dữ liệu. Chỉ cần sử dụng --nsFrom
và --nsTo
tham số để chỉ định tên mới cho cơ sở dữ liệu.
Ví dụ:
mongorestore --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets' --nsInclude="PetHouse.*" dump/
Trong trường hợp này, tôi đã đổi tên PetHotel
cơ sở dữ liệu tới PetHouse
.
Lưu ý rằng --nsInclude
tham số chỉ định mới tên cơ sở dữ liệu. Ngoài ra, tôi sử dụng ký tự đại diện dấu hoa thị (*
) để khôi phục tất cả các bộ sưu tập trong cơ sở dữ liệu đó.
Loại trừ Bộ sưu tập
Bạn có thể sử dụng --nsExclude
tham số để chỉ định một bộ sưu tập để loại trừ từ quá trình khôi phục.
Ví dụ:
mongorestore --nsInclude="PetHotel.*" --excludeCollection="dogs" dump/
Ví dụ đó khôi phục tất cả các bộ sưu tập trong PetHotel
cơ sở dữ liệu ngoại trừ dogs
bộ sưu tập.
Bạn có thể sử dụng --nsExclude
nhiều lần để loại trừ nhiều bộ sưu tập khỏi quá trình khôi phục.
Ví dụ:
mongorestore --nsInclude="PetHotel.*" --excludeCollection="dogs" --excludeCollection="employees" dump/
Kiểm soát truy cập / Xác thực
Các ví dụ trước được thực hiện trên máy cục bộ bằng cách sử dụng cổng mặc định. Điều này có nghĩa là chúng tôi có thể chạy mongodump
mà không chỉ định những thứ như --host
, --port
, --username
, v.v.
Dưới đây là một ví dụ sử dụng các tham số đó để xác thực là homer
:
mongorestore --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin /backups/mongodump-2020-12-30
Chúng tôi cũng có thể đã sử dụng --password
nhưng chúng tôi đã không làm như vậy. Nếu bạn vượt qua --user
nhưng không phải --password
, bạn sẽ được nhắc nhập mật khẩu.
Khôi phục từ tệp nén
Bạn có thể sử dụng --gzip
tham số để khôi phục từ các tệp nén hoặc luồng dữ liệu được tạo bởi mongodump --gzip
.
Ví dụ:
mongorestore --gzip --nsInclude="krankykranes.*" dump3/
Chế độ yên lặng
Bạn có thể sử dụng --quiet
để giới hạn đầu ra trong cửa sổ Terminal hoặc Command Prompt của bạn.
mongorestore --quiet
Nếu không sử dụng điều này, bạn có thể sẽ thấy một danh sách lớn các chế độ xem, bộ sưu tập, v.v. được khôi phục.
Chế độ chi tiết
Mặt khác, bạn có thể sử dụng --verbose
hoặc -v
tham số để tăng đầu ra trong cửa sổ Terminal hoặc Command Prompt của bạn.
mongorestore --verbose
Bạn có thể tăng độ chi tiết bằng cách lặp lại -v
tạo nhiều lần.
Ví dụ:
mongorestore -vvvv
Thông tin thêm về mongodump
mongorestore
tiện ích chấp nhận nhiều tham số hữu ích khác và cũng có nhiều yếu tố khác nhau cần xem xét khi sử dụng nó như một phần của chiến lược sao lưu và phục hồi.
Xem mongorestore
tài liệu trên trang web MongoDB để biết thêm thông tin.
Các tùy chọn khác
mongodump
và mongorestore
là các công cụ đơn giản và hiệu quả để sao lưu và khôi phục các triển khai MongoDB nhỏ, nhưng không phải là công cụ lý tưởng để sao lưu các hệ thống lớn hơn.
Xem Phương pháp sao lưu MongoDB trên trang web MongoDB để biết các phương pháp khác để sao lưu và khôi phục cơ sở dữ liệu MongoDB của bạn.