At holde sikkerhedskopier af din database er en af de vigtigste opgaver i ethvert produktionsmiljø. Det er processen med at kopiere dine data til et andet sted for at holde dem sikkert. Dette kan være nyttigt ved genopretning fra nødsituationer som databasekorruption eller en database, der går ned uden reparation.
Udover gendannelse kan en sikkerhedskopi også bruges til at efterligne en produktionsdatabase til at teste en applikation i et andet miljø, eller endda til at fejlsøge noget, der ikke kan gøres på produktionsdatabasen.
Der er forskellige metoder til databasesikkerhedskopiering, som du kan implementere, fra logisk sikkerhedskopiering ved hjælp af værktøjer, der er indlejret i databasen (f.eks. mysqldump, mongodump, pg_dump) til fysisk sikkerhedskopiering ved hjælp af tredjepartsværktøjer (f.eks. xtrabackup, barmand, pgbackrest, mongodb konsekvent backup).
Hvilken metode, der skal bruges, bestemmes ofte af, hvordan du vil gendanne. Antag for eksempel, at du tabte et bord eller en samling ved en fejl. Hvor usandsynligt det end kan virke, sker det. Så den hurtigste måde at gendanne på ville være at gendanne netop den tabel eller samling i stedet for at skulle gendanne en hel database.
Sikkerhedskopiering og gendannelse i Mongodb
Mongodump og mongorestore er værktøjet til logisk backup brugt i MongoDB, det er en slags mysqldump i MySQL eller pg_dump i PostgreSQL. Mongodump og mongorestore-værktøjet vil blive inkluderet, når du installerer MongoDB, og det dumper dataene i BSON-format. Mongodump bruges til logisk backup af databasen til dumpfiler, mens mongorestore bruges til gendannelsesoperationen.
mongodump og mongorestore-kommandoer er nemme at bruge, selvom der er mange muligheder.
Som vi kan se nedenfor, kan du sikkerhedskopiere specifikke databaser eller samlinger. Du kan endda tage et øjebliksbillede ved at inkludere oploggen.
[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
Der er mange muligheder i mongorestore-kommando, obligatorisk indstilling er relateret til forbindelsesmuligheder såsom vært, port og godkendelse. Der er andre parametre, såsom -j bruges til at gendanne samlinger parallelt, -c eller --collection bruges til en specifik samling, og -d eller --db bruges til at definere en specifik database. Listen over muligheder for mongorestore-parameteren kan vises ved hjælp af hjælp :
[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)
Gendannelse af specifikke samlinger i MongoDB kan gøres ved at bruge parametersamlingen i mongorestore. Antag at du har en ordredatabase, inde i ordredatabasen er der nogle samlinger som vist nedenfor:
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
Vi har allerede planlagt en backup til ordredatabasen, og vi ønsker at gendanne lagersamlingen til en ny database order_new på samme server. Hvis du vil bruge option --collection, skal du sende samlingsnavnet som parameter for mongorestore, eller du kan bruge optionen --nsInclude={db}.{collection}, hvis du ikke har angivet stien til samlingsfilen .
[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
Du kan tjekke samlingen i order_new database som vist nedenfor :
my_mongodb_0:PRIMARY> use order_new;
switched to db order_new
my_mongodb_0:PRIMARY> show collections;
stock
Hvordan vi kan gendanne ved hjælp af mongodump i ClusterControl
Gendannelse af et backup-dump via ClusterControl er nemt, du skal blot bruge 2 trin for at gendanne sikkerhedskopien. Der vil være masser af backup-filer på listen, hvis du har aktiveret din backup tidsplan, der er nogle oplysninger om backups, som kan være meget nyttige. For eksempel status for sikkerhedskopiering, som angiver, om sikkerhedskopieringen var gennemført/mislykkedes, sikkerhedskopieringsmetoden var taget, liste over databaser og størrelsen på dump. Trinene til at gendanne MongoDB-data via ClusterControl er som nedenfor:
Trin 1
Følg anvisningerne for at gendanne backup til en node som vist nedenfor...
Trin to
Du skal vælge, hvilken sikkerhedskopi der skal gendannes.
Trin tre
Gennemgå oversigten...