
Tenho trabalhado para refazer nossas rotinas de backup de banco de dados e examinei o mariabackup, pois o mysqldump não funciona mais, dado o tamanho de nossos esquemas. Temos vários esquemas que precisam de backup - todos eles variam em tamanho e também na frequência de backup (alguns precisam de backup em um período de seis horas, outros podem passar um dia entre os backups). Além disso, nosso banco de dados consiste em dois servidores de banco de dados, rodando em uma configuração mestre-escravo.
Para começar, executei este comando em um de nossos esquemas:
mariabackup --backup --user root --password <pass> --databases db1
Isso gerou uma cópia dos arquivos de dados do esquema 'db1', junto com alguns arquivos usados pelo próprio MariaDB (aria_log, ib_buffer_pool, ib_logfile, ibdata, etc.). Isso funciona perfeitamente – podemos criar backups separados de cada um dos nossos esquemas.
Restaurar parece ser outra história. Após '--prepare' fazer o backup e emitir o comando mariabackup --copy-back, ele reclama que o diretório de dados deve estar vazio. Se eu tivesse backups separados, seria possível restaurar esses esquemas em um banco de dados (ou melhor, em uma instância do MariaDB)? Para ser ainda mais claro, se eu fiz backups dos esquemas 'db1', 'db2' e 'db3', não consigo restaurá-los todos na mesma instância de banco de dados - há algo que estou não entendendo?
Responder1
O backup parcial, como o seu, só pode ser restaurado com --prepare --export. que gera alguns arquivos .cfg apenas os arquivos .ibd. A "restauração" deve ser "ALTER TABLE .. DISCARD TABLESPACE", "ALTER TABLE IMPORT TABLESPACE" para cada tabela no sistema de destino. Infelizmente, não é 100% automatizado, pois para descartar um tablespace em um sistema alvo, primeiro você precisa criar um tablespace no sistema alvo, com o mesmo "CREATE TABLE"