¿Hacer una copia de seguridad de una única base de datos con mariabackup?

¿Hacer una copia de seguridad de una única base de datos con mariabackup?

He estado trabajando para rehacer nuestras rutinas de respaldo de bases de datos y he investigado mariabackup ya que mysqldump ya no es suficiente dado el tamaño de nuestros esquemas. Tenemos varios esquemas de los que es necesario realizar una copia de seguridad: todos varían en tamaño y también varían en la frecuencia de la copia de seguridad (algunos deben realizar una copia de seguridad en un período de seis horas, otros pueden pasar un día entre copias de seguridad). Además de eso, nuestra base de datos consta de dos servidores de bases de datos que se ejecutan en una configuración maestro-esclavo.

Para empezar, ejecuté este comando en uno de nuestros esquemas:

mariabackup --backup --user root --password <pass> --databases db1

Eso generó una copia de los archivos de datos del esquema 'db1', junto con algunos archivos utilizados por el propio MariaDB (aria_log, ib_buffer_pool, ib_logfile, ibdata, etc.). Esto funciona perfectamente: podemos crear copias de seguridad independientes de cada uno de nuestros esquemas.

Sin embargo, la restauración parece ser otra historia. Después de preparar la copia de seguridad y emitir el comando mariabackup --copy-back, se queja de que el directorio de datos debe estar vacío. Si tengo copias de seguridad separadas, ¿me sería posible restaurar esos esquemas en una base de datos (o más bien, en una instancia de MariaDB)? Para ser aún más claro, si hice copias de seguridad de los esquemas 'db1', 'db2' y 'db3', parece que no puedo restaurarlos todos en la misma instancia de base de datos. ¿Hay algo que estoy ¿no entendiendo?

Respuesta1

Una copia de seguridad parcial, como la suya, sólo se puede restaurar con --prepare --export. eso genera algunos archivos .cfg solo los archivos .ibd. La "restauración" está destinada a ser "ALTER TABLE .. DISCARD TABLESPACE", "ALTER TABLE IMPORT TABLESPACE" para cada tabla en el sistema de destino. Desafortunadamente, no está 100% automatizado, porque para descartar un espacio de tabla en un sistema de destino, primero debe crear un espacio de tabla en el sistema de destino, con el mismo "CREAR TABLA".

información relacionada