Устранение неполадок с повреждением базы данных в База данных Azure для MySQL — гибкий сервер

ОБЛАСТЬ ПРИМЕНЕНИЯ: Отдельный сервер Базы данных Azure MySQL Гибкий сервер Базы данных Azure MySQL

Важно!

База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"

Повреждение базы данных может привести к простою приложения. Также важно вовремя устранять проблемы с повреждением, чтобы избежать потери данных. При возникновении повреждения базы данных эта ошибка отображается в журналах сервера: InnoDB: Database page corruption on disk or a failed.

Из этой статьи вы узнаете, как устранить проблемы с повреждением базы данных или таблицы. База данных Azure для MySQL гибкий сервер использует подсистему InnoDB. В нем предусмотрены автоматизированные операции по проверке повреждений и ремонту. InnoDB проверяет наличие поврежденных страниц, вычисляя контрольные суммы на каждой прочитанной странице. Если он находит несоответствие проверка sum, он автоматически остановит экземпляр гибкого сервера База данных Azure для MySQL.

Попробуйте следующие варианты, чтобы быстро устранить проблемы с повреждением базы данных.

Перезагрузите ваш сервер MySQL

Обычно вы замечаете, что база данных или таблица повреждены, когда ваше приложение обращается к таблице или базе данных. InnoDB имеет механизм восстановления после сбоя, который может решить большинство проблем при перезапуске сервера. Таким образом, перезапуск сервера может помочь серверу восстановиться после сбоя, что привело к тому, что база данных будет находиться в плохом состоянии.

Используйте метод дампа и восстановления

Мы рекомендуем вам решать проблемы с повреждением, используя метод резервная копия и восстановление. Этот метод предполагает:

  1. Доступ к поврежденной таблице.
  2. Использование утилиты mysqldump для создания логической резервной копии таблицы. Резервная копия сохранит структуру таблицы и данные в ней.
  3. Перезагрузка таблицы в базу данных.

Сделайте резервную копию вашей базы данных или таблиц

Важно!

Создайте файл резервной копии из командной строки с помощью mysqldump. Используйте следующую команду:

$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]

Описание параметров:

  • [ssl-cert=/path/to/pem]: путь к сертификату SSL. Загрузите сертификат SSL на свой клиентский компьютер и укажите путь к нему в команде. Не используйте этот параметр, если SSL отключен.
  • [host]: гибкий экземпляр сервера База данных Azure для MySQL.
  • [uname]: имя пользователя администратора вашего сервера.
  • [pass]: пароль для вашего администратора.
  • [dbname]: имя вашей базы данных.
  • [backupfile.sql]: имя файла резервной копии базы данных.

Важно!

  • Для База данных Azure для MySQL отдельный сервер используйте формат admin-user@servername для замены myserveradmin в следующих командах.
  • Для База данных Azure для MySQL гибкого сервера используйте формат admin-user для замены myserveradmin в следующих командах.

Если определенная таблица повреждена, выберите определенные таблицы в базе данных для резервного копирования:

$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql

Чтобы создать резервную копию одной или нескольких баз данных, используйте переключатель --database и перечислите имена баз данных, разделенные пробелами:

$ mysqldump --ssl-cert=</path/to/pem>  -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Восстановите вашу базу данных или таблицы

Следующие шаги показывают, как восстановить вашу базу данных или таблицы. После создания файла резервной копии вы можете восстановить таблицы или базы данных с помощью утилиты mysql. Выполните следующую команду:

mysql  --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

Вот пример, который восстанавливает testdb из файла резервной копии, созданного с помощью mysqldump:

Важно!

  • Для База данных Azure для MySQL одного сервера используйте формат admin-user@servername для замены myserveradmin в следующей команде.
  • Для База данных Azure для MySQL гибкого сервера используйте формат admin-user для замены myserveradmin в следующей команде.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql

Следующие шаги

Если предыдущие шаги не устранили проблему, вы всегда можете восстановить весь сервер: