Backup de base de dados (mariadb) utilizando nodered e scripts

A ideia do tutorial é que tenham um backup da vossa base de dados mariadb no formato .sql para que seja de fácil importação caso necessitem de forma rápida.

Esta pequena explicação tem como base o uso de nodered e scripts.

Começo:

  1. Criar uma pasta dentro de /config/ com o nome ssh ficando o caminho: /config/ssh

  2. Criar uma pasta dentro de config/www com o nome temp ficando o caminho: /config/www/temp
    e colocar este ficheriro lá dentro : backup_mysql.txt (1.5 KB)

:exclamation: Antes de colocares o ficheiro dentro de /config/www/temp renomeia o nome de .txt para .sh

  1. Instalar o addon Advanced SSH & Web Terminal

  2. Na shell do Home Assistant ir até ao caminho /config/ssh com o comando cd /config/ssh e criar uma chave
    ssh com o comando:
    ssh-keygen -t rsa , quando pedir o nome escrever mariadb dar enter e não escolher password.

  3. Copiar a chave com o comando cat mariadb.pub

  4. Ainda na shell tens que dar permissão ao ficheiro.
    Escreve o comando : chmod u+x /config/www/temp/backup_mysql.sh

  5. Abrir a configuraçao do addon Advanced SSH & Web Terminal e colocar a chave anteriormente copiada.
    como também um username e password caso queiras usar sftp tens que usar root como username.

Exemplo:


username: root
password: cpha
authorized_keys:
  - >-
    ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABgQCzlqDVnR30txo87P00U4DpXUJZoS2egudyO2qSIc/moL9F/XVi1AE17eIflsU3vNJyW6RsDstDZGwQSA8ClPiSbxcRY4NPWXL/VwManQfoM9qoi/BiUhzsm4Irk6RrAs0sh4x9NFoQRS4
    root@a0d7b954-ssh
sftp: true
compatibility_mode: false
allow_agent_forwarding: false
allow_remote_port_forwarding: false
allow_tcp_forwarding: false
  1. Por fim o flow do nodered:
[{"id":"b4c0f224473a1f2f","type":"inject","z":"c1f01768.5a3bc8","name":"Trigger meia noite","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 00 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":490,"y":80,"wires":[["c1d05849742f35b5"]]},{"id":"c1d05849742f35b5","type":"exec","z":"c1f01768.5a3bc8","command":"","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"Backup MariaDB","x":710,"y":80,"wires":[["a04cab74d51ed001"],["1a1c6eddb5c5ca73"],["6255739bf3abfb66"]]},{"id":"a04cab74d51ed001","type":"debug","z":"c1f01768.5a3bc8","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":960,"y":40,"wires":[]},{"id":"1a1c6eddb5c5ca73","type":"debug","z":"c1f01768.5a3bc8","name":"debug 2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":960,"y":80,"wires":[]},{"id":"6255739bf3abfb66","type":"debug","z":"c1f01768.5a3bc8","name":"debug 3","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":960,"y":120,"wires":[]}]

No campo command:

teste

Tens que por isto:
ssh -i /config/ssh/mariadb root@192.168.1.85 'bash -s < /root/config/www/temp/backup_mysql.sh' > erro.log

Não te esqueças de alterar onde diz root@192.168.1.85 para o teus dados.

Resumindo o que este script faz juntamente com o nodered todos os dias à meia noite colocar dentro de /config/www/temp um backup da tua base de dados e mantem os ultimos 7 criando no fim um zip dos mesmos.

Caso depois queiras enviar o zip , usando o rclone que tenhas configurado na tua máquina assim poderás o enviar, para que tenhas um backup também da tua nuvem preferida.

Caso queiras mover o zip para o teu Nas também o poderás fazer, mas deixo isso para outro “episódio”

Créditos para @nikito7 @bbaixo e @domusonline

2 Curtiram

Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade