官方文档:https://mariadb.com/kb/en/full-backup-and-restore-with-mariabackup/
一、权限与配置
创建用户与授权
使用 mariabackup 工具备份时需要用一个具有全局权限的用户来执行备份操作
-- 创建用户
CREATE USER 'mariabackup'@'localhost' IDENTIFIED BY 'mypassword';
-- 授权
GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'mariabackup'@'localhost';
指定用户信息
备份时有两种方式指定用户信息,一种是使用命令行参数:--user --password
mariabackup --backup \
--target-dir=/var/mariadb/backup/ \
--user=mariabackup --password=mypassword
另一种是在配置文件中配置客户端参数组
[mariabackup]
user=mariabackup
password=mypassword
文件系统权限
mariabackup 工具基于文件进行备份,在备份过程中需要读取到文件系统中的文件,因此需要确保执行 mariabackup 命令的用户具有读取这些文件的权限
数据库文件位置
在 MariaDB 10.1.36,MariaDB 10.2.18,MariaDB 10.3.10 之前,如果在执行命令时没有指定数据库的文件位置,MariaDB 将不会读取默认的值,并且返回一个错误
Error: datadir must be specified.
配置数据文件地址的方式也有两种,命令行
# -h, --datadir
mariabackup --backup -h /var/lib/mysql
配置文件
[mysqld]
datadir=/var/lib/mysql
二、备份
备份指定数据库
mariabackup --backup \
--target-dir=/var/mariadb/backup/ \
--user=mariabackup --password=mypassword
- --target-dir 指定备份文件存放地址
三、还原
准备还原文件
需要注意,mariabackup 在 target-dir 目录生成的文件时间点是不一致的,如果直接使用这些文件进行恢复的话,InnoDB会以数据损坏的方式拒绝执行
所以,在使用这些文件恢复数据库前,需要先使用命令进行处理
mariabackup --prepare \
--target-dir=/var/mariadb/backup/
还原备份
在进行还原备份之前,需要确保以下条件:
- 停止 MariaDB Server 进程
- 确保 datadir 目录为空
确认没有问题之后可以使用命令进行还原
mariabackup --copy-back \
--target-dir=/var/mariadb/backup/
或者使用以下命令
rsync -avrP /var/mariadb/backup /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/
# 如果 mariabackup 是 10.2.10 之前的版本,需要删除所有已存在的 InnoDB 重做日志文件
rm /var/lib/mysql/ib_logfile*