{"id":92367,"date":"2020-08-26T07:42:09","date_gmt":"2020-08-26T05:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh"},"modified":"2020-08-26T07:42:09","modified_gmt":"2020-08-26T05:42:09","slug":"putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","title":{"rendered":"Guia de backup de banco de dados","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<blockquote><p>\u2013 Oh, nenhum abrigo resistir\u00e1 ao impacto de um meteorito. Mas, assim como todos, voc\u00ea tem uma reserva, ent\u00e3o n\u00e3o precisa se preocupar.<\/p>\n<p><i>Stanislaw Lem, \"Di\u00e1rios Estelares de Ijon Tichy\"<\/i><\/p><\/blockquote>\n<p>\nO backup refere-se \u00e0 preserva\u00e7\u00e3o de uma c\u00f3pia dos dados em algum lugar fora do local principal de armazenamento.<\/p>\n<p><img decoding=\"async\" alt=\"Guia de backup de banco de dados\" src=\"\/wp-content\/uploads\/2020\/08\/c1dba0d8999cab69315560dfc57546e0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA principal finalidade do backup \u00e9 a recupera\u00e7\u00e3o de dados ap\u00f3s a sua perda. Nesse sentido, \u00e9 comum ouvir que, com uma r\u00e9plica do banco de dados, \u00e9 sempre poss\u00edvel recuperar os dados, e o backup n\u00e3o \u00e9 necess\u00e1rio. Na verdade, o backup resolve pelo menos tr\u00eas problemas que n\u00e3o podem ser resolvidos apenas com a r\u00e9plica, e nem mesmo a r\u00e9plica pode ser inicializada sem o backup.<\/p>\n<p>Em primeiro lugar, o backup permite restaurar dados ap\u00f3s um erro l\u00f3gico. Por exemplo, um contador pode ter exclu\u00eddo um conjunto de registros ou um administrador de banco de dados pode ter destru\u00eddo um espa\u00e7o de tabela. Ambas as opera\u00e7\u00f5es s\u00e3o absolutamente leg\u00edtimas do ponto de vista do banco de dados, e o processo de replica\u00e7\u00e3o as reproduzir\u00e1 na r\u00e9plica.<\/p>\n<p>Em segundo lugar, sistemas de gerenciamento de bancos de dados modernos s\u00e3o conjuntos de programas bastante confi\u00e1veis, mas ocasionalmente, ainda assim, ocorre a corrup\u00e7\u00e3o das estruturas internas do banco de dados, ap\u00f3s a qual o acesso aos dados \u00e9 perdido. O que \u00e9 especialmente frustrante \u00e9 que essa viola\u00e7\u00e3o geralmente ocorre sob alta carga ou durante a instala\u00e7\u00e3o de alguma atualiza\u00e7\u00e3o. Mas tanto a alta carga quanto as atualiza\u00e7\u00f5es regulares indicam que o banco de dados n\u00e3o \u00e9 de teste, e os dados armazenados nele s\u00e3o valiosos.<\/p>\n<p>Finalmente, a terceira tarefa, cuja solu\u00e7\u00e3o requer um backup, \u00e9 a clonagem do banco, por exemplo, para fins de teste.<\/p>\n<p>O backup de bancos de dados baseia-se de uma forma ou de outra em um dos dois princ\u00edpios:<\/p>\n<ul>\n<li>Extra\u00e7\u00e3o dos dados com subsequente salvamento em formato arbitr\u00e1rio;<\/li>\n<li>Captura do estado dos arquivos do banco de dados e salvamento de logs.<\/li>\n<\/ul>\n<p>\nVamos examinar esses princ\u00edpios e as ferramentas que os implementam com mais detalhes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Exporta\u00e7\u00e3o de dados<\/h3>\n<p>\nNo conjunto de utilit\u00e1rios que acompanham qualquer SGBD, sempre h\u00e1 ferramentas para exporta\u00e7\u00e3o e importa\u00e7\u00e3o de dados. Os dados s\u00e3o salvos em formato texto ou em um formato bin\u00e1rio espec\u00edfico para o SGBD em quest\u00e3o. A tabela abaixo apresenta uma lista dessas ferramentas:<\/p>\n<p>Formato bin\u00e1rio<br \/>\nFormato texto<\/p>\n<p>Oracle<br \/>\nDataPump Export\/DataPump Import<br \/>\nExportar\/Importar<br \/>\nSQL*Plus\/SQL*Loader<\/p>\n<p>PostgreSQL<br \/>\npg_dump, pg_dumpall\/pg_restore<br \/>\npg_dump, pg_dumpall\/psql<\/p>\n<p>Microsoft SQL Server<br \/>\nbcp<br \/>\nbcp<\/p>\n<p>DB2<br \/>\ndescarregar\/cargar<br \/>\ndescarregar\/cargar<\/p>\n<p>MySQL<\/p>\n<p>mysqldump, mysqlpump\/mysql, mysqlimport<\/p>\n<p>MongoDB<br \/>\nmongodump\/mongorestore<br \/>\nmongoexport\/mongoimport<\/p>\n<p>Cassandra<br \/>\nnodetool snapshot\/sstableloader<br \/>\ncqlsh<\/p>\n<p>\nO formato de texto \u00e9 bom porque pode ser editado ou at\u00e9 mesmo criado por programas externos, enquanto o formato bin\u00e1rio \u00e9 bom porque permite carregar e descarregar dados mais rapidamente, economizando recursos na convers\u00e3o de formatos.<\/p>\n<p>Apesar da simplicidade e da obviedade da ideia de descarregar dados, esse m\u00e9todo \u00e9 raramente utilizado para backup completo de bancos de dados industriais em alta carga. Aqui est\u00e3o as raz\u00f5es pelas quais a descarrega n\u00e3o \u00e9 adequada para backup completo:<\/p>\n<ul>\n<li>o processo de descarrega cria uma carga significativa no sistema de origem;<\/li>\n<li>a descarrega leva muito tempo \u2013 quando termina, os dados j\u00e1 podem estar desatualizados;<\/li>\n<li>fazer uma descarrega consistente de todo o banco de dados sob alta carga \u00e9 praticamente imposs\u00edvel, uma vez que o SGBD precisa reter uma c\u00f3pia do seu estado no momento em que a descarrega come\u00e7a. Quanto mais transa\u00e7\u00f5es forem realizadas desde o in\u00edcio da descarrega, maior ser\u00e1 o volume da c\u00f3pia (c\u00f3pias de dados desatualizadas no PostgreSQL, espa\u00e7o undo no Oracle, tempdb no Microsoft SQL Server etc.);<\/li>\n<li>a descarrega preserva a estrutura l\u00f3gica dos dados, mas n\u00e3o preserves sua estrutura f\u00edsica \u2013 os par\u00e2metros de armazenamento f\u00edsico das tabelas, \u00edndices etc.<\/li>\n<\/ul>\n<p>\nNo entanto, a descarrega tamb\u00e9m tem suas vantagens:<\/p>\n<ul>\n<li>alta seletividade: \u00e9 poss\u00edvel descarregar tabelas individuais, campos individuais e at\u00e9 linhas individuais;<\/li>\n<li>os dados descarregados podem ser carregados em um banco de dados de vers\u00e3o diferente, e se a descarga for feita em formato de texto, tamb\u00e9m em um banco de dados diferente.<\/li>\n<\/ul>\n<p>\nAssim, a descarrega \u00e9 usada principalmente para tarefas como backup de pequenas tabelas (por exemplo, diret\u00f3rios) ou distribui\u00e7\u00e3o de conjuntos de dados com uma nova vers\u00e3o do aplicativo. <\/p>\n<p>O m\u00e9todo mais comum de backup de bancos de dados \u00e9 a c\u00f3pia de arquivos do banco.<\/p>\n<h3>Backup \"frio\" de arquivos do banco de dados<\/h3>\n<p>\nA ideia \u00f3bvia \u00e9 parar o banco de dados e copiar todos os seus arquivos. Esse tipo de backup \u00e9 chamado de \"frio\". O m\u00e9todo \u00e9 extremamente confi\u00e1vel e simples, mas tem duas desvantagens evidentes:<\/p>\n<ul>\n<li>a partir de um backup \"frio\" s\u00f3 \u00e9 poss\u00edvel restaurar o estado do banco de dados que existia no momento da parada; transa\u00e7\u00f5es realizadas ap\u00f3s a reinicializa\u00e7\u00e3o do banco n\u00e3o ser\u00e3o inclu\u00eddas no backup \"frio\";<\/li>\n<li>nem todos os bancos de dados possuem uma janela tecnol\u00f3gica em que podem ser parados.<\/li>\n<\/ul>\n<p>\nSe o backup \"frio\" for aceit\u00e1vel para voc\u00ea, \u00e9 importante lembrar que<\/p>\n<ul>\n<li>um backup \"frio\" \u00e0s vezes deve incluir os logs. Os m\u00e9todos de identifica\u00e7\u00e3o dos logs que devem ser inclu\u00eddos no backup \"frio\" s\u00e3o espec\u00edficos para cada SGBD. Por exemplo, no Oracle \u00e9 necess\u00e1rio copiar os chamados online redo, ou seja, um n\u00famero fixo de arquivos de log de um diret\u00f3rio especial, mesmo quando o banco est\u00e1 parado corretamente. No PostgreSQL, \u00e9 preciso salvar todos os logs a partir do log que cont\u00e9m o \u00faltimo ponto de verifica\u00e7\u00e3o, cuja informa\u00e7\u00e3o est\u00e1 no arquivo de controle.<\/li>\n<li>o diret\u00f3rio do banco de dados pode conter arquivos tempor\u00e1rios de espa\u00e7o de tabela bastante grandes, que n\u00e3o precisam necessariamente ser inclu\u00eddos no backup. A prop\u00f3sito, essa observa\u00e7\u00e3o \u00e9 v\u00e1lida tamb\u00e9m para backups a \"quente\".<\/li>\n<\/ul>\n<p><\/p>\n<h3>\"Backup a quente\" de arquivos<\/h3>\n<p>\nA maioria dos backups de bancos de dados modernos \u00e9 realizada copiando os arquivos do banco de dados sem interromper o funcionamento do banco. Aqui surgem alguns problemas:<\/p>\n<ul>\n<li>No momento em que a c\u00f3pia come\u00e7a, o conte\u00fado do banco de dados pode n\u00e3o coincidir com o dos arquivos, pois parte da informa\u00e7\u00e3o est\u00e1 no cache e ainda n\u00e3o foi gravada no disco.<\/li>\n<li>Durante a c\u00f3pia, o conte\u00fado do banco pode mudar. Se estruturas de dados mut\u00e1veis est\u00e3o sendo usadas, o conte\u00fado dos arquivos mudar\u00e1, e ao usar estruturas imut\u00e1veis, o conjunto de arquivos mudar\u00e1: novos arquivos aparecer\u00e3o, enquanto antigos desaparecer\u00e3o.<\/li>\n<li>Como a grava\u00e7\u00e3o de dados no banco e a leitura dos arquivos do BD n\u00e3o s\u00e3o sincronizadas, o programa de backup pode ler uma p\u00e1gina incorreta, onde metade pertence \u00e0 vers\u00e3o antiga da p\u00e1gina e a outra metade \u00e0 nova.<\/li>\n<\/ul>\n<p>\nPara que um backup seja consistente, cada SGBD possui um comando que informa que o processo de backup foi iniciado. Os comandos podem variar sintaticamente: <\/p>\n<ul>\n<li>no Oracle, \u00e9 um comando separado ALTER DATABASE\/TABLESPACE BEGIN BACKUP;<\/li>\n<li>no PostgreSQL \u2013 fun\u00e7\u00e3o pg_start_backup();<\/li>\n<li>No Microsoft SQL Server e no DB2, a prepara\u00e7\u00e3o para backup \u00e9 feita implicitamente durante a execu\u00e7\u00e3o do comando BACKUP DATABASE;<\/li>\n<li>No MySQL Enterprise, Cassandra e MongoDB, a prepara\u00e7\u00e3o \u00e9 realizada implicitamente por uma ferramenta externa \u2013 mysqlbackup, OpsCenter e Ops Manager, respectivamente.<\/li>\n<\/ul>\n<p>\nApesar das diferen\u00e7as de sintaxe, o processo de prepara\u00e7\u00e3o para backup \u00e9 semelhante.<\/p>\n<p>Aqui est\u00e1 como a prepara\u00e7\u00e3o para backup \u00e9 feita em SGBDs com estruturas de disco mut\u00e1veis, ou seja, em todos os sistemas relacionais tradicionais com disco:<\/p>\n<ol>\n<li>O momento do in\u00edcio do backup \u00e9 registrado; o backup deve conter os logs do banco de dados a partir desse momento.<\/li>\n<li>Um ponto de verifica\u00e7\u00e3o \u00e9 executado, ou seja, todas as altera\u00e7\u00f5es que ocorreram nas p\u00e1ginas de dados at\u00e9 o momento registrado s\u00e3o gravadas no disco. Isso garante que os logs antes do in\u00edcio do backup n\u00e3o ser\u00e3o necess\u00e1rios na recupera\u00e7\u00e3o.<\/li>\n<li>Um modo especial de registro \u00e9 ativado: se uma p\u00e1gina de dados for alterada pela primeira vez ap\u00f3s ser carregada do disco, ao inv\u00e9s de registrar a altera\u00e7\u00e3o da p\u00e1gina no log, o banco registrar\u00e1 a p\u00e1gina inteira. Durante a execu\u00e7\u00e3o do procedimento preparat\u00f3rio, todas as p\u00e1ginas s\u00e3o gravadas no disco, de modo que na primeira altera\u00e7\u00e3o, o bloco sempre ser\u00e1 registrado no log como um todo. Mas se, durante o backup, a p\u00e1gina for novamente escrita no disco, a pr\u00f3xima altera\u00e7\u00e3o tamb\u00e9m resultar\u00e1 na grava\u00e7\u00e3o de uma c\u00f3pia completa da p\u00e1gina no log. Isso garante que, se por acaso a p\u00e1gina se tornar incorreta ao copiar o arquivo de dados, a aplica\u00e7\u00e3o do log a tornar\u00e1 correta novamente.<\/li>\n<li>As altera\u00e7\u00f5es nos cabe\u00e7alhos dos arquivos de dados s\u00e3o bloqueadas, ou seja, a parte cujo conte\u00fado n\u00e3o \u00e9 refletido nos logs. Isso garante que o cabe\u00e7alho seja copiado corretamente, e depois os logs sejam aplicados corretamente ao arquivo de dados.<\/li>\n<\/ol>\n<p>\nAp\u00f3s a execu\u00e7\u00e3o de todos os procedimentos mencionados acima, \u00e9 poss\u00edvel copiar os arquivos de dados usando os recursos do sistema operacional \u2013 cp, rsync e outros. A ativa\u00e7\u00e3o do modo de backup reduz o desempenho do banco de dados: primeiro, o volume dos logs aumenta e, em segundo lugar, se ocorrer uma falha durante o modo de backup, a recupera\u00e7\u00e3o ser\u00e1 mais longa, pois os cabe\u00e7alhos dos arquivos de dados n\u00e3o s\u00e3o atualizados. Quanto mais r\u00e1pido o backup for conclu\u00eddo, melhor para o banco de dados, por isso \u00e9 apropriado usar ferramentas como snapshot do sistema de arquivos ou BCV (Break of Mirror) em um array de discos. Alguns SGBDs (Oracle, PostgreSQL) permitem que o administrador escolha pessoalmente o m\u00e9todo de c\u00f3pia, enquanto outros (Microsoft SQL Server) oferecem uma interface para integrar suas pr\u00f3prias utilidades de backup com mecanismos de sistemas de arquivos ou de armazenamento.<\/p>\n<p>Ap\u00f3s a conclus\u00e3o do backup, \u00e9 necess\u00e1rio restaurar o banco de dados ao estado normal. No Oracle, isso \u00e9 feito com o comando ALTER DATABASE\/TABLESPACE END BACKUP, no PostgreSQL \u2013 chamando a fun\u00e7\u00e3o pg_stop_backup(), e em outros bancos \u2013 atrav\u00e9s de subprogramas internos dos comandos correspondentes ou servi\u00e7os externos.<\/p>\n<p>Veja como \u00e9 o diagrama temporal do processo de backup:<\/p>\n<p><img decoding=\"async\" alt=\"Guia de backup de banco de dados\" src=\"\/wp-content\/uploads\/2020\/08\/4e74f865e9f35acec083b747da4449cf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>A prepara\u00e7\u00e3o para o backup (begin backup) leva tempo, muitas vezes consider\u00e1vel. Mesmo que sejam utilizados volumes espelhados ou sistemas de arquivos capazes de fazer snapshots, o processo de backup n\u00e3o ser\u00e1 instant\u00e2neo.<\/li>\n<li>Juntamente com os arquivos de dados, \u00e9 necess\u00e1rio manter os logs desde o in\u00edcio da prepara\u00e7\u00e3o para o backup at\u00e9 o momento em que o banco \u00e9 revertido ao estado normal.<\/li>\n<li>\u00c9 poss\u00edvel restaurar a partir deste backup <b>no momento em que o banco \u00e9 revertido ao estado normal<\/b>. A recupera\u00e7\u00e3o em um momento anterior n\u00e3o \u00e9 poss\u00edvel.<\/li>\n<\/ul>\n<p>\nCom bancos de dados que utilizam estruturas de dados imut\u00e1veis (snapshots de mem\u00f3ria, \u00e1rvores LSM), a situa\u00e7\u00e3o \u00e9 mais simples. A prepara\u00e7\u00e3o para o backup consiste nas seguintes etapas:<\/p>\n<ol>\n<li>Os dados da mem\u00f3ria s\u00e3o descarregados no disco.<\/li>\n<li>Uma lista de arquivos que entram no backup \u00e9 registrada. At\u00e9 que o processo de backup seja conclu\u00eddo, \u00e9 proibido ao banco de dados excluir estes arquivos, mesmo que eles se tornem desnecess\u00e1rios.<\/li>\n<\/ol>\n<p>\nAp\u00f3s o sinal de conclus\u00e3o do backup, o banco de dados com estruturas imut\u00e1veis pode novamente excluir arquivos indesejados.<\/p>\n<h3>Recupera\u00e7\u00e3o para um ponto<\/h3>\n<p>\nO backup permite restaurar o estado do banco de dados no momento em que a a\u00e7\u00e3o de retorno do modo de backup foi conclu\u00edda. No entanto, uma falha que exige recupera\u00e7\u00e3o pode ocorrer a qualquer momento. A tarefa de restaurar o estado do banco de dados em um momento arbitr\u00e1rio \u00e9 chamada de 'recupera\u00e7\u00e3o para um ponto' (point-in-time recovery).<\/p>\n<p>Para garantir essa possibilidade, \u00e9 necess\u00e1rio manter os logs do banco de dados desde o t\u00e9rmino do backup, e durante a recupera\u00e7\u00e3o, continuar aplicando os logs \u00e0 c\u00f3pia restaurada. Depois que o banco de dados \u00e9 recuperado a partir do backup no momento em que o backup foi conclu\u00eddo, o estado do banco (arquivos e p\u00e1ginas armazenadas em cache) est\u00e1 garantidamente correto, portanto, um modo especial de logging n\u00e3o \u00e9 necess\u00e1rio. Aplicando os logs at\u00e9 o momento desejado, \u00e9 poss\u00edvel obter o estado do banco de dados em qualquer ponto no tempo.<\/p>\n<p>Se a velocidade de recupera\u00e7\u00e3o do backup \u00e9 limitada apenas pela capacidade do disco, a velocidade de aplica\u00e7\u00e3o dos logs \u00e9 geralmente limitada pelo desempenho do processador. Se altera\u00e7\u00f5es est\u00e3o ocorrendo paralelamente no banco de dados principal, todas as altera\u00e7\u00f5es durante a recupera\u00e7\u00e3o s\u00e3o executadas sequencialmente \u2013 na ordem de leitura dos logs. Assim, o tempo de recupera\u00e7\u00e3o depende linearmente da dist\u00e2ncia entre o ponto de recupera\u00e7\u00e3o e o ponto de conclus\u00e3o do backup. Por causa disso, \u00e9 necess\u00e1rio fazer backups completos com bastante frequ\u00eancia \u2013 no m\u00ednimo uma vez por semana para bancos com baixa carga transacional e at\u00e9 backups di\u00e1rios para bancos de dados com alta carga.<\/p>\n<h3>Backup incremental<\/h3>\n<p>\nPara acelerar a recupera\u00e7\u00e3o para um ponto, \u00e9 desej\u00e1vel poder realizar backups com a maior frequ\u00eancia poss\u00edvel, mas sem ocupar espa\u00e7o extra nos discos e sem sobrecarregar o banco de dados com tarefas de backup.<\/p>\n<p>A solu\u00e7\u00e3o para essa tarefa \u00e9 o backup incremental, ou seja, copiar apenas aquelas p\u00e1ginas de dados que mudaram desde o \u00faltimo backup realizado.<br \/>\nO backup incremental faz sentido apenas para bancos de dados que utilizam estruturas de dados mut\u00e1veis.<\/p>\n<p>O incremento pode ser contado a partir de um backup completo (c\u00f3pia cumulativa) ou a partir de qualquer c\u00f3pia anterior (c\u00f3pia diferencial). <\/p>\n<p><img decoding=\"async\" alt=\"Guia de backup de banco de dados\" src=\"\/wp-content\/uploads\/2020\/08\/10e3bb87445cb36693c7b5469d62eeaf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInfelizmente, n\u00e3o existe uma terminologia unificada, e diferentes fabricantes usam termos diferentes:<\/p>\n<p>Diferencial<br \/>\nCumulativa<\/p>\n<p>Oracle<br \/>\nDiferencial<br \/>\nCumulativa<\/p>\n<p>PostgresPro<br \/>\nIncremental<br \/>\n\u2014<\/p>\n<p>Microsoft SQL Server<br \/>\n\u2014<br \/>\nDiferencial<\/p>\n<p>IBM DB2<br \/>\nDelta<br \/>\nIncremental<\/p>\n<p>\nCom c\u00f3pias incrementais dispon\u00edveis, o processo de recupera\u00e7\u00e3o para um ponto espec\u00edfico \u00e9 o seguinte:<\/p>\n<ul>\n<li>A \u00faltima c\u00f3pia completa feita antes do momento de recupera\u00e7\u00e3o \u00e9 restaurada;<\/li>\n<li>As c\u00f3pias incrementais s\u00e3o restauradas sobre a c\u00f3pia completa;<\/li>\n<li>Os logs s\u00e3o aplicados desde o in\u00edcio do backup at\u00e9 o ponto de recupera\u00e7\u00e3o.<\/li>\n<\/ul>\n<p>\nTer uma c\u00f3pia cumulativa acelera o processo de recupera\u00e7\u00e3o. Por exemplo, para restaurar o estado do banco de dados em um ponto entre T3 e T4, \u00e9 necess\u00e1rio restaurar duas c\u00f3pias incrementais, enquanto para restaurar em um ponto ap\u00f3s T4, apenas uma c\u00f3pia \u00e9 necess\u00e1ria.<br \/>\n\u00c9 evidente que o volume de uma c\u00f3pia cumulativa \u00e9 menor do que o de v\u00e1rias c\u00f3pias diferenciais, pois algumas p\u00e1ginas mudaram v\u00e1rias vezes, e cada c\u00f3pia incremental cont\u00e9m sua vers\u00e3o da p\u00e1gina.<\/p>\n<p>Existem tr\u00eas maneiras de criar uma c\u00f3pia incremental:<\/p>\n<ol>\n<li>Criar uma c\u00f3pia completa e calcular a diferen\u00e7a em rela\u00e7\u00e3o \u00e0 c\u00f3pia completa anterior;<\/li>\n<li>Analisar os logs, criar uma lista de p\u00e1ginas alteradas e fazer backup das p\u00e1ginas inclu\u00eddas na lista;<\/li>\n<li>Solicitar as p\u00e1ginas alteradas no banco de dados.<\/li>\n<\/ol>\n<p>\nO primeiro m\u00e9todo economiza espa\u00e7o em disco, mas n\u00e3o resolve o problema de reduzir a carga no banco de dados. Al\u00e9m disso, se tivermos um backup completo, transform\u00e1-lo em incremental n\u00e3o faz sentido, pois a recupera\u00e7\u00e3o de uma c\u00f3pia completa \u00e9 mais r\u00e1pida do que a recupera\u00e7\u00e3o de uma c\u00f3pia completa anterior e de um incremento. A tarefa de economizar espa\u00e7o em disco, com essa abordagem, deve ser delegada a componentes especiais com mecanismos de deduplica\u00e7\u00e3o integrados. Esses podem ser tanto sistemas de armazenamento especializados (EMC DataDomain, HPE StorageWorks VLS, toda a linha NetApp), quanto produtos de software (ZFS, Veritas NetBackup PureFile, Windows Server Data Deduplication).<\/p>\n<p>O segundo e o terceiro m\u00e9todos diferem no mecanismo para identificar a lista de p\u00e1ginas alteradas. A an\u00e1lise dos logs \u00e9 mais demandante em termos de recursos, al\u00e9m de que, para sua implementa\u00e7\u00e3o, \u00e9 necess\u00e1rio conhecer a estrutura dos arquivos de log. Perguntar diretamente ao banco de dados quais p\u00e1ginas foram alteradas \u00e9 a op\u00e7\u00e3o mais simples, mas para isso o n\u00facleo do SGBD deve ter a funcionalidade de rastreamento de blocos alterados (block change tracking).<\/p>\n<p>A funcionalidade de backup incremental foi introduzida pela primeira vez no software Oracle Recovery Manager (RMAN), que surgiu na vers\u00e3o Oracle 8i. A Oracle implementou imediatamente o rastreamento de blocos alterados, portanto, n\u00e3o h\u00e1 necessidade de analisar logs.<\/p>\n<p>O PostgreSQL n\u00e3o rastreia blocos alterados, portanto, a ferramenta pg_probackup, desenvolvida pela empresa russa Postgres Professional, identifica p\u00e1ginas alteradas por meio da an\u00e1lise de logs. No entanto, a empresa tamb\u00e9m fornece o SGBD PostgresPro, que inclui a extens\u00e3o ptrack, que rastreia a altera\u00e7\u00e3o de p\u00e1ginas. Ao usar o pg_probackup com o SGBD PostgresPro, a ferramenta solicita as p\u00e1ginas alteradas diretamente ao banco \u2013 assim como o RMAN.<\/p>\n<p>O Microsoft SQL Server, assim como a Oracle, rastreia p\u00e1ginas alteradas, mas a comando BACKUP permite realizar apenas backups completos e cumulativos.<\/p>\n<p>No DB2, existe a possibilidade de rastrear p\u00e1ginas alteradas, mas essa fun\u00e7\u00e3o est\u00e1 desativada por padr\u00e3o. Ap\u00f3s ser ativada, o DB2 permitir\u00e1 a realiza\u00e7\u00e3o de backups completos, diferenciais e cumulativos.<\/p>\n<p>Uma diferen\u00e7a importante entre as ferramentas descritas nesta se\u00e7\u00e3o (exceto pg_probackup) e as ferramentas de backup de arquivos \u00e9 que elas solicitam imagens das p\u00e1ginas ao banco de dados, em vez de ler os dados do disco de forma independente. A desvantagem dessa abordagem \u00e9 uma pequena carga adicional no banco. No entanto, essa desvantagem \u00e9 amplamente compensada pelo fato de que a p\u00e1gina lida sempre \u00e9 correta, eliminando a necessidade de habilitar um modo especial de registro durante o backup.<\/p>\n<p>Mais uma vez, observe que a presen\u00e7a de backups incrementais n\u00e3o anula os requisitos de manter logs para a recupera\u00e7\u00e3o em qualquer ponto do tempo. Portanto, em bancos de dados industriais, os logs s\u00e3o constantemente gravados em um dispositivo externo, enquanto os backups, sejam completos e\/ou incrementais, s\u00e3o feitos em cronograma.<\/p>\n<p>A melhor implementa\u00e7\u00e3o at\u00e9 hoje da ideia de backup incremental \u00e9 o sistema de recupera\u00e7\u00e3o Zero Data Loss Recovery Appliance \u2013 uma solu\u00e7\u00e3o especializada da Oracle para backup de seu pr\u00f3prio banco de dados. O sistema consiste em um cluster <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/\"   title=\"servidores\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1521\">servidores<\/a> com grande capacidade de armazenamento, no qual est\u00e1 instalada uma vers\u00e3o modificada do software Recovery Manager, podendo funcionar tanto com outros sistemas de hardware e software da Oracle (Database Appliance, Exadata, SPARC Supercluster), quanto com bancos de dados Oracle em infraestrutura tradicional. Ao contr\u00e1rio do \"normal\" RMAN, o ZDLRA implementa o conceito de \"incremento eterno\" (incremental forever). O sistema cria uma c\u00f3pia completa do banco de dados uma \u00fanica vez e, em seguida, faz apenas c\u00f3pias incrementais. M\u00f3dulos adicionais do RMAN permitem combinar c\u00f3pias, gerando novas c\u00f3pias completas a partir das incrementais. <\/p>\n<p>Para o cr\u00e9dito dos desenvolvedores russos, vale notar que o pg_probackup tamb\u00e9m consegue combinar c\u00f3pias incrementais.<\/p>\n<p><img decoding=\"async\" alt=\"Guia de backup de banco de dados\" src=\"\/wp-content\/uploads\/2020\/08\/275b649ce74614c04410618a062dddbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAo contr\u00e1rio de muitas perguntas semelhantes, a pergunta \"qual m\u00e9todo de backup \u00e9 o melhor\" tem uma resposta clara \u2013 a melhor \u00e9 a ferramenta nativa do SGBD utilizado, que oferece a possibilidade de backup incremental.<\/p>\n<p>Para o administrador de banco de dados, perguntas sobre a escolha da estrat\u00e9gia de backup e a integra\u00e7\u00e3o das ferramentas de backup de bancos de dados na infraestrutura corporativa s\u00e3o muito mais importantes. Mas essas quest\u00f5es est\u00e3o al\u00e9m do escopo deste artigo.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516428\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430. \u041d\u043e \u0432\u0435\u0434\u044c \u0443 \u0432\u0430\u0441, \u043a\u0430\u043a \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f. \u0421\u0442\u0430\u043d\u0438\u0441\u043b\u0430\u0432 \u041b\u0435\u043c, \u00ab\u0417\u0432\u0451\u0437\u0434\u043d\u044b\u0435 \u0434\u043d\u0435\u0432\u043d\u0438\u043a\u0438 \u0418\u0439\u043e\u043d\u0430 \u0422\u0438\u0445\u043e\u0433\u043e\u00bb \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043f\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0434\u0435-\u0442\u043e \u0432\u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0438\u0445 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2013 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u043f\u043e\u0442\u0435\u0440\u0438. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92368,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92367","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u043c\u0443 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-26T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-26T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Guia de Backup de Bancos de Dados | ProHoster","description":"\u2013 Oh, nenhum abrigo resistir\u00e1 a um impacto de meteoro.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u043c\u0443 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:description":"\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-26T05:42:09+00:00","article:modified_time":"2020-08-26T05:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92367","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:09:36","updated":"2026-02-09 16:50:36","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/92367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=92367"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/92367\/revisions"}],"predecessor-version":[{"id":158765,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/92367\/revisions\/158765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/92368"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=92367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=92367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=92367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}