Manter backups de seu banco de dados é uma das tarefas mais importantes em qualquer ambiente de produção. É o processo de copiar seus dados para algum outro lugar para mantê-los seguros. Isso pode ser útil na recuperação de situações de emergência, como corrupção de banco de dados ou falha de banco de dados irreparável.
Além da recuperação, um backup também pode ser usado para simular um banco de dados de produção para testar uma aplicação em um ambiente diferente, ou mesmo para depurar algo que não pode ser feito no banco de dados de produção.
Existem vários métodos de backup de banco de dados que você pode implementar, desde backup lógico usando ferramentas incorporadas no banco de dados (por exemplo, mysqldump, mongodump, pg_dump) até backup físico usando ferramentas de terceiros (por exemplo. xtrabackup, barman, pgbackrest, backup consistente do mongodb).
O método a ser usado geralmente é determinado em como você deseja restaurar. Por exemplo, suponha que você descartou uma tabela ou uma coleção por engano. Por mais improvável que pareça, isso acontece. Portanto, a maneira mais rápida de recuperar seria restaurar apenas essa tabela ou coleção, em vez de restaurar um banco de dados inteiro.
Backup e restauração no Mongodb
Mongodump e mongorestore é a ferramenta de backup lógico usada no MongoDB, é tipo mysqldump no MySQL, ou pg_dump no PostgreSQL. O utilitário mongodump e mongorestore será incluído quando você instalar o MongoDB e despeja os dados no formato BSON. O Mongodump é usado para fazer backup do banco de dados logicamente em arquivos de despejo, enquanto o mongorestore é usado para a operação de restauração.
Os comandos mongodump e mongorestore são fáceis de usar, embora existam muitas opções.
Como podemos ver abaixo, você pode fazer backup de bancos de dados ou coleções específicas. Você pode até tirar um instantâneo de um ponto no tempo incluindo o oplog.
[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
Existem muitas opções no comando mongorestore, a opção obrigatória está relacionada às opções de conexão como host, porta e autenticação. Existem outros parâmetros, como -j usado para restaurar coleções em paralelo, -c ou --collection é usado para uma coleção específica e -d ou --db é usado para definir um banco de dados específico. A lista de opções do parâmetro mongorestore pode ser mostrada usando 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)
A restauração de coleções específicas no MongoDB pode ser feita usando a coleção de parâmetros no mongorestore. Suponha que você tenha um banco de dados de pedidos, dentro do banco de dados de pedidos existem algumas coleções conforme mostrado abaixo:
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
Já agendamos um backup do banco de dados de pedidos e queremos restaurar a coleção de estoque em um novo banco de dados order_new no mesmo servidor. Se você quiser usar a opção --collection, você precisa passar o nome da coleção como parâmetro de mongorestore ou você pode usar a opção --nsInclude={db}.{collection} se você não especificou o caminho para o arquivo de coleção .
[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
Você pode verificar a coleção no banco de dados order_new conforme mostrado abaixo:
my_mongodb_0:PRIMARY> use order_new;
switched to db order_new
my_mongodb_0:PRIMARY> show collections;
stock
Como podemos restaurar usando mongodump no ClusterControl
Restaurar um dump de backup por meio do ClusterControl é fácil, você só precisa de 2 etapas para restaurar o backup. Haverá muitos arquivos de backup na lista se você ativou seu agendamento de backup, há algumas informações sobre os backups que podem ser muito úteis. Por exemplo, o status do backup que indica se o backup foi concluído/falhou, o método de backup realizado, a lista de bancos de dados e o tamanho do dump. As etapas para restaurar os dados do MongoDB via ClusterControl são as seguintes:
Primeiro passo
Siga as instruções para restaurar o backup em um nó, conforme mostrado abaixo...
Passo Dois
Você precisa escolher qual backup precisa ser restaurado.
Etapa Três
Revisar o resumo...