Trong các phiên bản trước của MongoDB, bạn có thể sử dụng copyDB
lệnh hoặc phương thức trợ giúp của nó, db.copyDatabase()
để sao chép cơ sở dữ liệu.
MongoDB kể từ đó đã không dùng chúng nữa. Ngoài ra, bắt đầu từ phiên bản 4.2, MongoDB đã xóa copydb
và do đó cũng là lệnh db.copyDatabase()
, có nghĩa là bạn không thể sử dụng chúng ngay cả khi bạn muốn nếu bạn đang sử dụng MongoDB 4.2 trở lên.
May mắn thay, có một cách khác để sao chép cơ sở dữ liệu MongoDB.
Kiểm tra Công cụ Cơ sở dữ liệu MongoDB
Trong MongoDB, bạn có thể sao chép cơ sở dữ liệu bằng Công cụ cơ sở dữ liệu MongoDB. Cụ thể, bạn có thể sử dụng mongodump
và mongorestore
.
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ài đặt Công cụ cơ sở dữ liệu MongoDB hay chưa, hãy thử chạy các lệnh sau trong Terminal hoặc Command Prompt để kiểm tra:
mongodump --version
mongorestore --version
Điều đó đặc biệt kiểm tra mongodump
và mongorestore
các phiên bản.
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 Công cụ cơ sở dữ liệu MongoDB vào hệ thống của mình.
Ví dụ về sao chép cơ sở dữ liệu
Bạn cần chạy mongodump
và mongorestore
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 nó từ mongo
vỏ bọc.
Dưới đây là một ví dụ về mã sao chép cơ sở dữ liệu:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
Trong trường hợp này, chúng tôi sao lưu PetHotel
cơ sở dữ liệu, sau đó khôi phục tất cả các bộ sưu tập của nó vào cơ sở dữ liệu có tên là PetHouse
. Nói cách khác, chúng tôi đã nhân bản PetHotel
cơ sở dữ liệu dưới dạng PetHouse
.
Điều này sử dụng mongodump
để tạo tệp sao lưu của cơ sở dữ liệu, sau đó mongorestore
để khôi phục cơ sở dữ liệu đó dưới một tên khác. Chúng tôi đã thực hiện việc này bằng cách kết xuất cơ sở dữ liệu xuống luồng đầu ra tiêu chuẩn và chuyển vào mongorestore
.
Đây là chức năng của mỗi thông số:
Tham số | Mô tả |
---|---|
--archive | Ghi kết quả đầu ra vào một tệp lưu trữ được chỉ định hoặc, nếu tệp lưu trữ không được chỉ định, ghi vào đầu ra chuẩn (stdout ). Trong trường hợp của chúng tôi, tệp lưu trữ là không xác định, vì vậy nó được ghi vào đầu ra chuẩn. |
--db | Chỉ định một cơ sở dữ liệu để sao lưu. Trong trường hợp này, chúng tôi sao lưu PetHotel cơ sở dữ liệu. |
--nsFrom | Chỉ định bộ sưu tập trong tệp kết xuất. Ký tự đại diện dấu hoa thị (* ) chỉ định tất cả các bộ sưu tập. |
--nsTo | Chỉ định tên bộ sưu tập sẽ được sử dụng trong cơ sở dữ liệu được khôi phục. |
Bạn cũng có thể sử dụng mongodump
để kết xuất tất cả cơ sở dữ liệu. Để làm điều đó, chỉ cần chạy mongodump
mà không có bất kỳ đối số. Tuy nhiên, khi bạn làm điều đó, nó không bao gồm local
và config
cơ sở dữ liệu trong kết xuất của nó.