{"id":78887,"date":"2020-04-22T19:42:51","date_gmt":"2020-04-22T17:42:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov"},"modified":"2020-04-22T19:42:51","modified_gmt":"2020-04-22T17:42:51","slug":"wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","title":{"rendered":"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Apresento a transcri\u00e7\u00e3o da palestra de in\u00edcio de 2020 de Georgiy Rylov \"WAL-G: novas oportunidades e expans\u00e3o da comunidade\".<\/strong><\/p>\n<p><\/p>\n<p>Os mantenedores de software open-source enfrentam uma s\u00e9rie de desafios \u00e0 medida que crescem. Como implementar cada vez mais funcionalidades exigidas, resolver um n\u00famero crescente de issues e gerenciar um volume maior de pull requests? Usando o exemplo do WAL-G (ferramenta de backup para PostgreSQL), compartilharei como enfrentamos esses problemas ao lan\u00e7ar um curso sobre desenvolvimento open-source na universidade, o que conseguimos alcan\u00e7ar e para onde iremos a seguir.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/c76e27949b782480284ab52791fdfe15.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ol\u00e1 a todos novamente! Sou desenvolvedor na Yandex, de Ekaterinburgo. E hoje eu vou falar sobre o WAL-G.<\/p>\n<p><\/p>\n<p>No t\u00edtulo da apresenta\u00e7\u00e3o n\u00e3o foi mencionado que se tratava de backups. Algu\u00e9m n\u00e3o sabe o que \u00e9 o WAL-G? Ou todos sabem? Levante a m\u00e3o quem n\u00e3o sabe. Incr\u00edvel, voc\u00ea veio para a apresenta\u00e7\u00e3o e n\u00e3o sabe sobre o que \u00e9.<\/p>\n<p><\/p>\n<p>Vamos l\u00e1, eu vou explicar o que teremos hoje. Acontece que nossa equipe tem lidado com backups h\u00e1 bastante tempo. E esta \u00e9 mais uma apresenta\u00e7\u00e3o em uma s\u00e9rie em que falamos sobre como armazenamos dados de forma segura, confi\u00e1vel, conveniente e eficiente.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/4307e7b2acc60cd908d91e3f1b83a9b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nas edi\u00e7\u00f5es anteriores, houve muitas apresenta\u00e7\u00f5es de Andrey Borodin, Vladimir Leskov. \u00c9ramos muitos. E todos n\u00f3s falamos sobre o WAL-G j\u00e1 h\u00e1 muitos anos. <\/p>\n<p><\/p>\n<p>clck.ru\/F8ioz \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2018\/abstracts\/3964\">https:\/\/www.highload.ru\/moscow\/2018\/abstracts\/3964<\/a><\/noindex><\/p>\n<p><\/p>\n<p>clck.ru\/Ln8Qw \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/abstracts\/5981\">https:\/\/www.highload.ru\/moscow\/2019\/abstracts\/5981<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Esta apresenta\u00e7\u00e3o ser\u00e1 um pouco diferente das outras, pois as anteriores trataram mais da parte t\u00e9cnica, enquanto aqui eu vou falar sobre como enfrentamos problemas relacionados ao crescimento da comunidade. E como tivemos a ideia que nos ajuda a lidar com isso. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/ec728f7d99ea9b6a5df4785d7e8a2a75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alguns anos atr\u00e1s, o WAL-G era um projeto relativamente pequeno que herdamos da Citus Data. E n\u00f3s apenas o pegamos. E estava sendo desenvolvido por uma \u00fanica pessoa.<\/p>\n<p><\/p>\n<p>E s\u00f3 o que n\u00e3o tinha no WAL-G:<\/p>\n<p><\/p>\n<ul>\n<li>Backup a partir da r\u00e9plica.<\/li>\n<li>N\u00e3o havia backups incrementais.<\/li>\n<li>N\u00e3o havia backups WAL-Delta. <\/li>\n<li>E ainda muitas outras coisas estavam faltando.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Ao longo desses anos, o WAL-G cresceu consideravelmente.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/16700dfcc2c54539c5a064894cd1ec88.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E at\u00e9 2020, tudo que foi mencionado j\u00e1 estava presente. E ainda adicionamos o que temos agora:<\/p>\n<p><\/p>\n<ul>\n<li>Mais de 1.000 estrelas no GitHub.<\/li>\n<li>150 forks.<\/li>\n<li>Cerca de 15 PRs abertos.<\/li>\n<li>E muitos contribuidores. <\/li>\n<li>E issues abertas constantemente. E isso considerando que acessamos l\u00e1 literalmente todos os dias, tratando de algo. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/5e5dea14b328a7f0437017ca834d1eaf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E chegamos \u00e0 conclus\u00e3o de que este projeto exige mais da nossa aten\u00e7\u00e3o, mesmo quando n\u00e3o precisamos implementar nada para o nosso servi\u00e7o de Managed Databases na Yandex.<\/p>\n<p><\/p>\n<p>E em algum momento no outono de 2018, tivemos uma ideia. Normalmente, a equipe tem algumas maneiras de implementar fun\u00e7\u00f5es ou corrigir bugs se n\u00e3o houver m\u00e3os suficientes. Por exemplo, pode-se contratar mais um desenvolvedor e pagar por isso. Ou pode-se trazer um estagi\u00e1rio por um tempo e tamb\u00e9m pagar a ele um sal\u00e1rio. Mas h\u00e1 um grupo consider\u00e1vel de pessoas, parte das quais j\u00e1 sabe realmente escrever c\u00f3digo. Voc\u00ea apenas nem sempre sabe qual \u00e9 a qualidade desse c\u00f3digo.<\/p>\n<p><\/p>\n<p>N\u00f3s pensamos e decidimos tentar envolver estudantes. Mas os estudantes n\u00e3o participar\u00e3o de tudo. Eles far\u00e3o apenas uma parte do trabalho. E, por exemplo, eles escrever\u00e3o testes, corrigir\u00e3o bugs, implementar\u00e3o fun\u00e7\u00f5es que n\u00e3o afetam a funcionalidade principal. A funcionalidade principal \u00e9 a cria\u00e7\u00e3o de backups e a recupera\u00e7\u00e3o de backups. Se ocorrer um bug na cria\u00e7\u00e3o de um backup, teremos perda de dados. E ningu\u00e9m quer isso, claro. Todos querem que tudo seja muito confi\u00e1vel. Portanto, o c\u00f3digo em que confiamos menos do que no nosso pr\u00f3prio n\u00e3o queremos liberar. Ou seja, qualquer c\u00f3digo n\u00e3o cr\u00edtico \u00e9 o que gostar\u00edamos de receber de nossas m\u00e3os de trabalho adicionais.<\/p>\n<p><\/p>\n<p><strong>Sob quais condi\u00e7\u00f5es um PR de estudante \u00e9 aceito<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Eles s\u00e3o obrigados a cobrir seu c\u00f3digo com testes. Tudo deve passar no CI. <\/li>\n<li>E tamb\u00e9m passamos por 2 revis\u00f5es. Uma do Andrei Borodin e uma minha. <\/li>\n<li>E adicionalmente, para verificar se isso n\u00e3o quebrar\u00e1 nada no nosso servi\u00e7o, fa\u00e7o uma constru\u00e7\u00e3o separada com este commit. E verificamos em testes end-to-end se nada est\u00e1 quebrando.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Curso especial sobre Open Source<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/58832406f3acdf294cd68e6adde14ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Um pouco sobre por que isso \u00e9 necess\u00e1rio e por que, na minha opini\u00e3o, \u00e9 uma ideia legal. <\/p>\n<p><\/p>\n<p><strong>Para n\u00f3s, o benef\u00edcio \u00e9 \u00f3bvio:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>Recebemos m\u00e3os adicionais. <\/li>\n<li>E buscamos candidatos para a equipe entre estudantes competentes que escrevem um bom c\u00f3digo. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Qual \u00e9 o benef\u00edcio para os estudantes?<\/strong><\/p>\n<p><\/p>\n<p>Eles podem ser menos \u00f3bvios, porque os estudantes, no m\u00ednimo, n\u00e3o recebem dinheiro pelo c\u00f3digo que escrevem, mas apenas notas para seus registros. <\/p>\n<p><\/p>\n<p>Eu perguntei a eles sobre isso. E pelas palavras deles:<\/p>\n<p><\/p>\n<ul>\n<li>Experi\u00eancia como colaborador em Open Source.<\/li>\n<li>Conseguir uma linha no curr\u00edculo.<\/li>\n<li>Mostrar seu potencial e passar por uma entrevista na Yandex.<\/li>\n<li>Participar do GSoC.<\/li>\n<li>+1 curso especial para aqueles que querem escrever c\u00f3digo.<\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00e3o vou falar sobre como o curso foi organizado. Vou apenas dizer que o WAL-G foi o projeto principal. Al\u00e9m disso, inclu\u00edmos neste curso projetos como Odyssey, PostgreSQL e ClickHouse.<\/p>\n<p><\/p>\n<p>E n\u00e3o apenas oferec\u00edamos tarefas neste curso, mas tamb\u00e9m diplomas e trabalhos de conclus\u00e3o de curso.<\/p>\n<p><\/p>\n<p><strong>E o lucro para os usu\u00e1rios?<\/strong><\/p>\n<p><\/p>\n<p>Agora vamos para a parte que provavelmente mais interessa a voc\u00ea. Qual \u00e9 o benef\u00edcio disso? O benef\u00edcio \u00e9 que os estudantes corrigiram muitos bugs. E fizeram solicita\u00e7\u00f5es de recursos que voc\u00eas pediram que fiz\u00e9ssemos. <\/p>\n<p><\/p>\n<p>E deixem-me falar sobre as coisas que voc\u00eas h\u00e1 muito tempo desejavam e que foram implementadas.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/bb836742bf4f99e1b91c891ed1802bf0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Suporte a tablespaces. O suporte a tablespaces no WAL-G era esperado, provavelmente, desde o momento do lan\u00e7amento do WAL-G, porque o WAL-G \u00e9 o sucessor de outra ferramenta de backup, o WAL-E, onde foram suportados backups de bancos de dados com tablespaces.<\/p>\n<p><\/p>\n<p>Deixe-me relembrar rapidamente o que \u00e9 isso e por que tudo isso \u00e9 necess\u00e1rio. Normalmente, todos os seus dados Postgres ocupam um \u00fanico diret\u00f3rio no sistema de arquivos, que \u00e9 chamado de diret\u00f3rio base. E este diret\u00f3rio j\u00e1 cont\u00e9m todos os arquivos e subdiret\u00f3rios necess\u00e1rios para o Postgres.<\/p>\n<p><\/p>\n<p>Tablespaces s\u00e3o diret\u00f3rios onde os dados do Postgres est\u00e3o armazenados, mas eles n\u00e3o est\u00e3o fora do diret\u00f3rio base. No slide, \u00e9 vis\u00edvel que os tablespaces est\u00e3o fora do diret\u00f3rio base.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/0f25591cfcaaeaec02903c9b98d8ac65.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Como isso parece para o pr\u00f3prio Postgres? No diret\u00f3rio base, h\u00e1 um subdiret\u00f3rio separado chamado pg_tblspc. E dentro dele, h\u00e1 links simb\u00f3licos para diret\u00f3rios onde os dados do Postgres realmente residem fora do diret\u00f3rio base.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/9e9875696c03e6e42bb98b5a7a9acd75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Quando voc\u00ea usa tudo isso, esses comandos podem parecer assim para voc\u00ea. Ou seja, voc\u00ea cria uma tabela em um tablespace especificado e v\u00ea onde ela est\u00e1 agora. Essas duas \u00faltimas linhas, os dois \u00faltimos comandos chamados. E l\u00e1 \u00e9 vis\u00edvel que h\u00e1 algum caminho. Mas na verdade, esse n\u00e3o \u00e9 o caminho verdadeiro. \u00c9 um caminho com um prefixo do diret\u00f3rio base para o tablespace. E a partir da\u00ed, ele \u00e9 vinculado por um link simb\u00f3lico que leva aos seus dados reais.<\/p>\n<p><\/p>\n<p>N\u00f3s n\u00e3o usamos isso em nossa equipe, mas muitos outros usu\u00e1rios do WAL-E pediram para migrar para o WAL-G, mas isso os impedia. Agora isso \u00e9 suportado.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/95ec319ccefa7e6c8bce193317407229.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Outra funcionalidade que nosso curso especial trouxe foi o catchup. Pessoas que provavelmente trabalharam mais com Oracle do que com Postgres conhecem o catchup.<\/p>\n<p><\/p>\n<p>Um resumo do que \u00e9 isso. Assim pode ser normalmente a topologia de um cluster em nosso servi\u00e7o. Temos um mestre. H\u00e1 uma r\u00e9plica que faz stream do write-ahead log. A r\u00e9plica informa ao mestre em qual LSN ela se encontra atualmente. E, em algum lugar, paralelamente a isso, o log pode ser arquivado. Al\u00e9m da arquiva\u00e7\u00e3o do log, backups tamb\u00e9m s\u00e3o enviados para a nuvem. E delta-backups s\u00e3o enviados.<\/p>\n<p><\/p>\n<p>Qual pode ser o problema? Quando voc\u00ea tem um banco de dados bastante grande, pode acontecer que a r\u00e9plica comece a se atrasar muito em rela\u00e7\u00e3o ao mestre. E ela se atrasa tanto que nunca consegue alcan\u00e7\u00e1-lo. Esse problema geralmente precisa ser resolvido de alguma forma. <\/p>\n<p><\/p>\n<p>E a maneira mais simples \u00e9 remover a r\u00e9plica e reconfigur\u00e1-la, porque ela nunca ir\u00e1 alcan\u00e7\u00e1-lo, e precisamos resolver o problema. Mas isso \u00e9 bastante demorado, porque restaurar um backup completo de um banco de dados de 10 TB \u00e9 muito, muito longo. E queremos fazer isso o mais r\u00e1pido poss\u00edvel se esses problemas surgirem. E \u00e9 exatamente para isso que serve o catchup.<\/p>\n<p><\/p>\n<p>O catchup permite usar delta-backups que s\u00e3o salvos na nuvem dessa forma. Voc\u00ea diz em qual LSN a r\u00e9plica atrasada est\u00e1 agora e o inclui no comando catchup para criar um delta-backup entre esse LSN e o LSN em que seu cluster est\u00e1 atualmente. E depois voc\u00ea restaura esse backup na r\u00e9plica que estava atrasada.<\/p>\n<p><\/p>\n<p><strong>Outros bancos<\/strong><\/p>\n<p><\/p>\n<p>Al\u00e9m disso, os estudantes nos trouxeram muitas funcionalidades de uma vez. Como estamos no Yandex desenvolvendo n\u00e3o apenas Postgres, mas tamb\u00e9m temos MySQL, MongoDB, Redis, ClickHouse, em algum momento precis\u00e1vamos que pud\u00e9ssemos fazer backups com recupera\u00e7\u00e3o ponto a ponto para MySQL, e que houvesse a possibilidade de carreg\u00e1-los na nuvem.<\/p>\n<p><\/p>\n<p>E quer\u00edamos fazer isso de uma maneira semelhante \u00e0 que o WAL-G faz. E decidimos experimentar e ver como tudo isso ficaria.<\/p>\n<p><\/p>\n<p>No in\u00edcio, sem dividir essa l\u00f3gica, escrevemos o c\u00f3digo em um fork. Vimos que t\u00ednhamos um modelo funcional e isso poderia funcionar. Depois pensamos que nossa principal comunidade s\u00e3o os usu\u00e1rios de Postgres, que usam WAL-G. Portanto, precisamos separar essas partes de alguma forma. Ou seja, quando o c\u00f3digo for ajustado para Postgres, n\u00e3o quebramos o MySQL, e quando ajustamos o MySQL, n\u00e3o quebramos o Postgres.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/deef7615eaeb0b8bd790fb253cc42312.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A primeira ideia sobre como dividir isso foi usar a mesma abordagem utilizada nas extens\u00f5es do PostgreSQL. E, na verdade, para fazer backup do MySQL, voc\u00ea precisava instalar alguma biblioteca din\u00e2mica. <\/p>\n<p><\/p>\n<p>Mas aqui j\u00e1 se percebe a assimetria dessa abordagem. Quando voc\u00ea faz backup do Postgres, voc\u00ea instala um backup normal para o Postgres e tudo funciona bem. Para o MySQL, no entanto, parece que voc\u00ea instala um backup para o Postgres e, al\u00e9m disso, precisa instalar uma biblioteca din\u00e2mica para o MySQL. Isso soa estranho. N\u00f3s tamb\u00e9m pensamos assim e decidimos que essa n\u00e3o era a solu\u00e7\u00e3o que precis\u00e1vamos. <\/p>\n<p><\/p>\n<p><strong>Vers\u00f5es diferentes para Postgres, MySQL, MongoDB, Redis<\/strong><\/p>\n<p><\/p>\n<p>Mas isso nos permitiu, como achamos, chegar \u00e0 solu\u00e7\u00e3o correta - destacar vers\u00f5es diferentes para diferentes bancos de dados. Isso permitiu isolar a l\u00f3gica relacionada aos backups de v\u00e1rias bases de dados, que ir\u00e3o acessar uma API comum implementada pelo WAL-G.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6c810d5f065de06fc200bdd028707318.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Esta \u00e9 a parte que escrevemos n\u00f3s mesmos - antes de dar tarefas aos alunos. Ou seja, esta \u00e9 precisamente a parte onde eles poderiam fazer algo errado, ent\u00e3o decidimos que era melhor fazermos algo n\u00f3s mesmos e tudo ficaria \u00f3timo. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Depois disso, apresentamos as tarefas. Elas foram rapidamente tomadas. Os alunos precisavam suportar tr\u00eas bases de dados. <\/p>\n<p><\/p>\n<p>Esse \u00e9 o MySQL, que fazemos backup usando o WAL-G dessa maneira h\u00e1 mais de um ano. <\/p>\n<p><\/p>\n<p>E agora o MongoDB j\u00e1 est\u00e1 se aproximando do ambiente de produ\u00e7\u00e3o, onde est\u00e1 sendo aprimorado. Basicamente, n\u00f3s escrevemos a estrutura para tudo isso. Depois, os alunos escreveram algumas solu\u00e7\u00f5es funcionais. E ent\u00e3o n\u00f3s as refinamos at\u00e9 um estado que podemos aceitar em nossa produ\u00e7\u00e3o.<\/p>\n<p><\/p>\n<p>Essas tarefas n\u00e3o pareciam que os alunos precisavam escrever ferramentas de backup completas para cada um desses bancos. N\u00e3o est\u00e1vamos enfrentando esse problema. Nosso problema era que quer\u00edamos recupera\u00e7\u00e3o de ponto no tempo e quer\u00edamos fazer backup na nuvem. Pedimos aos alunos que escrevessem algum c\u00f3digo que resolveria isso. Os alunos utilizaram ferramentas de backup j\u00e1 existentes, que de alguma forma realizam backups, e depois uniram tudo isso ao WAL-G, que transferia tudo para a nuvem. E tamb\u00e9m adicionaram recupera\u00e7\u00e3o de ponto no tempo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7494aef259c7599e8bf0b70d77e1bb09.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O que mais os alunos trouxeram? Eles trouxeram ao WAL-G suporte para criptografia Libsodium.<\/p>\n<p><\/p>\n<p>Al\u00e9m disso, agora temos pol\u00edticas de reten\u00e7\u00e3o de backups. Agora os backups podem ser marcados como permanentes. E \u00e9 mais conveniente para o seu servi\u00e7o automatizar o processo de armazenamento deles. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6e932ab13dbc3119f7f1da1122443b10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Quais foram os resultados deste experimento?<\/p>\n<p><\/p>\n<p>Inicialmente, mais de 100 pessoas se inscreveram no curso. No come\u00e7o, n\u00e3o mencionei que a universidade em Yekaterinburgo \u00e9 a Universidade Federal dos Urais. Anunciamos tudo l\u00e1. 100 pessoas se inscreveram. Na verdade, muito menos come\u00e7ou a fazer algo, cerca de 30 pessoas. <\/p>\n<p><\/p>\n<p>Ainda menos pessoas completaram o curso, porque era necess\u00e1rio escrever testes para os c\u00f3digos que j\u00e1 existiam. Al\u00e9m disso, consertar algum bug ou implementar algum recurso. E uma parte dos alunos conseguiu concluir o curso.<\/p>\n<p><\/p>\n<p>Atualmente, os alunos consertaram cerca de 14 quest\u00f5es e implementaram 10 recursos de diferentes tamanhos. E, na minha opini\u00e3o, isso \u00e9 uma substitui\u00e7\u00e3o completa de um a dois desenvolvedores. <\/p>\n<p><\/p>\n<p>Al\u00e9m de tudo isso, emitimos diplomas e trabalhos de curso. E 12 receberam diplomas. 6 deles j\u00e1 se defenderam com nota '5'. Os demais ainda n\u00e3o tiveram a defesa, mas acredito que tamb\u00e9m ir\u00e3o se sair bem. <\/p>\n<p><\/p>\n<p>Planos futuros<\/p>\n<p><\/p>\n<p>Quais s\u00e3o nossos planos para o futuro?<\/p>\n<p><\/p>\n<p>Pelo menos os pedidos de recursos que j\u00e1 ouvimos dos usu\u00e1rios e queremos implementar. S\u00e3o eles:<\/p>\n<p><\/p>\n<ul>\n<li>Monitoramento da corre\u00e7\u00e3o do acompanhamento da linha do tempo no arquivo de backups do cluster HA. Com o WAL-G, isso pode ser feito. E, acredito que encontraremos alunos que ir\u00e3o assumir essa tarefa. <\/li>\n<li>J\u00e1 temos uma pessoa respons\u00e1vel pela transfer\u00eancia de backups e do WAL entre os clouds. <\/li>\n<li>E recentemente publicamos a ideia de que podemos acelerar o WAL-G ainda mais, mediante a descompacta\u00e7\u00e3o de backups incrementais sem sobrescrever p\u00e1ginas e a otimiza\u00e7\u00e3o dos arquivos que enviamos. <\/li>\n<\/ul>\n<p><\/p>\n<p>Voc\u00eas podem compartilh\u00e1-los aqui<\/p>\n<p><\/p>\n<p>Qual foi o objetivo desta apresenta\u00e7\u00e3o? O fato de que atualmente, al\u00e9m de n\u00f3s, os 4 que mant\u00eam este projeto, temos m\u00e3os adicionais, que s\u00e3o numerosas. Especialmente se eles forem contatados em particular. E se voc\u00ea est\u00e1 fazendo backup dos seus dados e utilizando o WAL-G ou gostaria de migrar para o WAL-G, suas solicita\u00e7\u00f5es podem ser consideradas facilmente.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7b0dc1633121ea6493610b08f68a14d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Este \u00e9 um QR code e um link. Voc\u00ea pode acess\u00e1-los e escrever todas as suas solicita\u00e7\u00f5es. Por exemplo, um bug que n\u00e3o estamos consertando. Ou um recurso que voc\u00ea realmente deseja, mas que ainda n\u00e3o est\u00e1 dispon\u00edvel em nenhum servi\u00e7o de backup, inclusive o nosso. Certifique-se de mencion\u00e1-lo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/56f1c4eef8522d2d6628ea98b1278846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Perguntas<\/p>\n<p><\/p>\n<p><em>Ol\u00e1! Obrigado pela apresenta\u00e7\u00e3o! Tenho uma pergunta sobre WAL-G, mas n\u00e3o sobre Postgres. O WAL-G faz backup do MySQL e chama o backup extra. Se voc\u00ea pegar instala\u00e7\u00f5es modernas no CentOS e fizer yum install MySQL, o MariaDB ser\u00e1 instalado. A partir da vers\u00e3o 10.3, o backup extra n\u00e3o \u00e9 suportado, apenas o backup do MariaDB. Como voc\u00eas est\u00e3o lidando com isso?<\/em><\/p>\n<p><\/p>\n<p>No momento, n\u00e3o tentamos fazer backup do MariaDB. Tivemos solicita\u00e7\u00f5es de suporte para o FoundationDB, mas, em geral, se houver esse pedido, podemos encontrar pessoas que o fa\u00e7am. N\u00e3o \u00e9 t\u00e3o demorado e n\u00e3o \u00e9 t\u00e3o complicado, como me parece.<\/p>\n<p><\/p>\n<p><em>Boa tarde! Obrigado pela apresenta\u00e7\u00e3o! Tenho uma pergunta sobre potenciais novos recursos. Voc\u00eas est\u00e3o prontos para fazer o WAL-G funcionar com fitas, para que possamos fazer backup em fitas?<\/em><\/p>\n<p><\/p>\n<p>O backup em armazenamento em fita \u00e9 o que est\u00e1 sendo mencionado, certo?<\/p>\n<p><\/p>\n<p><em>Sim.<\/em><\/p>\n<p><\/p>\n<p>H\u00e1 o Andrei Borodin, que pode responder a essa pergunta melhor do que eu. <\/p>\n<p><\/p>\n<p>(Andrei) Sim, obrigado pela pergunta! Tivemos um pedido para transferir o backup para fita a partir do armazenamento em nuvem. E para isso <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">est\u00e1 sendo desenvolvido<\/a><\/noindex> a transfer\u00eancia entre nuvens. Porque a transfer\u00eancia entre nuvens \u00e9 uma vers\u00e3o generalizada da transfer\u00eancia para fita. Al\u00e9m disso, temos uma arquitetura expans\u00edvel na parte de Armazenamentos. A prop\u00f3sito, muitos Armazenamentos foram escritos por estudantes. E se voc\u00ea escrever um Armazenamento para fita, ele ser\u00e1, claro, suportado. Estamos prontos para considerar pull requests. \u00c9 necess\u00e1rio escrever um arquivo, ler um arquivo. Se essas coisas forem feitas em Go, geralmente resulta em 50 linhas de c\u00f3digo. Ent\u00e3o o WAL-G ter\u00e1 suporte para fita. <\/p>\n<p><\/p>\n<p><em>Obrigado pela apresenta\u00e7\u00e3o! \u00c9 um processo de desenvolvimento interessante. O backup \u00e9 uma parte s\u00e9ria da funcionalidade que deve ser bem coberta por testes. Quando voc\u00eas implementaram a funcionalidade para novos bancos, os testes tamb\u00e9m foram escritos por estudantes ou voc\u00eas mesmos escreveram os testes e depois entregaram a implementa\u00e7\u00e3o aos estudantes?<\/em><\/p>\n<p><\/p>\n<p>Os testes tamb\u00e9m foram escritos por estudantes. Mas os estudantes escreveram mais para recursos como novos bancos. Eles escreveram testes de integra\u00e7\u00e3o. E eles escreveram testes unit\u00e1rios. Se os testes de integra\u00e7\u00e3o passam, ou seja, atualmente \u00e9 um cen\u00e1rio que voc\u00eas executam manualmente ou que o cron faz, por exemplo. Ou seja, \u00e9 um cen\u00e1rio bem compreens\u00edvel. <\/p>\n<p><\/p>\n<p><em>Os estudantes n\u00e3o t\u00eam muita experi\u00eancia. Quanto tempo \u00e9 gasto na revis\u00e3o?<\/em><\/p>\n<p><\/p>\n<p>Sim, a revis\u00e3o leva bastante tempo. Ou seja, geralmente, quando v\u00e1rios desenvolvedores chegam e dizem que eu fiz isso, eu fiz aquilo, \u00e9 necess\u00e1rio pensar e reservar meio dia para entender o que eles escreveram. Porque o c\u00f3digo precisa ser lido com aten\u00e7\u00e3o. Eles n\u00e3o passaram por uma entrevista. N\u00e3o os conhecemos muito bem, por isso isso leva um tempo consider\u00e1vel.<\/p>\n<p><\/p>\n<p><em>Obrigado pela apresenta\u00e7\u00e3o! Anteriormente, Andrey Borodin afirmou que archive_command no WAL-G deve ser chamado diretamente. Mas em caso de algum cluster patrono, precisamos de uma l\u00f3gica adicional para determinar qual n\u00f3 deve enviar os logs. Como voc\u00ea resolve esse problema?<\/em><\/p>\n<p><\/p>\n<p>Qual \u00e9 o seu problema aqui? Por exemplo, voc\u00ea tem uma r\u00e9plica s\u00edncrona da qual voc\u00ea est\u00e1 fazendo backups? Ou algo assim?<\/p>\n<p><\/p>\n<p>(Andrey) O fato \u00e9 que realmente o WAL-G prev\u00ea o uso sem a necessidade de scripts shell. Se algo estiver faltando, vamos adicionar a l\u00f3gica que deve estar dentro do WAL-G. Quanto \u00e0 origem da arquiva\u00e7\u00e3o, acreditamos que a arquiva\u00e7\u00e3o deve ser feita a partir do mestre atual no cluster. Arquivar a partir de uma r\u00e9plica \u00e9 uma m\u00e1 ideia. Pode haver v\u00e1rios cen\u00e1rios problem\u00e1ticos, especialmente com a arquiva\u00e7\u00e3o de linhas do tempo e informa\u00e7\u00f5es adicionais. Obrigado pela pergunta!<\/p>\n<p><\/p>\n<p>(Esclarecimento: Eliminamos a depend\u00eancia de scripts shell <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">neste issue<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>Boa noite! Obrigado pela apresenta\u00e7\u00e3o! A funcionalidade de catchup que voc\u00ea mencionou me interessou. J\u00e1 enfrentamos situa\u00e7\u00f5es de atraso de r\u00e9plica que n\u00e3o conseguiam alcan\u00e7ar o estado atual. E n\u00e3o encontrei a descri\u00e7\u00e3o dessa funcionalidade na documenta\u00e7\u00e3o do WAL-G.<\/em><\/p>\n<p><\/p>\n<p>Catchup surgiu literalmente nos \u00faltimos dias de janeiro de 2020. Pode ser que a documenta\u00e7\u00e3o precise de uma revis\u00e3o mais cuidadosa. N\u00f3s mesmos estamos escrevendo e n\u00e3o est\u00e1 perfeito. Tamb\u00e9m talvez deva come\u00e7ar a exigir que os alunos contribuam para a documenta\u00e7\u00e3o.<\/p>\n<p><\/p>\n<p><em>Ela j\u00e1 est\u00e1 dispon\u00edvel na vers\u00e3o?<\/em><\/p>\n<p><\/p>\n<p>O pull request j\u00e1 foi mesclado, ou seja, eu o verifiquei. Testei isso em um cluster de teste. At\u00e9 agora, n\u00e3o tivemos uma situa\u00e7\u00e3o em que pud\u00e9ssemos test\u00e1-lo em um caso real.<\/p>\n<p><\/p>\n<p><em>Quando podemos esperar isso?<\/em><\/p>\n<p><\/p>\n<p>Eu n\u00e3o sei. Espere um m\u00eas, vamos verificar com certeza.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498428\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e \u043c\u0435\u0440\u0435 \u0438\u0445 \u0440\u043e\u0441\u0442\u0430. \u041a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0444\u0438\u0447, \u0447\u0438\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 issues&#8217;\u043e\u0432 \u0438 \u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 pull request&#8217;\u043e\u0432? \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 WAL-G(backup-tool for PostgreSQL) \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u044b \u0440\u0435\u0448\u0430\u043b\u0438 \u044d\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78888,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78887","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=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.\" \/>\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\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\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\udd47WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0413\u0435\u043e\u0440\u0433\u0438\u0439 \u0420\u044b\u043b\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\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-04-22T17:42:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-22T17:42:51+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\udd47WAL-G: novas oportunidades e expans\u00e3o da comunidade. Georgy Rylov | ProHoster","description":"Sugiro que voc\u00ea confira a transcri\u00e7\u00e3o da apresenta\u00e7\u00e3o do in\u00edcio de 2020 por Georgiy Rylov \"WAL-G: novas oportunidades e expans\u00e3o da comunidade\". Os mantenedores de open-source enfrentam muitos problemas.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","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\udd47WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0413\u0435\u043e\u0440\u0433\u0438\u0439 \u0420\u044b\u043b\u043e\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","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-04-22T17:42:51+00:00","article:modified_time":"2020-04-22T17:42:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78887","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 16:49:45","updated":"2022-09-29 18:48:15","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\/78887","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=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}