Почему XtraBackup сообщает мне, что моя база данных MySQL повреждена?
Я пытаюсь сделать резервную копию данных на узле MySQL Galera с помощью XtraBackup. К сожалению, инструмент сообщает мне, что ibdata1 поврежден. После двойной проверки я действительно обнаружил некоторые таблицы myisam, которые у меня есть по ошибке. Отбросил те и заменил их таблицами innodb. Тем не менее, ошибка остается (хотя на другой странице сейчас)
xtrabackup version 2.2.12 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 8726828)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /data/mysql/data
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:12M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 50331648
>> log scanned up to (22054624442)
xtrabackup: Generating a list of tablespaces
[01] Copying ./ibdata1 to /data/backup/2015-09-02_15-23-50/ibdata1
[01] xtrabackup: Database page corruption detected at page 1320, retrying...
Я трижды проверил коррупцию в базе данных и ничего не смог найти. Возможно ли проблема с настройкой Galera и XtraBackup?
1 ответ
Это может быть вызвано несколькими причинами.
Вы используете старую версию xtrabackup, в которой есть ошибка, которая может пометить наличие коррупции в файлах данных, когда ее нет, обновите до последней версии xtrabackup для своей версии mysql.
Повреждение вторичных индексов в таблице
Если вы можете выполнить mysqldump таблиц, данные должны быть целыми, и вам нужно либо запустить optimize table
или восстановить таблицы. Определите повреждение файла ibd, проверив каждый файл ibd с помощью innochecksum
и использовать pt-online-schema-schema-change
приложение для восстановления таблиц
pt-online-schema-change --dry-run --alter="ENGINE=INNODB" \
--user=your_username --ask-pass \
D=databasename,t=tablename
Замените --dry-run на --execute, если вы хотите выполнить задачу.
- Может быть вызвано шифрованием или сжатием таблицы
Оптимизировать таблицу: https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html
Innochecksum: https://www.percona.com/blog/2015/03/16/deep-dive-mysqls-innochecksum-tool/
pt-online-schema-change: https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html