Устранение неполадок с повреждением базы данных в База данных 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 проверяет наличие поврежденных страниц, вычисляя контрольные суммы на каждой прочитанной странице. Если он находит несоответствие контрольной суммы, он автоматически остановит База данных Azure для MySQL гибкий экземпляр сервера.
Попробуйте следующие варианты, чтобы быстро устранить проблемы с повреждением базы данных.
Перезагрузите ваш сервер MySQL
Обычно вы замечаете, что база данных или таблица повреждены, когда ваше приложение обращается к таблице или базе данных. InnoDB имеет механизм восстановления после сбоя, который может решить большинство проблем при перезапуске сервера. Таким образом, перезапуск сервера может помочь серверу восстановиться после сбоя, что привело к тому, что база данных будет находиться в плохом состоянии.
Используйте метод дампа и восстановления
Мы рекомендуем вам решать проблемы с повреждением, используя метод резервная копия и восстановление. Этот метод предполагает:
- Доступ к поврежденной таблице.
- Использование утилиты mysqldump для создания логической резервной копии таблицы. Резервная копия сохранит структуру таблицы и данные в ней.
- Перезагрузка таблицы в базу данных.
Сделайте резервную копию вашей базы данных или таблиц
Внимание
- Убедитесь, что вы настроили правило брандмауэра для доступа к серверу с вашего клиентского компьютера. Дополнительные сведения см. в статье о настройке правила брандмауэра на База данных Azure для MySQL одном сервере и настройке правила брандмауэра на База данных Azure для MySQL гибком сервере.
- Используйте опцию
--ssl-cert
SSL для mysqldump, если у вас включен SSL.
Создайте файл резервной копии из командной строки с помощью 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
Следующие шаги
Если предыдущие шаги не устранили проблему, вы всегда можете восстановить весь сервер: