Глава 17. Поиск неисправностей для MySQL Enterprise Backup

Чтобы расследовать проблемы относительно резервной копии и восстановления с продуктом MySQL Enterprise Backup, рассмотрите следующие аспекты:

17.1. Коды выхода MySQL Enterprise Backup

MySQL Enterprise Backup возвращает один из следующих кодов выхода при завершении. Значение каждого кода объяснено в таблице 17.1 со связанным выходным сообщением.

Таблица 17.1. Коды выхода и сообщения MySQL Enterprise Backup

Код выходаВыходное сообщение
0Все в порядке
1Неизвестная ошибка
2Внутренняя ошибка
3Один из необходимых файлов поврежден
4Один из необходимых файлов не найден
5Повреждена страница или заголовок
6Несоответствие в конфигурации и значении
7Неправильный аргумент
8Один или больше аргументов неизвестны
9Ошибка операции IO
10Ошибка выделения памяти
11Связь с сервером прервалась
12Продолжающаяся операция прервана пользователем
13У пользователя нет необходимых полномочий
14Нет свободного места на устройстве
15Версия образа не поддерживается этой версией meb
16Значение вне диапазона
17Ошибка Innodb
18Тайм-аут ожидания ресурса
19Сервер возвратил ошибку, выполняя sql

Команда mysqlbackup print-message берет код выхода, поставляемый опцией --error-code, и врзвращает соответствующее выходное сообщение в stdout. Пользователи могут, например, использовать скрипт, чтобы поймать код выхода, возвращенный mysqlbackup, а затем передать его print-message, чтобы получить выходное сообщение. См. описание для print-message .

17.2. Решение проблем с повреждениями

Иногда операционная система или аппаратные средства могут испортить страницу файла данных в местоположении, которое не вызывает ошибку базы данных, но препятствует mysqlbackup:

170225 10:46:18 PCR1INFO: Re-reading page at offset 0 in D:/temp/5.7_source/test/emp2.ibd
170225 10:46:18 PCR1INFO: Re-reading page at offset 0 in D:/temp/5.7_source/test/emp2.ibd
...
170225 10:46:26 PCR1 ERROR: Page at offset 0 in D:/temp/5.7_source/test/emp2.ibd seems corrupt!

У этих проблем могут быть различные причины. Вот некоторые предложения:

ВАЖНО: не рассматривайте проблемы как незначительное раздражение. Узнайте, что не так с системой, в чем причина проблемы, однако, такой поиск неисправностей выходит за рамки этого руководства.

17.3. Использование журналов MySQL Enterprise Backup

Помимо вывода сообщения MySQL Enterprise Backup в stderr и в файл журнала, прогресс и история каждой резервной копии также зарегистрированы в таблицах mysql.backup_progress и mysql.backup_history на поддержанных серверах (чтобы пропустить обновление этих двух таблиц, используйте опцию --no-history-logging).

Таблица backup_progress

Каждая строка таблицы backup_progress делает запись изменения состояния или сообщения от задания резервного копирования. Таблица backup_progress имеет следующие колонки:

mysql> DESCRIBE mysql.backup_progress;
+---------------+---------------+------+-----+----------------------+--------------------------------------------------+
| Field         | Type          | Null | Key | Default              | Extra                                            |
+---------------+---------------+------+-----+----------------------+--------------------------------------------------+
| id            | int           | NO   | PRI | NULL                 | auto_increment                                   |
| backup_id     | bigint        | NO   | MUL | NULL                 |                                                  |
| tool_name     | varchar(4096) | NO   |     | NULL                 |                                                  |
| error_code    | int           | NO   |     | NULL                 |                                                  |
| error_message | varchar(4096) | NO   |     | NULL                 |                                                  |
| current_time  | timestamp(3)  | NO   |     | CURRENT_TIMESTAMP(3) | DEFAULT_GENERATED on update CURRENT_TIMESTAMP(3) |
| current_state | varchar(200)  | NO   |     | NULL                 |                                                  |
+---------------+---------------+------+-----+----------------------+--------------------------------------------------+
7 rows in set (0.00 sec)

MySQL Enterprise Backup 8.0.19 и позже: Таблица backup_progress в формате InnoDB.

MySQL Enterprise Backup 8.0.18 и ранее: Таблица backup_progress в формате CSV. Можно запросить таблицу через клиент mysql или разобрать файл .CSV приложением или скриптом.

Вот некоторые способы использовать информацию в таблице backup_progress:

Таблица backup_history

Каждая строка в таблице backup_history делает запись деталей одной законченной резервной копии, созданной командой mysqlbackup. Колонки таблицы backup_history:

mysql> mysql> DESCRIBE mysql.backup_history;
+---------------------------+---------------+------+-----+---------------------+-------+
| Field                     | Type          | Null | Key | Default             | Extra |
+---------------------------+---------------+------+-----+---------------------+-------+
| backup_id                 | bigint(20)    | NO   | PRI | NULL                |       |
| tool_name                 | varchar(4096) | NO   |     | NULL                |       |
| start_time                | timestamp     | NO   |     | 0000-00-00 00:00:00 |       |
| end_time                  | timestamp     | NO   |     | 0000-00-00 00:00:00 |       |
| binlog_pos                | bigint(20)    | NO   |     | NULL                |       |
| binlog_file               | varchar(255)  | NO   |     | NULL                |       |
| compression_level         | int(11)       | NO   |     | NULL                |       |
| engines                   | varchar(100)  | NO   |     | NULL                |       |
| innodb_data_file_path     | varchar(2048) | NO   |     | NULL                |       |
| start_lsn                 | bigint(20)    | NO   |     | NULL                |       |
| end_lsn                   | bigint(20)    | NO   |     | NULL                |       |
| backup_type               | varchar(50)   | NO   |     | NULL                |       |
| backup_format             | varchar(50)   | NO   |     | NULL                |       |
| mysql_data_dir            | varchar(2048) | NO   |     | NULL                |       |
| innodb_data_home_dir      | varchar(2048) | NO   |     | NULL                |       |
| innodb_log_group_home_dir | varchar(2048) | NO   |     | NULL                |       |
| innodb_log_files_in_group | varchar(100)  | NO   |     | NULL                |       |
| innodb_log_file_size      | varchar(100)  | NO   |     | NULL                |       |
| backup_destination        | varchar(4096) | NO   |     | NULL                |       |
| lock_time                 | double(7,3)   | NO   |     | NULL                |       |
| exit_state                | varchar(10)   | NO   |     | NULL                |       |
| last_error                | varchar(4096) | NO   |     | NULL                |       |
| last_error_code           | int(11)       | NO   |     | NULL                |       |
| start_time_utc            | bigint(20)    | NO   |     | NULL                |       |
| end_time_utc              | bigint(20)    | NO   |     | NULL                |       |
| consistency_time_utc      | bigint(20)    | NO   |     | NULL                |       |
| meb_version               | varchar(20)   | NO   |     | 0.0.0               |       |
| server_uuid               | varchar(36)   | NO   |     | NULL                |       |
+---------------------------+---------------+------+-----+---------------------+-------+
28 rows in set (0.01 sec)

Поскольку успешная резервная копия всегда регистрируется как таковая в таблице backup_history, неудача в фазе apply-log команды backup-and-apply-log не отражена в таблице backup_history. Всегда важно проверить вывод mysqlbackup, чтобы видеть, закончена ли операция полностью без ошибки.

Вот информация о некоторых колонках backup_history и некоторые способы использовать эту информацию:

17.4. Использование декларации MySQL Enterprise Backup

Каждый резервный каталог включает некоторые файлы в подкаталоге meta, которые детализируют, как резервная копия была создана, и какие файлы это содержит. Файлы, содержащие эту информацию, известны коллективно как декларация.

mysqlbackup производит эти файлы для использования инструментами управления базой данных, он не использует или изменяет файлы декларации после их создания. Инструменты управления могут использовать декларацию во время диагноза и процедур поиска неисправностей, например, если оригинальный экземпляр MySQL был потерян полностью, и процесс восстановления включает более, чем копирование файлов назад к рабочему серверу MySQL.

Файлы в декларации включают: