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 все все файлы копируются из директории, указанной им.
Проблема кроется в 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