xtrabackup仅在以超级用户权限执行时才执行完全备份

时间:2016-05-20 21:09:56

标签: mysql backup percona

根据这个link,我执行了这个命令来备份我的数据库:

 xtrabackup --backup --databases='database' --target-dir=/home/user/backups --datadir=/var/lib/mysql/

但是我收到以下错误:

160520 02:00:54  version_check Done.
160520 02:00:54 Connecting to MySQL server host: localhost, user: root, password: set, port: 0, socket: /var/lib/mysql/mysql.sock
Using server version 5.5.44-MariaDB
xtrabackup version 2.4.2 based on MySQL server 5.7.11 Linux (x86_64) (revision id: 8e86a84)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql/
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup:   innodb_data_home_dir = .
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = .
xtrabackup:   innodb_log_files_in_group = 2
xtrabackup:   innodb_log_file_size = 5242880
InnoDB: Number of pools: 1
InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to the directory.

我通过使用sudo运行相同的命令来解决它,问题是备份目录是以root身份创建的,所以我的用户无法访问该目录所以我总是必须为该目录递归更改所有权所以我能够读懂它。这种方法对我来说效率不高。

  • 还有其他选择吗?
  • 我总是必须这样做 用sudo执行此命令?

3 个答案:

答案 0 :(得分:2)

xtrabackup工具以用户调用它的方式运行,并且该用户必须能够读取通常由 mysql:mysql 和模式660拥有的数据库文件。

通常可以轻松修复用户到mysql组,例如:

useradd -G mysql yves

然后注销并重新打开会话,它应该可以正常工作。

答案 1 :(得分:0)

我认为你正试图打击Percona希望你使用他们的东西的方式,虽然我可能是错的。

我知道innobackupex(安装了xtrabackup的perl脚本)应该以root身份运行,因为Percona的一位支持工程师在这里说:https://www.percona.com/forums/questions-discussions/percona-xtrabackup/8748-error-trying-to-run-backup

也许xtrabackup命令应该以相同的方式使用?

答案 2 :(得分:0)

如果成功运行备份脚本一段时间后出现此错误,并且无法找出更改的内容,请在MySQL目录(通常为/ var / lib / mysql)下查找新文件夹。我两次发现仅在用户级别(即drwx ------)创建的,没有组读取访问权限的新DB。快速的chmod 750目录修复权限将为我解决这个问题。