You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MariaDB从5.5升级至10.2后Mariabackup全量备份失败求助

解决Mariabackup全量备份失败的问题

刚把MariaDB从5.5升级到10.2,切换到Mariabackup后就碰到备份失败的问题,确实挺闹心的。我帮你梳理几个常见的排查方向和解决办法,结合你给出的命令和输出开头,咱们一步步来:

1. 先确认备份用户的权限是否达标

Mariabackup需要的权限比老版本的innobackupex要全一些,你得确保backups用户拥有这些必要权限:

  • RELOADPROCESSLOCK TABLES:用于获取备份时的一致性状态
  • REPLICATION CLIENT:用于获取二进制日志位置
  • CREATE TABLESPACESELECT:用于读取和备份表空间数据

可以执行这条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

火山引擎 最新活动