sql >> Base de Datos >  >> RDS >> MariaDB

Pasando a la copia de seguridad de MariaDB

En mi publicación de blog anterior sobre la actualización a la última versión de Jira junto con la última versión de MariaDB, mencioné brevemente que al actualizar a MariaDB Server 10.3, se debe observar cómo se realizan las copias de seguridad. Con MariaDB Server 10.3 viene MariaDB Backup, que admite las características más nuevas de MariaDB Server. También está disponible en todas las mismas plataformas que MariaDB Server y se distribuye junto con el servidor.

Si ha realizado una copia de seguridad con XtraBackup e intenta ejecutar esos mismos comandos en MariaDB Server 10.3, recibirá un mensaje de error:

$ innobackupex ~/backup_to_dir --user=username --password=password
...
InnoDB: Unsupported redo log format. The redo log was created with MariaDB 10.3.9.

La primera frase del último mensaje es de lo que se trata. XtraBackup no entiende los archivos en el registro de rehacer de 10.3. Tenga en cuenta que usamos una versión anterior de XtraBackup y por eso el comando sigue siendo innobackupex .

Por esta y algunas otras razones mencionadas a continuación, MariaDB Server ahora viene con MariaDB Backup que admite el nuevo formato de registro de rehacer. Con MariaDB Backup tiene la misma funcionalidad a la que está acostumbrado con XtraBackup, pero con soporte para el formato de registro de redo mejorado y soporte para el cifrado de datos en reposo de MariaDB. Otro aspecto muy solicitado es que MariaDB Backup también está disponible para Windows, mientras que XtraBackup no lo está. Si está interesado en obtener más información sobre el cambio del registro de rehacer, lea esto.

Al comienzo de esta publicación, menciono que recientemente actualizamos Jira a la versión más reciente y MariaDB Server a 10.3. En ese entorno más antiguo, usábamos XtraBackup. Para obtener copias de seguridad para MariaDB Server 10.3, tuvimos que actualizar nuestros scripts de copia de seguridad para usar MariaDB Backup.

Después de cambiar a MariaDB Backup, el comando de copia de seguridad se ve así:

$ mariabackup --backup --target-dir /backup/to/dir --user=username --password=password --parallel=4

Tuvimos que cambiar el comando en sí mismo de ser innobackupex a mariabackup y agregamos dos opciones; –copia de seguridad para decirle a mariabackup que queremos que cree una copia de seguridad y –target-dir para especificar que el directorio dado es donde deben ir los archivos de copia de seguridad. Cabe señalar que si hubiéramos estado usando una versión más reciente de XtraBackup, las opciones de la línea de comandos habrían sido completamente compatibles con XtraBackup, por lo que lo único que habría que cambiar habría sido el comando en sí de xtrabackup a mariabackup .

Para asegurarnos de que la copia de seguridad funciona, la copiaremos en otro servidor e intentaremos restaurarla allí. Para restaurar una copia de seguridad primero tenemos que prepararla:

$ mariabackup --prepare --target-dir full-2018-09-11_09-38-32

Tenga en cuenta que tengo una copia de seguridad completa de una instancia del servidor MariaDB que reemplazará cualquier cosa que exista en la instancia en la que estoy restaurando. Por lo tanto, detendré el servidor y eliminaré todos los archivos de datos que contenga.

$ sudo service mariadb stop
$ sudo rm -rf /var/lib/mysql/*

Ahora los archivos de copia de seguridad se pueden colocar en el directorio de datos de esta instancia del servidor. Debe hacerse con mariabackup para hacerlo bien. Hace algunas cosas relacionadas con el formato de registro de rehacer explicado anteriormente.

$ sudo mariabackup --copy-back --target-dir full-2018-09-11_09-38-32

Asegúrese de que los permisos sean correctos. En mi caso, el usuario y el grupo normales están en uso. Luego inicie el servidor.

$ sudo chown mysql:mysql /var/lib/mysql -R
$ sudo service mariadb start

Luego, conectémonos al servidor y verifiquemos que tenga los datos que debería tener. Decidí consultar el número máximo de incidencias en Jira.

# connect to mariadb
$ mysql -uusername -ppassword
# query the database
MariaDB [(none)]> USE jiradb
MariaDB [jiradb]> SELECT MAX(issuenum) FROM jiraissue;

¡Voila! Ahora tenemos copias de seguridad funcionando en MariaDB Server 10.3.