[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"blog-pt-supabase-branching-is-not-a-backup":3},{"id":4,"title":5,"body":6,"category":297,"cover":298,"coverAlt":299,"description":300,"draft":301,"extension":302,"faq":303,"image":318,"keywords":319,"meta":326,"navigation":327,"ogTitle":328,"path":329,"published":330,"seo":331,"stem":332,"tldr":333,"updated":330,"__hash__":337},"blog_pt\u002Fblog\u002Fsupabase-branching-is-not-a-backup.md","Branching do Supabase não é backup. Ele só anda para a frente.",{"type":7,"value":8,"toc":285},"minimark",[9,13,16,24,29,32,35,38,122,131,135,138,141,144,148,151,154,160,163,167,170,173,199,203,206,209,214,223,227,230,233,240,243,246,249,253,273],[10,11,12],"p",{},"Você ligou o branching do Supabase porque parecia o jeito caprichado de\ntrabalhar. Agora existe um branch de preview ao lado do seu projeto, as mudanças\nsão testadas ali antes de alguém ver, e a coisa toda parece bem mais segura do\nque no mês passado.",[10,14,15],{},"E é mais segura mesmo. Só que não é backup, e a diferença aparece em exatamente\num dia.",[10,17,18,19,23],{},"Aqui está a parte que os guias de branching pulam: ",[20,21,22],"strong",{},"um branch é um segundo banco\nde dados ao lado do primeiro, e não uma versão anterior dele."," O branching é o\nlugar aonde você vai antes de fazer uma mudança. Um backup é o lugar aonde você\nvai depois que alguma coisa já deu errado. Ligar o branching não deixa uma cópia\ndos seus dados em lugar nenhum.",[25,26,28],"h2",{"id":27},"o-branching-do-supabase-é-um-backup","O branching do Supabase é um backup?",[10,30,31],{},"Não. Um branch começa como um banco vazio vestido com o seu esquema, e nada no\nbranching devolve uma versão anterior dos seus dados.",[10,33,34],{},"A própria documentação do Supabase é direta: \"Branches novos não começam com\nnenhum dado do seu projeto principal. Isso serve para proteger melhor os seus\ndados sensíveis de produção\". Um branch é construído a partir das suas migrações,\ne uma migração descreve o formato de um banco de dados. As tabelas, as colunas,\nas policies. Nunca as linhas.",[10,36,37],{},"Então o branch que está ao lado do seu projeto não é a cópia de terça. É um banco\nnovo que nunca viu os seus usuários.",[39,40,41,56],"table",{},[42,43,44],"thead",{},[45,46,47,50,53],"tr",{},[48,49],"th",{},[48,51,52],{},"Um branch do Supabase",[48,54,55],{},"Um backup",[57,58,59,71,89,100,111],"tbody",{},[45,60,61,65,68],{},[62,63,64],"td",{},"Guarda suas linhas de um momento anterior",[62,66,67],{},"Só se você clonou elas para dentro",[62,69,70],{},"Sim, esse é o trabalho inteiro",[45,72,73,76,83],{},[62,74,75],{},"Consegue devolver a produção ao que era",[62,77,78],{},[79,80,82],"key-verdict",{"type":81},"danger","Nunca",[62,84,85],{},[79,86,88],{"type":87},"safe","Sim",[45,90,91,94,97],{},[62,92,93],{},"Fica fora da sua conta do Supabase",[62,95,96],{},"Não, é outro projeto dentro dela",[62,98,99],{},"Depende de qual dos três caminhos você pegou",[45,101,102,105,108],{},[62,103,104],{},"Ainda vai estar lá no mês que vem",[62,106,107],{},"Só se você deixou ele persistente",[62,109,110],{},"Enquanto você guardar",[45,112,113,116,119],{},[62,114,115],{},"Para que serve",[62,117,118],{},"Testar uma mudança antes que ela alcance alguém",[62,120,121],{},"Voltar para antes de algo alcançar alguém",[10,123,124,125,130],{},"Se você nunca estabeleceu o que realmente está copiando o seu banco, essa é\njustamente a tarefa para a qual este artigo quer te mandar, e\n",[126,127,129],"a",{"href":128},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","o seu plano resolve quase tudo em dois minutos",".",[25,132,134],{"id":133},"o-que-um-branch-é-de-verdade","O que um branch é de verdade",[10,136,137],{},"Um segundo projeto Supabase inteiro, com tudo dele próprio.",[10,139,140],{},"\"Cada branch é um ambiente separado com a própria instância do Supabase e as\npróprias credenciais de API\", é assim que a documentação coloca. String de\nconexão própria, chaves próprias, Storage próprio, contas de login próprias,\nlinhas próprias. Nada lá dentro está ligado ao projeto em que os seus usuários\nestão, e é exatamente isso que torna seguro quebrar coisas ali.",[10,142,143],{},"Esse isolamento é a funcionalidade inteira, e é também por isso que ele não\nconsegue servir de backup. A cópia dos seus dados que você esperava nunca foi\ntirada, e o lugar onde você iria procurar por ela está vazio desde o dia em que\nfoi criado.",[25,145,147],{"id":146},"o-que-um-merge-faz-e-o-que-ele-não-faz","O que um merge faz, e o que ele não faz",[10,149,150],{},"Ele leva as suas mudanças de esquema para a produção. Ele nunca leva linhas, em\nnenhuma direção, em nenhum momento.",[10,152,153],{},"Quando você faz merge, o Supabase aplica as migrações do seu branch no seu banco\nde produção e publica as suas mudanças de Edge Functions. Essa é a carga inteira.\nUma tabela nova, uma coluna nova, uma policy reescrita: essas viajam. As linhas\nque você criou testando ficam no branch, e as linhas da produção ficam\nexatamente como estavam, inclusive aquelas que você esperava substituir.",[155,156],"diagram",{"alt":157,"caption":158,"src":159},"Três faixas entram por um portão a caminho de um banco de dados de produção. Uma grade de células de tabela passa e leva um visto. Um bloco de código passa e leva um visto. Uma pilha de linhas de dados para no portão e leva uma cruz.","Um merge publica o formato do seu banco e o código em volta dele. As linhas são a única coisa que ele nunca foi feito para mover.","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fwhat-a-merge-carries-1600x640.png",[10,161,162],{},"As pessoas esperam uma versão disso que não existe: um merge que entra na\nprodução e coloca as coisas de volta como estavam. O que o branching tem no lugar\né um deploy, aplicado para a frente, em cima do que estiver na produção naquele\nmomento.",[25,164,166],{"id":165},"mas-eu-cloneei-meus-dados-de-produção-para-o-branch","Mas eu cloneei meus dados de produção para o branch",[10,168,169],{},"Então você tem uma cópia das suas linhas, e três coisas sobre essa cópia decidem\nquanto ela vale no dia em que você precisar dela.",[10,171,172],{},"Dá para fazer isso e não é nada obscuro. A CLI do Supabase descreve a opção como\nclonar os dados de produção para o banco do branch, e a API de management aceita\na mesma opção quando cria um branch. Se você usou, o seu branch guarda os seus\ndados mesmo.",[174,175,176,183,193],"ul",{},[177,178,179,182],"li",{},[20,180,181],{},"Ela foi tirada uma vez."," O clone acontece na criação do branch e nada\ncompleta ele depois. Cada pedido, cada cadastro e cada comentário desde então\nvive na produção e em nenhum outro lugar, e é toda essa a diferença entre uma\ncópia e um calendário.",[177,184,185,188,189,130],{},[20,186,187],{},"Ela está dentro da mesma conta."," Um branch é outro projeto sob a mesma\norganização, no mesmo cartão, atrás do mesmo login. Todo jeito de perder a sua\nconta do Supabase leva o branch junto, e\n",[126,190,192],{"href":191},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","esse é um desastre diferente de estragar os próprios dados",[177,194,195,198],{},[20,196,197],{},"Ninguém leu ela de volta."," Um clone que parou no meio é idêntico por fora a\num que terminou, até o momento em que você abre.",[25,200,202],{"id":201},"o-branch-é-a-parte-feita-para-desaparecer","O branch é a parte feita para desaparecer",[10,204,205],{},"Um branch de preview é apagado quando o pull request dele é mergeado ou fechado.\nEsse é o comportamento documentado do recurso.",[10,207,208],{},"O Supabase chama os branches de preview de \"efêmeros e mais adequados a testes\nfocados\" e diz que eles \"são apagados automaticamente quando um PR é mergeado ou\nfechado\". O outro tipo, os branches persistentes, são \"de vida longa e\nrecomendados para ambientes como staging, QA ou desenvolvimento\", e esses\nsobrevivem ao fechamento do pull request.",[155,210],{"alt":211,"caption":212,"src":213},"Duas linhas do tempo vão da esquerda para a direita e cada uma termina em uma quebra da linha. Na de cima há arquivos salvos em três pontos anteriores, e uma seta volta da quebra até o mais próximo deles, com um visto. Na de baixo uma segunda linha se separa e corre ao lado levando um banco de dados vazio, e uma seta de volta a partir da quebra não alcança nada, com uma cruz.","Um backup fica atrás de você na linha do tempo, num momento que você consegue nomear. Um branch corre ao seu lado, e atrás dele não há nada para alcançar.","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fbehind-you-beside-you-1600x680.png",[10,215,216,217,130],{},"Então, no ajuste padrão, o branch que guarda a sua única cópia clonada é\njustamente o que o seu fluxo de trabalho joga fora no dia em que o trabalho\ntermina. Mantê-lo significa deixá-lo persistente, e um branch persistente é um\nsegundo projeto Supabase ligado. O Supabase oferece branching nos planos pagos e\ncobra por branch e por hora, na\n",[126,218,222],{"href":219,"rel":220},"https:\u002F\u002Fsupabase.com\u002Fpricing",[221],"nofollow","página de preços deles",[25,224,226],{"id":225},"para-que-o-branching-serve-de-verdade","Para que o branching serve de verdade",[10,228,229],{},"Para bastante coisa, e este artigo seria desonesto se não dissesse isso.",[10,231,232],{},"Um branch é o lugar mais barato que existe para descobrir que uma migração apaga\numa coluna, antes que ela apague a coluna em que os seus clientes estão sentados.\nEle deixa você ensaiar uma mudança de policy contra um banco com o mesmo formato\ndo seu, com chaves próprias, de modo que um erro não alcança ninguém. Ele dá a\numa IA um lugar para estar errada que não é o seu app em produção. Um backup não\nfaz nada disso.",[10,234,235,236,130],{},"O buraco está em que tipo de acidente ele cobre. O branching protege as mudanças\nque passam por um pull request. A maior parte do que de fato custa os dados das\npessoas nunca chega perto de um: um delete no editor de tabelas do Supabase que\npegou mais linhas do que a intenção, um script de seed apontado para o projeto de\nprodução, uma migração que uma IA escreveu e você aprovou à uma da manhã, uma\nfaxina no que parecia dado de teste. Nenhum desses passa por um branch a caminho\nda produção, que é o mesmo motivo pelo qual\n",[126,237,239],{"href":238},"\u002Fblog\u002Fversion-history-is-not-a-backup","voltar o código não traz de volta uma tabela apagada",[10,241,242],{},"Esse segundo tipo de acidente é o que um backup responde. Ele fica atrás de você\nno tempo, guardando o estado do seu banco num momento que você consegue nomear,\npara que um erro cometido fora do seu fluxo de trabalho ainda tenha para onde\nvoltar.",[10,244,245],{},"É isso também que o Reeve Care é: cópias programadas do seu banco de dados\nSupabase, guardadas fora da sua conta do Supabase, lidas de volta e conferidas\nantes de qualquer uma contar como feita. Conecte seus buckets de Storage e os\narquivos que os seus usuários subiram vão junto, então uma restauração devolve as\nlinhas e as imagens para as quais essas linhas apontam.",[10,247,248],{},"Deixe o branching ligado de qualquer jeito. Nada acima é argumento para\ndesligá-lo.",[25,250,252],{"id":251},"o-que-fazer-esta-semana","O que fazer esta semana",[254,255,256],"key-takeaways",{},[174,257,258,261,264,267,270],{},[177,259,260],{},"Descubra o que está copiando o seu banco de dados num calendário, separado de qualquer coisa que faça branch dele. Se estabelecer isso levar mais de um minuto, a resposta é que nada está.",[177,262,263],{},"Se você vinha tratando um branch clonado como a sua rede de segurança, anote a data em que ele foi criado e a data em que o pull request dele fecha. Esses são os dois extremos do que ele cobre.",[177,265,266],{},"Ligue o backup que o seu plano do Supabase inclui. É a coisa mais barata desta lista e cobre o desastre comum, que é você ter estragado os próprios dados.",[177,268,269],{},"Guarde uma cópia fora da sua conta do Supabase, porque um branch e um backup da plataforma estão os dois atrás do mesmo login que a coisa que eles protegem.",[177,271,272],{},"Restaure uma cópia num projeto descartável, para que a primeira vez que você ler aquele arquivo não seja o dia em que precisa dele.",[10,274,275,276,280,281,130],{},"Antes de fechar esta aba, abra o seu projeto no Supabase e veja se alguma coisa\nestá tirando uma cópia num calendário. Essa única resposta é o trabalho inteiro\nde hoje, e o branching não muda isso em nenhum sentido. A\n",[126,277,279],{"href":278},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre isso junto com o resto\ndo que vale confirmar num app recém-lançado, e o que uma cópia contém e o que o\nbotão de restaurar faz de verdade está detalhado na\n",[126,282,284],{"href":283},"\u002Fsupabase-backups","página de backups do Supabase",{"title":286,"searchDepth":287,"depth":287,"links":288},"",3,[289,291,292,293,294,295,296],{"id":27,"depth":290,"text":28},2,{"id":133,"depth":290,"text":134},{"id":146,"depth":290,"text":147},{"id":165,"depth":290,"text":166},{"id":201,"depth":290,"text":202},{"id":225,"depth":290,"text":226},{"id":251,"depth":290,"text":252},"Backups","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcover-1200x630.png","Uma linha de dados que segue em frente, com uma segunda linha que se separa e leva ao lado um banco de dados vazio.","Por que o branching do Supabase não é backup: um branch começa sem os seus dados e um merge só leva o esquema. Para que ele serve e o que usar no lugar.",false,"md",[304,306,309,312,315],{"q":28,"a":305},"Não. Um branch é um banco de dados Supabase separado, construído a partir das suas migrações, e o Supabase documenta que branches novos começam sem nenhum dos dados do seu projeto principal. O branching te dá um lugar para testar uma mudança antes que ela chegue à produção. Um backup te dá uma cópia dos seus dados de um momento que você consegue nomear, para poder voltar até ele. São dois trabalhos diferentes, e ligar o primeiro não faz nada pelo segundo.",{"q":307,"a":308},"Um branch de preview do Supabase tem os meus dados de produção?","Por padrão não. O Supabase diz que branches novos não começam com nenhum dado do projeto principal, e dá como motivo proteger os seus dados de produção. Você pode pedir um clone na hora de criar o branch, e a CLI descreve essa opção como clonar os dados de produção para o banco do branch. Se você não pediu, o seu branch tem as suas tabelas e nenhuma das suas linhas.",{"q":310,"a":311},"Consigo restaurar meu banco de produção a partir de um branch?","No branching não existe restauração. Um merge aplica as migrações do branch no seu banco de produção e publica as suas mudanças de Edge Functions; nada nesse caminho move linhas, e nada nele reverte qualquer coisa. Se você clonou dados de produção para um branch, poderia tirar um dump daquele banco e reproduzir você mesmo, mas a essa altura quem está te protegendo é o dump, não o branch.",{"q":313,"a":314},"O que acontece com o meu branch quando eu faço merge do pull request?","Um branch de preview é apagado. O Supabase descreve branches de preview como efêmeros e diz que eles são apagados automaticamente quando um pull request é mergeado ou fechado. Branches persistentes são o outro tipo, pensados para staging ou QA, e esses não somem quando o pull request fecha. Então, se um branch está guardando a única cópia de algo que importa para você, o ajuste padrão joga fora no dia em que o trabalho termina.",{"q":316,"a":317},"O branching custa mais caro?","Sim. O Supabase oferece branching nos planos pagos e cobra por branch e por hora, em cima da sua assinatura. Leia a tarifa atual na página de preços deles em vez de aqui, porque ela é deles e eles podem mudar. A versão prática: um branch persistente deixado ligado é um segundo projeto Supabase que você paga a cada hora em que ele existe.","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",[320,321,322,323,324,325],"supabase branching backup","branching do supabase e backup","supabase branch preview dados","supabase branching vs backup","supabase branch dados de producao","branching banco de dados supabase",{},true,"Branching do Supabase não é backup","\u002Fblog\u002Fsupabase-branching-is-not-a-backup","2026-08-25",{"title":5,"description":300},"blog\u002Fsupabase-branching-is-not-a-backup",[334,335,336],"Branching do Supabase não é backup. Um branch é um segundo banco de dados para testar mudanças, e ele começa sem nenhum dos seus dados de produção.","Um merge aplica as suas mudanças de esquema na produção. Ele nunca leva linhas, e não existe nenhuma operação que devolva uma versão anterior dos seus dados.","Mesmo um branch em que você clonou seus dados fica dentro da mesma conta, e um branch de preview é apagado quando o pull request dele fecha.","hoQSyT6D-N9a6-xBkLVUzIsfI4myMb-blE_E6VJihIQ",1787826050870]