MariaDB从5.5升级至10.2后Mariabackup全量备份失败求助
刚把MariaDB从5.5升级到10.2,切换到Mariabackup后就碰到备份失败的问题,确实挺闹心的。我帮你梳理几个常见的排查方向和解决办法,结合你给出的命令和输出开头,咱们一步步来:
1. 先确认备份用户的权限是否达标
Mariabackup需要的权限比老版本的innobackupex要全一些,你得确保backups用户拥有这些必要权限:
RELOAD、PROCESS、LOCK TABLES:用于获取备份时的一致性状态REPLICATION CLIENT:用于获取二进制日志位置CREATE TABLESPACE、SELECT:用于读取和备份表空间数据
可以执行这条SQL来赋予权限:
GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, SELECT ON *.* TO 'backups'@'localhost'; FLUSH PRIVILEGES;
2. 检查备份目标目录的权限和空间
你指定的/mnt/database_backups/test目录得满足两个条件:
- 目录必须存在,不存在的话先创建:
sudo mkdir -p /mnt/database_backups/test - 执行备份的用户(你用了
sudo,所以是root)对这个目录有读写权限,避免权限拒绝的问题:
sudo chown -R root:root /mnt/database_backups/test sudo chmod -R 700 /mnt/database_backups/test
另外别忘了检查目标磁盘的剩余空间,空间不足也会直接导致备份失败。
3. 核对MariaDB配置里的关键参数
升级到10.2后,有些InnoDB参数可能影响备份:
- 确保
innodb_file_per_table是开启状态(10.2默认是开的,但升级后可能被旧配置覆盖) - 检查
innodb_log_file_size,如果日志文件太小,备份过程中可能出现日志循环过快的错误 - 确认
datadir的权限正确,Mariabackup需要读取数据目录下的所有文件
你可以打开MariaDB的配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf)检查这些参数,调整后记得重启MariaDB服务。
4. 拿到完整的错误日志才是关键
你只贴了命令输出的开头部分,真正的错误原因肯定在后面。建议你把命令的完整输出保存到日志文件里:
sudo mariabackup --backup --target-dir /mnt/database_backups/test --user backups --password REDACTED > /tmp/mariabackup_error.log 2>&1
然后查看/tmp/mariabackup_error.log,或者直接看MariaDB的系统错误日志(一般在/var/log/mysql/error.log),里面会明确告诉你是权限问题、文件找不到还是InnoDB的错误。
5. 换个方式输入密码避免解析问题
直接在命令行明文输密码不仅不安全,还可能因为密码里有特殊字符导致解析错误。你可以试试这两种方式:
- 去掉
--password=REDACTED,只写--password,执行命令后交互式输入密码 - 在root用户的
~/.my.cnf里配置备份信息:
[client] user=backups password=REDACTED
之后执行备份命令时就不用带--user和--password参数了,既安全又能避免密码解析问题。
6. 确保Mariabackup和MariaDB版本完全匹配
Mariabackup是和MariaDB版本绑定的,必须保证两者版本完全一致(比如都是10.2.37),版本不匹配大概率会导致备份失败。你可以用这两条命令检查版本:
mariabackup --version mysql --version
如果版本不一致,卸载当前的Mariabackup,安装对应10.2版本的包就行。
内容的提问来源于stack exchange,提问作者Luke Cousins




