One place for hosting & domains

      backup

      Como fazer backup, restaurar e migrar um banco de dados MongoDB no Ubuntu 20.04


      O autor selecionou a COVID-19 Relief Fund​​​​​ para receber uma doação como parte do programa Write for DOnations.

      Introdução

      O MongoDB é um dos mecanismos de banco de dados NoSQL mais populares. Ele é famoso por ser escalonável, robusto, confiável e fácil de usar. Neste artigo, você vai fazer backup, reiniciar e migrar um banco de dados MongoDB de exemplo.

      Importar e exportar um banco de dados significa lidar com dados em um formato legível para humanos que seja compatível com outros produtos de software. Em contrapartida, o backup e as operações de restauração do MongoDB criam ou usam dados binários específicos do MongoDB, que preservam não apenas a consistência e integridade dos seus dados, mas também seus atributos específicos do MongoDB. Assim, para a migração, geralmente é preferível usar o backup e restauração, desde que o sistema de origem e de destino sejam compatíveis.

      Pré-requisitos

      Antes de seguir este tutorial, certifique-se de completar os seguintes pré-requisitos:

      Exceto se explicitamente dito, todos os comandos que exigem privilégios root neste tutorial devem ser executados como um usuário não root com privilégios sudo.

      Passo 1 — Usando o JSON e BSON no MongoDB

      Antes de ir adiante com este artigo, é necessária uma compreensão básica sobre o assunto. Se você tiver experiência com outros sistemas de banco de dados NoSQL como o Redis, pode encontrar algumas similaridades ao trabalhar com o MongoDB.

      O MongoDB usa os formatos JSON e BSON (JSON binário) para armazenar suas informações. O JSON é o formato legível para humanos que é perfeito para exportar e, eventualmente, importar seus dados. Você pode gerenciar ainda mais seus dados exportados com qualquer ferramenta compatível com JSON, incluindo um editor de texto simples.

      Um documento json de exemplo se parece com este:

      Example of JSON Format

      {"address":[
          {"building":"1007", "street":"Park Ave"},
          {"building":"1008", "street":"New Ave"},
      ]}
      

      É conveniente se trabalhar com o JSON, mas ele não suporta todos os tipos de dados disponíveis em BSON. Isso significa que haverá a chamada “perda de fidelidade” das informações se usar o JSON. Para fazer backup e restaurar, é melhor usar o binário BSON.

      Em segundo lugar, você não precisa se preocupar com a criação explícita de um banco de dados MongoDB. Se o banco de dados especificado para importar ainda não existir, ele é criado automaticamente. O caso com a estrutura das coleções (tabelas de bancos de dados) é ainda melhor. Diferentemente de outros mecanismos de bancos de dados, no MongoDB, a estrutura é também criada automaticamente no momento da inserção do primeiro documento (linha do banco de dados).

      Em terceiro lugar, no MongoDB, ler ou inserir grandes quantidades de dados, como as tarefas deste artigo, pode gerar um uso intensivo de recursos e consumir grande parte do seu CPU, memória e espaço em disco. Isso deve ser considerado, já que o MongoDB é frequentemente usado para grandes bancos de dados e Big Data. A solução mais simples para esse problema é executar as exportações e backups durante a noite ou horários fora do pico.

      Em quarto lugar, a consistência das informações pode ser problemática se você tiver um servidor MongoDB ocupado, no qual as informações mudam durante a exportação do banco de dados ou o processo de backup. Uma solução possível para esse problema é a replicação, que você pode considerar quando avançar no tópico do MongoDB.

      Embora você possa usar as funções de importação e exportação para fazer backup e restaurar seus dados, há melhores maneiras de garantir a integridade total dos seus bancos de dados MongoDB. Para fazer backup dos seus dados, você deve usar o comando mongodump. Para restaurar, use o mongorestore. Vamos ver como eles funcionam.

      Passo 2 — Usando o mongodump para fazer backup de um banco de dados MongoDB

      Vamos mostrar primeiro como fazer backup do seu banco de dados MongoDB.

      Um argumento essencial para o mongodump é o --db, que especifica o nome do banco de dados do qual você deseja fazer backup. Se você não especificar um nome de banco de dados, o mongodump faz backup de todos os seus bancos de dados. O segundo argumento importante é o --out, que define o diretório no qual os dados serão despejados. Por exemplo, vamos fazer backup do banco de dados newdb e armazená-lo no diretório /var/backups/mongobackups. Idealmente, teremos cada um dos nossos backups em um diretório com a data atual como /var/backups/mongobackups/10-29-20.

      Primeiramente, crie o diretório /var/backups/mongobackups:

      • sudo mkdir /var/backups/mongobackups

      Em seguida, execute o mongodump:

      • sudo mongodump --db newdb --out /var/backups/mongobackups/`date +"%m-%d-%y"`

      Você verá uma saída como esta:

      Output

      2020-10-29T19:22:36.886+0000 writing newdb.restaurants to 2020-10-29T19:22:36.969+0000 done dumping newdb.restaurants (25359 documents)

      Note que no caminho de diretório acima, usamos date +"%m-%d-%y" que obtém automaticamente a data atual. Isso permitirá que tenhamos backups dentro de um diretório como /var/backups/10-29-20/. Isso é ainda mais conveniente quando automatizamos os backups.

      Neste ponto, você possui um backup completo do banco de dados newdb no diretório /var/backups/mongobackups/10-29-20/newdb/. Esse backup possui todo o necessário para restaurar o newdb corretamente e preservar sua chamada “fidelidade”.

      Como uma regra geral, você deve fazer backups regulares e, de preferência, quando o servidor estiver menos carregado. Assim, você pode definir o comando mongodump como uma tarefa cron para que ele seja executado regularmente, por exemplo, todos os dias às 03:03.

      Para fazer isso, abra o crontab, o editor do cron:

      Note que quando executa sudo crontab, você estará editando as tarefas cron para o usuário root. Isso é recomendado, porque se você definir os crons para seu usuário, eles podem não ser executados corretamente, especialmente se seu perfil sudo exigir uma verificação por senha.

      Dentro do prompt do crontab, insira o seguinte comando mongodump:

      crontab

      3 3 * * * mongodump --out /var/backups/mongobackups/`date +"%m-%d-%y"`
      

      No comando acima, omitimos o argumento --db de propósito, porque geralmente é interessante fazer backup de todos os nossos bancos de dados.

      Dependendo dos tamanhos dos seus bancos de dados MongoDB, é possível esgotar rapidamente o espaço em disco com muitos backups. É por isso que é recomendável limpar os backups antigos regularmente ou compactá-los.

      Por exemplo, para excluir todos os backups com idade maior que sete dias, use o seguinte comando bash:

      • find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} ;

      De maneira similar ao comando mongodump anterior, também é possível adicionar isso como uma tarefa cron. Ele deve ser executado pouco antes de iniciar o próximo backup, por exemplo, às 03:01. Para esse fim, abra novamente o crontab:

      Em seguida, insira a linha a seguir:

      crontab

      1 3 * * * find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} ;
      

      Salve e feche o arquivo.

      A realização de todas as tarefas neste passo garantirá uma solução de backup adequada para seus bancos de dados MongoDB.

      Passo 3 — Usando o mongorestore para restaurar e migrar um banco de dados MongoDB

      Ao restaurar seu banco de dados MongoDB de um backup anterior, você obtém uma cópia exata das suas informações do MongoDB obtidas em um momento específico, incluindo todos os índices e tipos de dados. Isso é especialmente útil quando quiser migrar seus bancos de dados MongoDB. Para restaurar o MongoDB, usaremos o comando mongorestore, que funciona com os backups binários que o mongodump produz.

      Vamos continuar nossos exemplos com o banco de dados newdb e ver como podemos restaurá-lo a partir do backup obtido anteriormente. Primeiramente, vamos especificar o nome do banco de dados com o argumento --nsInclude. Vamos usar o newdb.* para restaurar todas as coleções. Para restaurar uma única coleção como restaurants, use o newdb.restaurants ao invés disso.

      Em seguida, usando o --drop, vamos garantir que o banco de dados de destino seja primeiro descartado, para que depois o backup seja restaurado em um banco de dados limpo. Como um argumento final, vamos especificar o diretório do último backup, que será parecido com isto: /var/backups/mongobackups/10-29-20/newdb/.

      Assim que tiver um backup com carimbo de data/hora, restaure-o usando este comando:

      • sudo mongorestore --db newdb --drop /var/backups/mongobackups/10-29-20/newdb/

      Você verá uma saída como esta:

      Output

      2020-10-29T19:25:45.825+0000 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead 2020-10-29T19:25:45.826+0000 building a list of collections to restore from /var/backups/mongobackups/10-29-20/newdb dir 2020-10-29T19:25:45.829+0000 reading metadata for newdb.restaurants from /var/backups/mongobackups/10-29-20/newdb/restaurants.metadata.json 2020-10-29T19:25:45.834+0000 restoring newdb.restaurants from /var/backups/mongobackups/10-29-20/newdb/restaurants.bson 2020-10-29T19:25:46.130+0000 no indexes to restore 2020-10-29T19:25:46.130+0000 finished restoring newdb.restaurants (25359 documents) 2020-10-29T19:25:46.130+0000 done

      No caso acima, estamos restaurando os dados no mesmo servidor onde criamos o backup. Se quiser migrar os dados para outro servidor e usar a mesma técnica, você deve copiar o diretório de backup — em nosso caso, /var/backups/mongobackups/10-29-20/newdb/ — para o outro servidor.

      Conclusão

      Agora, você terminou de realizar algumas tarefas essenciais relacionadas ao backup, restauração e migração dos seus bancos de dados MongoDB. Nenhum servidor MongoDB de produção deve ser executado sem uma estratégia de backup confiável, como aquela descrita aqui.



      Source link

      What is a Backup?


      Backups are copies or archives of data used for recovery after the loss, deletion, or corruption of a database or filesystem. Developers can create backups in a number of ways, including manual implementation, cloud hosting services, or backup programs (such as Bacula).

      For more resources about backups, please visit:

      A complete list of our backup-related tutorials, questions, and other educational resources can be found on our backups tag page.



      Source link

      Tutorial: How to Use Synology’s Hyper Backup App to Sync with DreamObjects


      If you’ve got a NAS (network attached storage) device at home, you know how great they are.

      These mini-computers full of hard drives live on your home network, ready and waiting to store and share all of your music, photos, and other media. You can grant access to yourself, your friends, your family, or everyone on the planet using any number of different apps!

      While NAS devices themselves are extremely fault-tolerant, that doesn’t mean that they could survive . . . a flood. Or a fire. A Godzilla foot would definitely destroy all your data.

      That’s why you should back up your NAS regularly. Synology has made this easy by providing powerful backup tools in their line of NAS devices.

      Today we’ll look at setting up Synology’s Hyper Backup app, and we’ll be using it to back up the contents of our Synology device to DreamHost’s DreamObjects cloud storage service.

      You’ll first need to create a private “bucket” on DreamObjects this where your data will live. Doing this is quick and easy, and at the end of the process, you’ll have three things: a public key, a secret key, and a bucket name.

      Secure Cloud Storage Hosting

      DreamObjects is an inexpensive object storage service great for hosting files, storing backups, and Web app development.

      The process to create a bucket on the DreamObjects control panel is pretty straightforward, but if you need a little hand-holding, our knowledge base has got you covered: DreamHost Knowledge Base: What is DreamObjects?

      Once you’ve got your bucket created, log in to your Synology device’s web interface, also known as DSM.

      Click over to the Package Center, navigate to the “Hyper Backup” app, and click to Install/Open it.

      Synology Hyper Backup

      If you’ve just installed Hyper Backup, navigate to your list of installed apps where you’ll see that it now sits proudly under a spotlight, awaiting your click.

      Hyper Backup App Icon

      Launch Hyper Backup.

      The first thing you’ll be asked is which where you’d like your backups to live. Navigate to “S3 Storage.”

      S3 Storage

      Why S3? Simple! DreamObjects is compatible with S3’s API, meaning that just about any app written for AWS S3 will work flawlessly with DreamObjects.

      Backup Destination Settings

      Select “Custom Server URL” for your S3 Server. Your server address should be “objects-us-east1.dream.io” and your signature version can be v4. Once you provide your access key (public key) and secret key, all of your available DreamObjects buckets will populate the dropdown list. Select the one that you want to use (you might only have one.) The “Directory” will be a directory that lives at the top level of your bucket, and you can name it whatever you like.

      Now you’ll need to tell Hyper Backup which directories to include in this backup task.

      Selecting directories to backup

      If you want to back up the settings and data from any of Synology’s own applications, you can do that as well on the next screen.

      Selecting apps to backup

      You’ll now need to give this backup task a name so that you’ll be able to quickly identify it in the future. You’ll also need to choose how often you’d like the backup to run.

      Configure your backup

      Finally, you’ll need to determine your rotation settings. This is important. If you allow your backups to run every week, for example, you’ll end up with 52 backups by the end of the year, and you’ll end up paying for all 52 of them. That’s probably not what you want.

      What you select on this screen is up to you, but here’s the official word from Synology on how their Rotation Settings work.

      Rotation Settings

      If all goes as planned, you should now see a screen like this:

      Backups have begun

      Whatever data you’ve selected from your NAS is now being backed up to DreamObjects! You can now kick back and never worry about having to retrieve it until you have to!

      If all goes well, you’ll see this:

      Great success!

      If you ever have a need to restore your data, just launch Hyper Backup and click this little fella to get started:

      Restore Data

      Alternately, you can use Synology’s standalone utility, Hyper Backup Explorer to retrieve individual files buried within your backups as well.

      Backups automated with tools like Hyper Backup and DreamObjects can be key to ensuring the security of your data in a world full of ransomware, random hardware failures, and natural disasters. Be prepared!



      Source link