2016-05-20 6 views
0

Согласно этому link, я выполнил эту команду для резервного копирования моей базы данных:XtraBackup выполняет только полное резервное копирование, если выполняется с супер правами пользователя

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?
+0

Вы пытались запустить его с тем же пользователем, которому принадлежат файлы базы данных? Обычно это 'mysql'. – tadman

+0

Что я хочу сделать, это запустить его с MY user. – VaTo

+1

Что вы хотите и какие разрешения UNIX допускаете, могут быть разными. Предполагается, что база данных будет защищена. – tadman

ответ

2

xtrabackup инструмент работает как пользователь ссылающегося на него, и что пользователь должен иметь возможность читать файлы базы данных, которые, как правило, принадлежащие MySQL: MySQL и режим 660.

легко исправить, как правило, в добавить пользователя в группу MySQL, например:

useradd -G mysql yves 

Затем выйти из системы и повторно открыть сессию, он должен работать.

+0

Извините, хотя я сделал пользователя частью группы mysql. Я все равно получаю ту же ошибку. Но похоже, что тот, у которого нет разрешений на запись, является mysqld 'InnoDB: ошибка означает, что mysqld не имеет прав доступа к каталогу.' – VaTo

+0

Убедитесь, что все файлы в/var/lib/mysql имеют групповое чтение/запись а затем ваш пользователь должен иметь возможность сделать резервную копию. innobackup работает на уровне файла, поэтому, если ваш пользователь не может открыть файлы, то innobackup (как выполненный вами) также не может. Или напишите сценарий оболочки, который берет резервную копию как root, а затем завершает резервное копирование; супер простой. – utdrmac

0

Я думаю, вы пытаетесь бороться с тем, как Percona хочет, чтобы вы использовали их материал, хотя я мог ошибаться.

Я знаю, что innobackupex (Perl скрипт установлен с XtraBackup), как предполагается, будет работать как корень, так как один из инженеров поддержки Percona говорит так здесь: https://www.percona.com/forums/questions-discussions/percona-xtrabackup/8748-error-trying-to-run-backup

Может быть команда XtraBackup только предполагается использовать тот же путь?