{"id":3022,"date":"2014-06-16T08:37:14","date_gmt":"2014-06-16T10:37:14","guid":{"rendered":"http:\/\/fabriciolima.net\/blog\/?p=3022"},"modified":"2018-07-18T18:18:44","modified_gmt":"2018-07-18T21:18:44","slug":"cliente-diz-tenho-backups-e-meu-banco-esta-seguro-sera","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2014\/06\/16\/cliente-diz-tenho-backups-e-meu-banco-esta-seguro-sera\/","title":{"rendered":"Cliente diz: &#8220;Tenho Backups e meu banco est\u00e1 seguro&#8221;. Ser\u00e1???"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>O objetivo desse post \u00e9 fazer um alerta a todos voc\u00eas que s\u00e3o respons\u00e1veis por um banco de dados SQL Server, seja voc\u00ea um desenvolvedor, um analista de banco de dados, um coordenador ou gerente de TI.<\/p>\n<p>J\u00e1 atendi muitos clientes na minha <a href=\"https:\/\/www.fabriciolima.net\/blog\/consultoria-remota\/\" target=\"_blank\" rel=\"noopener\">Consultoria SQL Server<\/a> que contrataram um pacote de Tuning comigo, mas n\u00e3o quiseram contratar o pacote de reestrutura\u00e7\u00e3o das rotinas de backups e alertas, pois ele j\u00e1 tinha um backup rodando no banco de dados ou tinha um servidor na nuvem onde existe uma garantia de alta disponibilidade do servidor virtual ou por outros motivos.<\/p>\n<p><span style=\"color: #ff0000;\">Acontece que mesmo com uma excelente rotina de backups voc\u00ea pode perder dados no SQL Server.<\/span> Isso n\u00e3o \u00e9 um problema exclusivo do SQL Server, dados tamb\u00e9m podem se corromper nos outros SGBDs do mercado (Oracle, DB2 e etc).<\/p>\n<p>Em um exemplo real, um cliente me ligou pedindo ajuda depois que sua base estava corrompida. Ao fazer uma an\u00e1lise do n\u00edvel de corrup\u00e7\u00e3o desse cliente, n\u00e3o seria poss\u00edvel recuperar essa base, pois p\u00e1ginas de estruturas internas da \u00fanica tabela existente na base estavam corrompidas. Nem o comando CHECKDB com\u00a0REPAIR_ALLOW_DATA_LOSS era poss\u00edvel ser executado nessa base dado o n\u00edvel de corrup\u00e7\u00e3o. <em>Solicitei os backups ao cliente e ele disse que tinha apenas um backup feito na semana anterior, mas que j\u00e1 tinha restaurado e o backup tamb\u00e9m j\u00e1 estava com a base corrompida.<\/em><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Nesse caso, o backup era executado com sucesso, mas a base possu\u00eda p\u00e1ginas corrompidas.\u00a0<\/strong><\/span>A \u00fanica solu\u00e7\u00e3o poss\u00edvel foi realizar um SELECT nos dados que ainda estavam sendo retornados e inserir esses dados em uma nova Base\/Tabela.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Resultado: Perda de dados para a empresa.<\/strong><\/span><\/p>\n<p><strong>Imagina se isso acontece com o banco de dados da sua empresa e com a tabela mais importante que existe?<\/strong><\/p>\n<p>Outro caso real e mais grave \u00e9 contado pelo <a href=\"http:\/\/www.sqlskills.com\/blogs\/paul\/\" target=\"_blank\" rel=\"noopener\">Paul Randal<\/a>\u00a0(cara que escreveu o CHECKDB). Um Banco dos EUA teve um problema de corrup\u00e7\u00e3o em um \u00edndice nonclustered. A princ\u00edpio essa \u00e9 uma corrup\u00e7\u00e3o simples de resolver, mas o DBA tomou uma s\u00e9rie de a\u00e7\u00f5es erradas que aumentou ainda mais o problema. Chamaram o Paul Randal e ap\u00f3s an\u00e1lise do ambiente ele pediu os backups para recuperar a base. O Banco tinha um backup FULL de 4 meses atr\u00e1s e backups do Log at\u00e9 o dia do problema, tudo em fita.\u00a0Milagrosamente, todos os backups foram restaurados com sucesso, mas o banco ficou parado por 2 dias para concluir essa opera\u00e7\u00e3o. Os clientes que n\u00e3o conseguiram tirar extratos ou sacar seu dinheiro por dois dias mudaram de banco e logo em seguida o banco quebrou.<\/p>\n<p><strong><span style=\"color: #ff0000;\">Resultado: Empresa falida e com uma contribui\u00e7\u00e3o significativa do DBA. Para verem o poder que esse profissional tem em m\u00e3os e muitas vezes isso n\u00e3o \u00e9 valorizado at\u00e9 que um desastre como esse aconte\u00e7a.<\/span><\/strong><\/p>\n<p>Mas o que pode ser feito para evitar ou amenizar esses problemas de corrup\u00e7\u00e3o?<\/p>\n<ul>\n<li>A primeira dica \u00e9 cuidar muito bem do seu sistema de I\/O (discos, drives, controladoras e etc).<\/li>\n<li>Cuidar do seu fornecimento de energia para evitar quedas inesperadas do seu servidor.<\/li>\n<li>Monitorar a tabela suspect_pages no MSDB.<\/li>\n<li>Monitorar os alertas 823, 824 e 825.<\/li>\n<li>Executar o CHECKDB com a maior frequencia poss\u00edvel, mas em hor\u00e1rios n\u00e3o produtivos pois \u00e9 um procedimento muito pesado. Em caso de encontrar uma corrup\u00e7\u00e3o, um alerta deve ser enviado imediatamente.<\/li>\n<li>Ter um Database Mirroring ou AlwaysOn\u00a0Availability Groups\u00a0configurado. Como essas tecnologias replicam log de transa\u00e7\u00e3o, uma corrup\u00e7\u00e3o de p\u00e1gina n\u00e3o \u00e9 replicada para os servidores secund\u00e1rios. Al\u00e9m disso, em alguns casos, a p\u00e1gina corrompida \u00e9 recuperada automaticamente do servidor secund\u00e1rio para o servidor prim\u00e1rio. \u00a0Isso j\u00e1 seria um grande motivo para convencer seu gerente a investir nessas tecnologias.<\/li>\n<li>Ter uma rotina de backup adequada com backups redundantes e realizar testes de restore com esses backups. N\u00e3o adianta ter backup e o mesmo n\u00e3o funcionar na hora de restaurar por estar corrompido.<\/li>\n<\/ul>\n<p>Evitar 100% uma corrup\u00e7\u00e3o n\u00e3o \u00e9 poss\u00edvel, mas voc\u00ea deve ter meios de identificar essa corrup\u00e7\u00e3o o mais r\u00e1pido poss\u00edvel para poder atuar e diminuir os impactos causados por essa corrup\u00e7\u00e3o.<\/p>\n<p><strong>Corrup\u00e7\u00f5es em banco de dados acontecem com mais frequ\u00eancia do que imaginamos<\/strong>, basta dar uma busca nos f\u00f3runs que encontrar\u00e1 v\u00e1rias threads com algu\u00e9m solicitando ajuda em uma corrup\u00e7\u00e3o. Tamb\u00e9m vejo esses relatos em muitas listas de e-mail e agora at\u00e9 dos clientes que atendo como consultoria.<\/p>\n<p>Para finalizar esse post, <strong>se voc\u00ea \u00e9 respons\u00e1vel pela TI da sua empresa<\/strong>, possui um banco SQL Server e n\u00e3o tem ningu\u00e9m com conhecimento para administr\u00e1-lo, <strong>voc\u00ea tem duas op\u00e7\u00f5es<\/strong>:<\/p>\n<ul>\n<li>Contratar um especialista SQL Server para analisar seu ambiente e criar os procedimentos necess\u00e1rios para alertar rapidamente em caso de corrup\u00e7\u00e3o.<\/li>\n<li>Treinar um de seus colaboradores para que possam realizar essas tarefas de administra\u00e7\u00e3o do ambiente.<\/li>\n<\/ul>\n<p>Espero ter contribu\u00eddo para evitar que esse problema aconte\u00e7a com voc\u00eas. Corrup\u00e7\u00e3o \u00e9 o problema que mais me d\u00e1 medo nos bancos de dados SQL Server que sou respons\u00e1vel.<\/p>\n<p><strong>Para refletir:<\/strong><\/p>\n<p><em>Backups, Alertas e Monitoramento \u00e9 igual seguro de carro, tenho seguro de carro h\u00e1 5 anos e nunca usei, contudo, o dia que meu carro for roubado, minhas perdas ser\u00e3o m\u00ednimas. Eu pago o seguro para ficar mais tranquilo.<\/em><\/p>\n<p><em>O mesmo vale para um banco de dados de uma empresa que vale muito mais que um carro. Seu banco de dados pode estar h\u00e1 5 anos sem nenhum problema, contudo, o dia que acontecer um problema grave e voc\u00ea n\u00e3o estiver preparado, suas perdas podem ser muito maiores do que seria se seu carro fosse roubado.<\/em><\/p>\n<p><em>Vale a pena fazer um \u201cseguro\u201d do banco de dados da sua empresa?<\/em><\/p>\n<p><b>Gostou desse Post?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"noopener\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, O objetivo desse post \u00e9 fazer um alerta a todos voc\u00eas que s\u00e3o respons\u00e1veis por um banco de dados SQL Server, seja voc\u00ea um desenvolvedor, um analista de banco de dados, um coordenador ou gerente de TI. J\u00e1 atendi muitos clientes na minha Consultoria SQL Server que contrataram um pacote de Tuning comigo, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[3,6,942,991,33,280],"tags":[1151,954,1011,942,1114,422,23,1154,1153,1152,1150,33,385],"class_list":["post-3022","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-dba-remoto","category-sql-server","category-virtual-pass-br","tag-alertas-banco-de-dados","tag-backup","tag-checkdb","tag-consultoria-sql-server","tag-corrupcao","tag-corruption","tag-dba","tag-especialista-banco-de-dados","tag-problema-sql-server","tag-repair_allow_data_loss","tag-restore","tag-sql-server","tag-suspect_pages"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=3022"}],"version-history":[{"count":2,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3022\/revisions"}],"predecessor-version":[{"id":9227,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3022\/revisions\/9227"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=3022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=3022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=3022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}