Bug 43463 - Не работает ключ --datadir при создании бэкапа в xtrabackup
Summary: Не работает ключ --datadir при создании бэкапа в xtrabackup
Status: CLOSED WORKSFORME
Alias: None
Product: Sisyphus
Classification: Development
Component: percona-xtrabackup (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexei Takaseev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-08-05 16:13 MSK by Alexandr Shashkin
Modified: 2022-08-05 17:07 MSK (History)
1 user (show)

See Also:


Attachments
Логи выполнения команды xtrabackup (47.99 KB, text/x-log)
2022-08-05 16:13 MSK, Alexandr Shashkin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexandr Shashkin 2022-08-05 16:13:07 MSK
Created attachment 11290 [details]
Логи выполнения команды xtrabackup

Версия программы:
=================
percona-xtrabackup-8.0.28-alt1
MySQL-server-8.0.29-alt1

Шаги, приводящие к ошибке:
==========================
1) Установить необходимые пакеты:
   # apt-get install percona-xtrabackup perl-DBD-mysql -y
2) Установить и запустить MySQL:
   # rm -rvf /var/lib/mysql/ && apt-get --reinstall install MySQL -y
   # chkconfig mysqld on && systemctl enable --now mysqld ; sleep 2 ; \
   systemctl status --no-pager mysqld
3) Выполнить команду для backup, указав другой каталог с базами данных:
   # mkdir -p /data/backups && xtrabackup --backup --target-dir=/data/backups/base \
   --datadir=/var/lib/mysql/db/

Результат:
==========
Создание бэкапа не происходит, так как отсутствует файл /db/binlog.0000* (/db/ это каталог с базами данных для xtrabackup по умолчанию), а он (файл binlog.0000*) находится в /var/lib/mysql/db. При этом все остальные файлы копируются из указанного при помощи ключа --datadir каталога. (См приложенный лог)

Ожидаемый результат:
====================
При использовании ключа --datadir все все файлы копируются из директории, указанной им.
Comment 1 Alexei Takaseev 2022-08-05 17:07:35 MSK
Проблема кроется в chroot-режиме работы сервера СУБД. Сама утилита честно
идет в каталог, указанный в --datadir и там считывает содержимое файлов *.index
в которых как раз указывается место положение файлов бинарных логов. В случае
работы СУБД в chroot'е, там как раз будут строки вида
/db/mysql-bin.000082
/db/mysql-bin.000083

и естественно утилита не сможет найти эти файлы. Вариантов решения мне видится два:

1 - крайне неправильный, создание символьной ссылки ln -s /var/lib/mysql/db /db
2 - правильный: control mysqld-chroot disabled && systemctl restart mysqld