我在Ubuntu22.04服务器上有一个MariaDB10.6.7的实例,并且我正在尝试使用mariabackup备份特定的数据库。
mariabackup --backup --user="my_test_user" --target-dir=/tmp/mdb_test --verbose但总是以
[00] 2022-11-07 06:57:13 mariabackup: Generating a list of tablespaces
[00] 2022-11-07 06:57:13 Can't open dir ./testdb我遵循了如下所示的创建备份用户的说明:https://mariadb.com/kb/en/mariabackup-overview/#authentication-and-privileges唯一的区别是,我选择了"unix“进行身份验证,以省略系统上的密码文件。
受影响的用户'my_test_user‘是mysql组的成员。
但是,身份验证是成功的,但是,如果出现以下错误,则mariabackup将失败:
[00] 2022-11-07 06:57:13 Connecting to MariaDB server host: localhost, user: my_test_user, password: not set, port: not set, socket: /run/mysqld/mysqld.sock
[00] 2022-11-07 06:57:13 Using server version 10.6.7-MariaDB-2ubuntu1.1
mariabackup based on MariaDB server 10.6.7-MariaDB debian-linux-gnu (x86_64)
[00] 2022-11-07 06:57:13 uses posix_fadvise().
[00] 2022-11-07 06:57:13 cd to /var/lib/mysql/
[00] 2022-11-07 06:57:13 open files limit requested 0, set to 1024
[00] 2022-11-07 06:57:13 mariabackup: using the following InnoDB configuration:
[00] 2022-11-07 06:57:13 innodb_data_home_dir =
[00] 2022-11-07 06:57:13 innodb_data_file_path = ibdata1:12M:autoextend
[00] 2022-11-07 06:57:13 innodb_log_group_home_dir = ./
2022-11-07 6:57:13 0 [Note] InnoDB: Number of pools: 1
[00] 2022-11-07 06:57:13 mariabackup: Generating a list of tablespaces
[00] 2022-11-07 06:57:13 Can't open dir ./testdb
[00] 2022-11-07 06:57:13 merror: xb_load_tablespaces() failed with error Generic error.我可以看到,cd到默认的datadir是可以的,但是不能访问数据库目录。这是合理的,因为/var/liq/mysql/testdb有700个权限,所以组完全没有权限。正如我所看到的,这是mysql/mariadb文件和文件夹的默认权限。我试着以mysql的身份运行
mariabackup --backup --user="mysql" --target-dir=/tmp/mdb_test --verbose但是,由于各种原因(没有密码、没有登录shell等),这也失败了;我想mysql用户不打算以这种方式使用,所以.。
现在官方的mariadb/mariabackup文档说https://mariadb.com/kb/en/mariabackup-overview/#file-system-permissions
Mariabackup必须从文件系统读取MariaDB的文件。因此,当您将Mariabackup作为特定的操作系统用户运行时,您应该确保用户帐户有足够的权限读取这些文件。如果您使用的是Linux,并且安装了带有包管理器的MariaDB,那么MariaDB的文件可能属于mysql用户和mysql组。
现在我想知道如何才能“以正确的方式”做到这一点。我已经在mariadb文档中找到了这个https://mariadb.com/kb/en/specifying-permissions-for-schema-data-directories-and-tables/,并且已经导出了umask_dir=750变量并重新启动了服务器,但是到目前为止,这并没有帮助,仍然得到了相同的错误。
也许有人能帮我弄清楚我错过了什么。如果我将testdb目录的权限更改为750,则一切正常,但我担心在高效的情况下这样做不是个好主意。
任何提示都非常欢迎。
发布于 2022-11-07 07:22:01
但是,无法访问数据库目录。这是合理的,因为/var/liq/mysql/testdb有700个权限,所以组完全没有权限。
是的,mariabackup需要访问磁盘文件上的物理文件,因此需要在目录和文件上使用g+rX。
导出umask_dir=750变量并重新启动服务器,但到目前为止这并没有帮助,仍然得到了相同的错误。
只影响新目录/数据库。并注意系统异常。
如果我将testdb目录的权限更改为750,则一切正常,但我担心在高效的情况下这样做不是个好主意。
如果my_test_user是唯一有mysql组的,那么它是无害的。
或者让mysql@localhost成为经过身份验证的"unix“用户,并以该用户的身份运行备份。那么用户文件/目录权限已经正确了。
https://dba.stackexchange.com/questions/319276
复制相似问题