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