MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách khôi phục một bộ sưu tập cụ thể trong MongoDB bằng cách sử dụng sao lưu logic

Giữ các bản sao lưu cơ sở dữ liệu của bạn là một trong những nhiệm vụ quan trọng nhất trong bất kỳ môi trường sản xuất nào. Đây là quá trình sao chép dữ liệu của bạn sang một số nơi khác để giữ an toàn. Điều này có thể hữu ích trong việc khôi phục từ các tình huống khẩn cấp như hỏng cơ sở dữ liệu hoặc cơ sở dữ liệu gặp sự cố không thể sửa chữa.

Ngoài khôi phục, bản sao lưu cũng có thể được sử dụng để bắt chước cơ sở dữ liệu sản xuất để thử nghiệm một ứng dụng trong môi trường khác hoặc thậm chí để gỡ lỗi thứ gì đó không thể thực hiện được trên cơ sở dữ liệu sản xuất.

Có nhiều phương pháp sao lưu cơ sở dữ liệu khác nhau mà bạn có thể thực hiện, từ sao lưu hợp lý bằng cách sử dụng các công cụ được nhúng trong cơ sở dữ liệu (ví dụ:mysqldump, mongodump, pg_dump) đến sao lưu vật lý bằng các công cụ của bên thứ ba (ví dụ:xtrabackup, barman, pgbackrest, mongodb nhất quán sao lưu).

Phương pháp sử dụng thường được xác định về cách bạn muốn khôi phục. Ví dụ:giả sử bạn đã đánh rơi một bảng hoặc một bộ sưu tập do nhầm lẫn. Không có khả năng như nó có vẻ, nó xảy ra. Vì vậy, cách nhanh nhất để khôi phục là chỉ khôi phục bảng hoặc bộ sưu tập đó, thay vì phải khôi phục toàn bộ cơ sở dữ liệu.

Sao lưu và Khôi phục trong Mongodb

Mongodump và mongorestore là công cụ để sao lưu logic được sử dụng trong MongoDB, nó là loại mysqldump trong MySQL hoặc pg_dump trong PostgreSQL. Tiện ích mongodump và mongorestore sẽ được bao gồm khi bạn cài đặt MongoDB và nó kết xuất dữ liệu ở định dạng BSON. Mongodump được sử dụng để sao lưu cơ sở dữ liệu một cách hợp lý vào các tệp kết xuất, trong khi mongorestore được sử dụng cho hoạt động khôi phục.

Các lệnh

mongodump và mongorestore rất dễ sử dụng, mặc dù có rất nhiều tùy chọn.

Như chúng ta thấy bên dưới, bạn có thể sao lưu cơ sở dữ liệu hoặc bộ sưu tập cụ thể. Bạn thậm chí có thể chụp nhanh một thời điểm bằng cách đưa vào nhật ký hoạt động.

[email protected]:~# mongodump --help

Usage:

  mongodump <options>



Export the content of a running server into .bson files.



Specify a database with -d and a collection with -c to only dump that database or collection.



See http://docs.mongodb.org/manual/reference/program/mongodump/ for more information.



general options:

      --help                                                print usage

      --version                                             print the tool version and exit



verbosity options:

  -v, --verbose=<level>                                     more detailed log output (include multiple times for more verbosity, e.g. -vvvvv, or specify a numeric value, e.g. --verbose=N)

      --quiet                                               hide all log output



connection options:

  -h, --host=<hostname>                                     mongodb host to connect to (setname/host1,host2 for replica sets)

      --port=<port>                                         server port (can also use --host hostname:port)



kerberos options:

      --gssapiServiceName=<service-name>                    service name to use when authenticating using GSSAPI/Kerberos ('mongodb' by default)

      --gssapiHostName=<host-name>                          hostname to use when authenticating using GSSAPI/Kerberos (remote server's address by default)



ssl options:

      --ssl                                                 connect to a mongod or mongos that has ssl enabled

      --sslCAFile=<filename>                                the .pem file containing the root certificate chain from the certificate authority

      --sslPEMKeyFile=<filename>                            the .pem file containing the certificate and key

      --sslPEMKeyPassword=<password>                        the password to decrypt the sslPEMKeyFile, if necessary

      --sslCRLFile=<filename>                               the .pem file containing the certificate revocation list

      --sslAllowInvalidCertificates                         bypass the validation for server certificates

      --sslAllowInvalidHostnames                            bypass the validation for server name

      --sslFIPSMode                                         use FIPS mode of the installed openssl library



authentication options:

  -u, --username=<username>                                 username for authentication

  -p, --password=<password>                                 password for authentication

      --authenticationDatabase=<database-name>              database that holds the user's credentials

      --authenticationMechanism=<mechanism>                 authentication mechanism to use



namespace options:

  -d, --db=<database-name>                                  database to use

  -c, --collection=<collection-name>                        collection to use



uri options:

      --uri=mongodb-uri                                     mongodb uri connection string



query options:

  -q, --query=                                              query filter, as a JSON string, e.g., '{x:{$gt:1}}'

      --queryFile=                                          path to a file containing a query filter (JSON)

      --readPreference=<string>|<json>                      specify either a preference name or a preference json object

      --forceTableScan                                      force a table scan



output options:

  -o, --out=<directory-path>                                output directory, or '-' for stdout (defaults to 'dump')

      --gzip                                                compress archive our collection output with Gzip

      --repair                                              try to recover documents from damaged data files (not supported by all storage engines)

      --oplog                                               use oplog for taking a point-in-time snapshot

      --archive=<file-path>                                 dump as an archive to the specified path. If flag is specified without a value, archive is written to stdout

      --dumpDbUsersAndRoles                                 dump user and role definitions for the specified database

      --excludeCollection=<collection-name>                 collection to exclude from the dump (may be specified multiple times to exclude additional collections)

      --excludeCollectionsWithPrefix=<collection-prefix>    exclude all collections from the dump that have the given prefix (may be specified multiple times to exclude additional prefixes)

  -j, --numParallelCollections=                             number of collections to dump in parallel (4 by default) (default: 4)

      --viewsAsCollections                                  dump views as normal collections with their produced data, omitting standard collections

Có nhiều tùy chọn trong lệnh mongorestore, tùy chọn bắt buộc liên quan đến các tùy chọn kết nối như máy chủ, cổng và xác thực. Có các tham số khác, như -j được sử dụng để khôi phục các bộ sưu tập song song, -c hoặc --collection được sử dụng cho một bộ sưu tập cụ thể và -d hoặc --db được sử dụng để xác định một cơ sở dữ liệu cụ thể. Danh sách các tùy chọn của tham số mongorestore có thể được hiển thị bằng cách sử dụng trợ giúp:

[email protected]:~# mongorestore --help

Usage:

  mongorestore <options> <directory or file to restore>



Restore backups generated with mongodump to a running server.



Specify a database with -d to restore a single database from the target directory,

or use -d and -c to restore a single collection from a single .bson file.



See http://docs.mongodb.org/manual/reference/program/mongorestore/ for more information.



general options:

      --help                                                print usage

      --version                                             print the tool version and exit



verbosity options:

  -v, --verbose=<level>                                     more detailed log output (include multiple times for more verbosity, e.g. -vvvvv, or specify a numeric value, e.g. --verbose=N)

      --quiet                                               hide all log output



connection options:

  -h, --host=<hostname>                                     mongodb host to connect to (setname/host1,host2 for replica sets)

      --port=<port>                                         server port (can also use --host hostname:port)



kerberos options:

      --gssapiServiceName=<service-name>                    service name to use when authenticating using GSSAPI/Kerberos ('mongodb' by default)

      --gssapiHostName=<host-name>                          hostname to use when authenticating using GSSAPI/Kerberos (remote server's address by default)



ssl options:

      --ssl                                                 connect to a mongod or mongos that has ssl enabled

      --sslCAFile=<filename>                                the .pem file containing the root certificate chain from the certificate authority

      --sslPEMKeyFile=<filename>                            the .pem file containing the certificate and key

      --sslPEMKeyPassword=<password>                        the password to decrypt the sslPEMKeyFile, if necessary

      --sslCRLFile=<filename>                               the .pem file containing the certificate revocation list

      --sslAllowInvalidCertificates                         bypass the validation for server certificates

      --sslAllowInvalidHostnames                            bypass the validation for server name

      --sslFIPSMode                                         use FIPS mode of the installed openssl library



authentication options:

  -u, --username=<username>                                 username for authentication

  -p, --password=<password>                                 password for authentication

      --authenticationDatabase=<database-name>              database that holds the user's credentials

      --authenticationMechanism=<mechanism>                 authentication mechanism to use



uri options:

      --uri=mongodb-uri                                     mongodb uri connection string



namespace options:

  -d, --db=<database-name>                                  database to use when restoring from a BSON file

  -c, --collection=<collection-name>                        collection to use when restoring from a BSON file

      --excludeCollection=<collection-name>                 DEPRECATED; collection to skip over during restore (may be specified multiple times to exclude additional collections)

      --excludeCollectionsWithPrefix=<collection-prefix>    DEPRECATED; collections to skip over during restore that have the given prefix (may be specified multiple times to exclude additional prefixes)

      --nsExclude=<namespace-pattern>                       exclude matching namespaces

      --nsInclude=<namespace-pattern>                       include matching namespaces

      --nsFrom=<namespace-pattern>                          rename matching namespaces, must have matching nsTo

      --nsTo=<namespace-pattern>                            rename matched namespaces, must have matching nsFrom



input options:

      --objcheck                                            validate all objects before inserting

      --oplogReplay                                         replay oplog for point-in-time restore

      --oplogLimit=<seconds>[:ordinal]                      only include oplog entries before the provided Timestamp

      --oplogFile=<filename>                                oplog file to use for replay of oplog

      --archive=<filename>                                  restore dump from the specified archive file. If flag is specified without a value, archive is read from stdin

      --restoreDbUsersAndRoles                              restore user and role definitions for the given database

      --dir=<directory-name>                                input directory, use '-' for stdin

      --gzip                                                decompress gzipped input



restore options:

      --drop                                                drop each collection before import

      --dryRun                                              view summary without importing anything. recommended with verbosity

      --writeConcern=<write-concern>                        write concern options e.g. --writeConcern majority, --writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}'

      --noIndexRestore                                      don't restore indexes

      --noOptionsRestore                                    don't restore collection options

      --keepIndexVersion                                    don't update index version

      --maintainInsertionOrder                              preserve order of documents during restoration

  -j, --numParallelCollections=                             number of collections to restore in parallel (4 by default) (default: 4)

      --numInsertionWorkersPerCollection=                   number of insert operations to run concurrently per collection (1 by default) (default: 1)

      --stopOnError                                         stop restoring if an error is encountered on insert (off by default)

      --bypassDocumentValidation                            bypass document validation

      --preserveUUID                                        preserve original collection UUIDs (off by default, requires drop)

Việc khôi phục các bộ sưu tập cụ thể trong MongoDB có thể được thực hiện bằng cách sử dụng bộ sưu tập tham số trong mongorestore. Giả sử bạn có cơ sở dữ liệu đơn hàng, bên trong cơ sở dữ liệu đơn hàng có một số bộ sưu tập như hình dưới đây:

my_mongodb_0:PRIMARY> show dbs;

admin   0.000GB

config  0.000GB

local   0.000GB

orders  0.000GB

my_mongodb_0:PRIMARY> use orders;

my_mongodb_0:PRIMARY> show collections;

order_details

orders

stock

Chúng tôi đã lên lịch sao lưu cho cơ sở dữ liệu đơn đặt hàng và chúng tôi muốn khôi phục bộ sưu tập hàng tồn kho thành một order_new cơ sở dữ liệu mới trong cùng một máy chủ. Nếu bạn muốn sử dụng tùy chọn --collection, bạn cần chuyển tên bộ sưu tập làm tham số của mongorestore hoặc bạn có thể sử dụng tùy chọn --nsInclude ={db}. {Collection} nếu bạn không chỉ định đường dẫn đến tệp bộ sưu tập .

[email protected]:~/dump/orders# mongorestore -umongoadmin --authenticationDatabase admin --db order_new --collection stock /root/dump/orders/stock.bson

Enter password:

​2020-03-09T04:06:29.100+0000 checking for collection data in /root/dump/orders/stock.bson

2020-03-09T04:06:29.110+0000 reading metadata for order_new.stock from /root/dump/orders/stock.metadata.json

2020-03-09T04:06:29.134+0000 restoring order_new.stock from /root/dump/orders/stock.bson

2020-03-09T04:06:29.202+0000 no indexes to restore

2020-03-09T04:06:29.203+0000 finished restoring order_new.stock (1 document)

2020-03-09T04:06:29.203+0000 done

Bạn có thể kiểm tra bộ sưu tập trong cơ sở dữ liệu order_new như hình dưới đây:

​my_mongodb_0:PRIMARY> use order_new;

switched to db order_new

my_mongodb_0:PRIMARY> show collections;

stock

Cách chúng ta có thể khôi phục bằng cách sử dụng mongodump trong ClusterControl

Khôi phục bản sao lưu thông qua ClusterControl rất dễ dàng, bạn chỉ cần thực hiện 2 bước để khôi phục bản sao lưu. Sẽ có rất nhiều tệp sao lưu trong danh sách nếu bạn đã bật lịch sao lưu của mình, có một số thông tin về các bản sao lưu có thể rất hữu ích. Ví dụ:trạng thái sao lưu cho biết quá trình sao lưu đã hoàn tất / không thành công, phương pháp sao lưu đã được thực hiện, danh sách cơ sở dữ liệu và kích thước của kết xuất. Các bước để khôi phục dữ liệu MongoDB qua ClusterControl như sau:

Bước Một

Làm theo lời nhắc để khôi phục sao lưu vào một nút như hình dưới đây ...

Bước Hai

Bạn cần chọn bản sao lưu nào cần được khôi phục.

Bước Ba

Xem lại bản tóm tắt ...


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn các tài liệu có kích thước mảng lớn hơn 1

  2. Cách phát triển ứng dụng cho MongoDB và Redpanda bằng Docker Compose

  3. Nhận số lượng kết nối đang mở trong mongoDB bằng java

  4. Cú pháp truy vấn riêng biệt trong C # MongoDB

  5. Tôi cố gắng chạy máy chủ mongod trên ubuntu:ngoại lệ trong initAndListen:29 Không tìm thấy thư mục dữ liệu / data / db., Terminating