Привет! Уже довольно долго бьюсь над задачей, похоже, настало время попросить совета.
Имеется mysql innodb с перконой, Server version: 5.5.28-29.2-log Percona Server (GPL), Release 29.2. Есть желание снять бекап с одной базы на этом сервере, и залить на этот же сервер, но в другую базу. Дампы довольно объемные (сейчас 45Gb, но может быть и 200), так что mysqldump не подходит.
В мускуле выставлены innodb_import_table_from_xtrabackup и innodb_file_per_table.
Снятие бекапа
cd /path/to/backup/ && sudo rm -r * && sudo xtrabackup --backup --datadir=/SSD/mysql --target-dir= /path/to/backup/ --tables="^source_db[.].*"
xtrabackup --prepare --export --target-dir=/path/to/backup/
Создание новой базы и заливка бекапа
mysql -'user' -p'pass' -e 'CREATE DATABASE IF NOT EXISTS destination_db DEFAULT CHARSET utf8;'
mysql -'user' -p'pass' destination_db < database_schema.sql
mysql -u'user -p'pass' -Nse 'show tables' destination_db | while read table; do mysql -u'user' -p'pass' -e "ALTER TABLE $table DISCARD TABLESPACE" destination_db; done
find /path/to/backup/source_db -name '*.ibd' -exec sudo cp {} /SSD/mysql/destination_db \;
chown -R mysql:mysql /SSD/mysql/destination_db/
sudo chmod -R 660 /SSD/mysql/destination_db/
mysql -u'user' -p'pass' -Nse 'show tables' destination_db | while read table; do mysql -u'user' -p'apass' -e "ALTER TABLE $table IMPORT TABLESPACE" destination_db; done
Все гут, пока не доходит до alter table $table import tablespace, mysql выдает ERROR 1030 (HY000): Got error -1 from storage engine. В /var/log/mysql/error.log записи типа такого:
130703 20:10:19 InnoDB: Error: trying to open a table, but could not
InnoDB: open the tablespace file './db666/zreports.ibd'!
130703 20:10:19 InnoDB: Error: cannot reset lsn's in table `db666`.`zreports`
InnoDB: in ALTER TABLE… IMPORT TABLESPACE
130703 20:12:22 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
130703 20:12:22 InnoDB: Error: trying to open a table, but could not
InnoDB: open the tablespace file './db666/zreports.ibd'!
130703 20:12:22 InnoDB: Error: cannot reset lsn's in table `db666`.`zreports`
InnoDB: in ALTER TABLE… IMPORT TABLESPACE
И вот я не пойму что не так, или я дамп делаю неправильно, или его заливаю не так? Место на диске есть, права (не смотря на ошибку в логе) вроде бы правильные.