Dokku: Criar e ligar uma base de dados MariaDB

Depois de instalar a nossa aplicação PHP vamos criar uma base de dados MariaDB e ligá-la à nossa aplicação no Dokku v0.4.5 a correr no DigitalOcean.

MariaDB é um "drop-in replacement" do MySQL, o que significa que se tiverem uma aplicação que usa o MySQL podem exportar a base de dados e importá-la na MariaDB que tudo continua a funcionar.

As instruções neste artigo são para o plugin de MariaDB mas é basicamente igual para outros plugins de bases de dados.

Criar a base de dados

Começem por instalar o plugin:

dokku plugin:install https://github.com/dokku/dokku-mariadb.git mariadb

Agora criem a base de dados:

dokku mariadb:create db_name

Liguem o serviço da base de dados à vossa aplicação:

dokku mariadb:link db_name app_name

Ligar à base de dados a partir da vossa aplicação

Ao ligar o serviço da base de dados a uma aplicação é criada uma variável de ambiente chamada DATABASE_URL. Esta variável contém a informação necessária para estabelecer a ligação à base de dados.

A variável está no seguinte formato:

service://user:pass@host:port/db_name

Para estabelecer a ligação à base de dados no PHP podem extrair a informação desta variável ambiente sem terem de guardar informação sensível no vosso repositório:

$url = getenv('DATABASE_URL');
$components = parse_url($url);

if ($components) {
 $host = $components['host'];
 $username = $components['user'];
 $password = $components['pass'];
 $dbname = substr($components['path'], 1);
 $port = $components['port'];
}

Agora podem usar estas variáveis para se ligarem à base de dados.

Importar uma base de dados existente

Se querem importar uma base de dados existente podem fazê-lo através do seguinte comando:

dokku mariadb:import db_name < file_name

Podem usar SFTP para transferir o ficheiro da vossa máquina local.

Por exemplo, uso o FileZilla no Windows e no Site Manager apenas tenho que:

  • Seleccionar o protocolo SFTP
  • Definir o tipo de logon como "Key file"
  • Definir "root" como utilizador
  • Escolher a chave privada

Fazer backup da base de dados

De forma semelhante é possível criar um dump da base de dados com o comando:

dokku mariadb:export db_name > file_name

Agendar uma tarefa

Podem criar um script bash para gerir os backups da vossa aplicação.

Este script é adaptado de dommmel:

#! /bin/bash

# directory to save backups in, must be rwx
BASE_DIR="/var/backups/$1"
YMD=$(date "+%Y-%m-%d")
DIR="$BASE_DIR/$YMD"
mkdir -p $DIR
cd $DIR

# make database backup
dokku mariadb:export $1 | gzip -9 > "$DIR/$1.sql.gz"

# delete backup files older than 31 days
OLD=$(find $BASE_DIR -type d -mtime +31)
if [ -n "$OLD" ] ; then
        echo deleting old backup files: $OLD
        echo $OLD | xargs rm -rfv
fi

Isto cria um dump da base de dados com o gzip para uma pasta com o nome da base de dados e apaga os ficheiros mais antigos do que 31 dias. É necessário passar o nome da base de dados como argumento.

Tornem o script executável:

chmod +x /path/to/script

Corram-no para se certificarem que funciona:

/path/to/script db_name

Criem uma tarefa cron

Agora precisam de criar uma tarefa cron:

crontab -e

Isto vai abrir a crontab do utilizador para edição. Se perguntar para escolher um editor, escolham um.

Agora adicionem uma linha no fim do ficheiro para chamar o vosso script de backup:

0 0 * * 0 /path/to/script db_name

Isto agenda o script para ser executado todos os Domingos à meia-noite. Leiam mais informação sobre o formato cron para saberem como personalizar o horário.

Conclusão

Agora dêem uma palmadinha nas vossas costas. Está tudo feito!

Nuno Freitas
Publicado por Nuno Freitas em 12 dezembro, 2015

Artigos relacionados