Назад | Перейти на главную страницу

Почему Mariabackup считает, что моя сжатая таблица повреждена?

У меня есть база данных MariaDB (версия 10.2), для которой я пытаюсь создать резервную копию с помощью Mariabackup (официальная вилка XtraBackup от Percona). И сервер БД, и инструмент резервного копирования устанавливаются из репозитория MariaDB Ubuntu для версии 10.2.

После переноса задания резервного копирования на другой сервер из-за сбоя оборудования, mariabackup теперь не может создать резервную копию определенной таблицы. Из журналов stderr:

[00] 2019-09-10 01:00:01 Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: /var/run/mysqld/mysqld.sock
[00] 2019-09-10 01:00:01 Using server version 10.2.21-MariaDB-10.2.21+maria~trusty-log
mariabackup based on MariaDB server 10.2.23-MariaDB debian-linux-gnu (x86_64)
[00] 2019-09-10 01:00:01 uses posix_fadvise().
[00] 2019-09-10 01:00:01 cd to /var/lib/mysql/
[00] 2019-09-10 01:00:01 open files limit requested 65535, set to 65535
[00] 2019-09-10 01:00:01 mariabackup: using the following InnoDB configuration:
[00] 2019-09-10 01:00:01 innodb_data_home_dir =
[00] 2019-09-10 01:00:01 innodb_data_file_path = ibdata1:12M:autoextend
[00] 2019-09-10 01:00:01 innodb_log_group_home_dir = ./
[00] 2019-09-10 01:00:01 InnoDB: Using Linux native AIO
[00] 2019-09-10 01:00:01 using O_DIRECT
2019-09-10  1:00:01 140221145274240 [Note] InnoDB: Number of pools: 1
[00] 2019-09-10 01:00:01 mariabackup: Generating a list of tablespaces
…big snip…
2019-09-10  1:42:47 140220995024640 [Note] InnoDB: Read redo log up to LSN=59053785766400
[00] 2019-09-10 01:42:47 >> log scanned up to (59053785785093)
[00] 2019-09-10 01:42:48 >> log scanned up to (59053785831385)
[03] 2019-09-10 01:42:49 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:49 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:49 Database page corruption detected at page 993055, retrying...
[00] 2019-09-10 01:42:49 >> log scanned up to (59053785894073)
[03] 2019-09-10 01:42:49 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:50 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:50 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:50 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:50 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:50 Database page corruption detected at page 993055, retrying...
[03] 2019-09-10 01:42:50 Error: failed to read page after 10 retries. File ./database_name/table_name.ibd seems to be corrupted.
2019-09-10  1:42:50 140220969846528 [Note] InnoDB: Page dump in ascii and hex (8192 bytes):
…snipped page dump…
InnoDB: End of page dump
2019-09-10  1:42:50 140220969846528 [Note] InnoDB: Compressed page type (11); stored checksum in field1 1097107227; calculated checksums for field1: crc32 1097107227, innodb 1095451288, none 3735928559; page LSN 57324874439498; page number (if stored to page already) 993055; space id (if stored to page already) 4854
InnoDB: Page may be a compressed BLOB page
[03] 2019-09-10 01:42:50 mariabackup: xtrabackup_copy_datafile() failed.
[00] FATAL ERROR: 2019-09-10 01:42:50 failed to copy datafile.

Я проверил целостность этой реплики относительно первичной базы данных, используя pt-table-checksum, который не возвратил ошибок, поэтому я не думаю, что таблица действительно повреждена.

Рассматриваемая таблица является сжатой (от SHOW CREATE TABLE: ENGINE=InnoDB AUTO_INCREMENT=… DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED). я нашел открытая ошибка против Xtrabackup это похоже на эту ситуацию, но документация MariaDB по сжатию страниц кажется, что это было исправлено в mariabackup:

Обратите внимание, что Percona XtraBackup (начиная с версии 2.4) не будет работать со сжатием MariaDB. Однако вилка MariaDB, MariaDB Backup, будет работать со сжатием.

Это не единственная сжатая таблица в базе данных, но, похоже, это первая, до которой досталось средство резервного копирования. Я бы предпочел не восстанавливать эти таблицы как несжатые.

Это похоже на ошибку в Mariabackup, но я открыт и для других предложений.

РЕДАКТИРОВАТЬ: я открыл билет: MDEV-20588.