Het maken van back-ups van uw database is een van de belangrijkste taken in elke productieomgeving. Het is het proces van het kopiëren van uw gegevens naar een andere plaats om het veilig te houden. Dit kan handig zijn bij het herstel van noodsituaties zoals databasecorruptie of een database die onherstelbaar crasht.
Naast herstel kan een back-up ook worden gebruikt om een productiedatabase na te bootsen voor het testen van een applicatie in een andere omgeving, of zelfs om iets op te sporen dat niet in de productiedatabase kan worden gedaan.
Er zijn verschillende methoden voor databaseback-ups die u kunt implementeren, van logische back-up met tools die in de database zijn ingesloten (bijv. mysqldump, mongodump, pg_dump) tot fysieke back-up met tools van derden (bijv. xtrabackup, barman, pgbackrest, mongodb consistente back-up).
Welke methode je moet gebruiken, hangt vaak af van hoe je wilt herstellen. Stel bijvoorbeeld dat je per ongeluk een tafel of een verzameling hebt laten vallen. Hoe onwaarschijnlijk het ook lijkt, het gebeurt. Dus de snelste manier om te herstellen zou zijn om alleen die tabel of verzameling te herstellen, in plaats van een hele database te moeten herstellen.
Back-up en herstel in Mongodb
Mongodump en mongorestore is de tool voor logische back-up die wordt gebruikt in MongoDB, het is een soort mysqldump in MySQL, of pg_dump in PostgreSQL. Het hulpprogramma mongodump en mongorestore wordt meegeleverd wanneer u MongoDB installeert en het dumpt de gegevens in BSON-indeling. Mongodump wordt gebruikt om logisch een back-up van de database te maken in dumpbestanden, terwijl mongorestore wordt gebruikt voor de herstelbewerking.
mongodump- en mongorestore-commando's zijn gemakkelijk te gebruiken, hoewel er veel opties zijn.
Zoals we hieronder kunnen zien, kun je een back-up maken van specifieke databases of verzamelingen. U kunt zelfs een momentopname maken door de oplog op te nemen.
[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
Er zijn veel opties in de mongorestore-opdracht, de verplichte optie is gerelateerd aan verbindingsopties zoals host, poort en authenticatie. Er zijn andere parameters, zoals -j gebruikt om collecties parallel te herstellen, -c of --collection wordt gebruikt voor een specifieke collectie, en -d of --db wordt gebruikt om een specifieke database te definiëren. De lijst met opties van de mongorestore-parameter kan worden weergegeven met behulp van help:
[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)
Het herstellen van specifieke verzamelingen in MongoDB kan worden gedaan met behulp van de parameterverzameling in mongorestore. Stel dat u een database met bestellingen heeft, binnen de database met bestellingen zijn er enkele verzamelingen, zoals hieronder weergegeven:
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
We hebben al een back-up gepland voor de orderdatabase en we willen de voorraadverzameling terugzetten in een nieuwe database order_new op dezelfde server. Als je de optie --collection wilt gebruiken, moet je de collectienaam doorgeven als parameter van mongorestore of je kunt de optie --nsInclude={db}.{collection} gebruiken als je het pad naar het collectiebestand niet hebt opgegeven .
[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
U kunt de collectie controleren in de order_new database zoals hieronder getoond:
my_mongodb_0:PRIMARY> use order_new;
switched to db order_new
my_mongodb_0:PRIMARY> show collections;
stock
Hoe we kunnen herstellen met behulp van mongodump in ClusterControl
Het herstellen van een back-updump via ClusterControl is eenvoudig, u hebt slechts 2 stappen nodig om de back-up te herstellen. Er zullen veel back-upbestanden in de lijst staan als je je back-upschema hebt ingeschakeld, er is wat informatie over de back-ups die erg handig kan zijn. Bijvoorbeeld de status van de back-up die aangeeft of de back-up is voltooid/mislukt, de wijze waarop de back-up is gemaakt, een lijst met databases en de grootte van de dump. De stappen om MongoDB-gegevens te herstellen via ClusterControl zijn als volgt:
Stap één
Volg de aanwijzingen om de back-up te herstellen naar een node zoals hieronder weergegeven...
Stap twee
Je moet kiezen welke back-up hersteld moet worden.
Stap drie
Bekijk de samenvatting...