{"id":172,"date":"2020-12-05T01:39:06","date_gmt":"2020-12-05T01:39:06","guid":{"rendered":"https:\/\/adrianotanaka.com.br\/?p=172"},"modified":"2020-12-05T01:47:52","modified_gmt":"2020-12-05T01:47:52","slug":"criando-backups-no-oci-de-hora-em-hora","status":"publish","type":"post","link":"https:\/\/adrianotanaka.com.br\/index.php\/2020\/12\/05\/criando-backups-no-oci-de-hora-em-hora\/","title":{"rendered":"Criando backups no OCI de hora em hora"},"content":{"rendered":"\n<p>J\u00e1 se perguntou como gerar um backup de hora em hora dos seus boot\/block volumes? Talvez voc\u00ea j\u00e1 tenha pensando em criar uma politica de backup customizada para isso e tenha se deparado com a seguinte limita\u00e7\u00e3o:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"389\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image.png\" alt=\"\" class=\"wp-image-173\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image.png 447w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-300x261.png 300w\" sizes=\"auto, (max-width: 447px) 100vw, 447px\" \/><\/figure><\/div>\n\n\n\n<p>Caso na sua politica de backup j\u00e1 exista um agendamento di\u00e1rio, n\u00e3o \u00e9 poss\u00edvel configurar um outro e um disco (at\u00e9 o momento) s\u00f3 pode ter uma politica atribu\u00edda a ele.<\/p>\n\n\n\n<p>Sendo assim apresento aqui algumas op\u00e7\u00f5es usando o bom e velho <strong>oci cli<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Backup sob demanda<\/strong><\/h2>\n\n\n\n<p>A sintaxe do comando \u00e9 bem simples, bastando passar para o comando o ocid do disco a ser feito o backup:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">oci bv backup create [OPTIONS]<\/pre>\n\n\n\n<p>E para boot volume voc\u00ea deve usar:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">oci bv boot-volume-backup create [OPTIONS]<\/pre>\n\n\n\n<p>Al\u00e9m disso, vamos usar a op\u00e7\u00e3o &#8211;type com o valor INCREMENTAL para que sempre seja feito um backup da forma incremental, dessa forma economizamos o espa\u00e7o consumido pelo nosso backup.<\/p>\n\n\n\n<p>Daqui pra frente mostro como fazer backup de Block Volumes, caso deseje fazer de Boot Volumes, basta alterar o comando para bv boot-volume-backup XXXX.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n##This script creates an backup on demand\n##How to use: .\/bkp_on_demand.sh VOL_OCID BKP_NAME\n\n\nexport OCI_CLI_AUTH=instance_principal\nexport DATA=$(date +\"%d-%m-%y\")\nexport HORA=$(date +\"%H%M\")\n\noci bv backup create --volume-id $1 --type incremental --display-name $2-$DATA --freeform-tags '{\"Hora\": \"'\"$HORA\"'\"}'<\/pre>\n\n\n\n<p>A limita\u00e7\u00e3o desse m\u00e9todo \u00e9 que com ele (ainda) n\u00e3o \u00e9 poss\u00edvel definir a reten\u00e7\u00e3o do backup, voc\u00ea precisa apagar os backups de forma &#8220;manual&#8221; executando o comando abaixo e passando o ocid do backup, o que torna seu gerenciamento um pouco mais chato:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">oci bv boot-volume-backup delete OCID<\/pre>\n\n\n\n<p>Voc\u00ea pode fazer uma <s>gambiarra<\/s> solu\u00e7\u00e3o de contorno que \u00e9 listar todos os backups que possuam uma data X no nome e passar o ocid o para o comando delete:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n##This script delete an backup\n##How to use: .\/del_bkp_on_demand.sh COMPARTIMENT BKP_NAME\n\n\nexport OCI_CLI_AUTH=instance_principal\nexport RETENCAO=$(date +\"%d-%m-%y\" -d  \"1 day ago\")\n\noci bv backup list -c $1 --all --display-name $2-$RETENCAO --lifecycle-state AVAILABLE | jq -r '.data[]|.id' > del_bkp$2.txt\n\nwhile IFS=\"\" read -r p || [ -n \"$p\" ]\ndo\n  oci bv backup delete  --volume-backup-id $p  --force\ndone &lt; del_bkp$2.txt\n<\/pre>\n\n\n\n<p>Voc\u00ea tamb\u00e9m poderia usar o jq para filtrar o campo com a data de cria\u00e7\u00e3o do backup (time-created) mas ai estar\u00edamos complicando ainda mais o processo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Uma luz no fim do t\u00fanel<\/h2>\n\n\n\n<p>Uma forma que encontrei de minimizar o nosso trabalho \u00e9 fazendo a Oracle trabalhar por n\u00f3s, crie diversas politicas de backup customizada da forma que desejar e execute um script para alterar a politica vinculada ao disco, dessa forma a nossa reten\u00e7\u00e3o vai ser aplicada de forma autom\u00e1tica.<\/p>\n\n\n\n<p>Aqui em meu ambiente tenho algumas politicas criadas conforme pode ser visto:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"250\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-1.png\" alt=\"\" class=\"wp-image-178\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-1.png 972w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-1-300x77.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-1-768x198.png 768w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/><figcaption><br><\/figcaption><\/figure><\/div>\n\n\n\n<p>Cada uma delas tem um agendamento em um hor\u00e1rio do dia como o nome indica e cada uma delas tem uma reten\u00e7\u00e3o diferente, o backup feito as 8am e 12am ficam armazenados por um dia, o backup feito as 10pm fica armazenado por 7 dias.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"898\" height=\"627\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-3.png\" alt=\"\" class=\"wp-image-180\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-3.png 898w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-3-300x209.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-3-768x536.png 768w\" sizes=\"auto, (max-width: 898px) 100vw, 898px\" \/><\/figure><\/div>\n\n\n\n<p>A ideia \u00e9 bem simples, se voc\u00ea tem uma politica que executa um backup as 22h(tome cuidado com o timezone do agendamento), o seu disco precisa estar com ela um pouco antes, sendo assim, segue mais um script que nos ajuda com isso, bastando passar o ocid do volume e o ocid da politica desejada:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> #!\/bin\/bash\n##This script changes the backup policy from block volume\n##How to use: .\/change_bkp_pol.sh VOL_OCID POLICY_OCID\n\noci bv volume-backup-policy-assignment create --asset-id $1 --policy-id $2<\/pre>\n\n\n\n<p>No fim voc\u00ea vai ter algo mais ou menos assim, para cada disco que deseja mudar a politica, basta fazer um agendamento no crontab:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"199\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-4-1024x199.png\" alt=\"\" class=\"wp-image-181\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-4-1024x199.png 1024w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-4-300x58.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-4-768x150.png 768w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-4.png 1181w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p>E aqui podemos validar no OCI que a reten\u00e7\u00e3o foi aplicada com sucesso:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"237\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-5.png\" alt=\"\" class=\"wp-image-183\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-5.png 940w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-5-300x76.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2020\/12\/image-5-768x194.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure><\/div>\n\n\n\n<p>No mais \u00e9 isso, acredito que tenha conseguido exemplificar uma forma de fazer essa automa\u00e7\u00e3o que ainda n\u00e3o \u00e9 poss\u00edvel fazer via interface web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J\u00e1 se perguntou como gerar um backup de hora em hora dos seus boot\/block volumes? Talvez voc\u00ea j\u00e1 tenha pensando em criar uma politica de backup customizada para isso e tenha se deparado com a seguinte limita\u00e7\u00e3o: Caso na sua politica de backup j\u00e1 exista um agendamento di\u00e1rio, n\u00e3o \u00e9 poss\u00edvel configurar um outro e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":186,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"material-hide-sections":[],"footnotes":""},"categories":[19,8,6,1],"tags":[20,10,21,22],"class_list":["post-172","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cli","category-oci","category-oracle","category-uncategorized","tag-hourly-based-backup","tag-oci","tag-oci-backup","tag-vm-backup"],"_links":{"self":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":5,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/172\/revisions"}],"predecessor-version":[{"id":187,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/172\/revisions\/187"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media\/186"}],"wp:attachment":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}