Не удается запустить контейнер mysql в Docker на Mac.

Вопрос или проблема

Я пытаюсь запустить контейнер mysql docker на Mac, но столкнулся со следующей ошибкой. Я уже пробовал заново загрузить образы и даже переустановить Docker Desktop, но все равно не работает. Кто-нибудь знает, в чем может быть проблема? Спасибо

2024-11-05 17:40:10 2024-11-05T09:40:10.807036Z 1 [System] [MY-013576] [InnoDB] Инициализация InnoDB начата.
2024-11-05 17:40:11 2024-11-05T09:40:11.775220Z 1 [System] [MY-013577] [InnoDB] Инициализация InnoDB завершена.
2024-11-05 17:40:11 2024-11-05T09:40:11.984363Z 0 [ERROR] [MY-013183] [InnoDB] Ошибка утверждения: fut0lst.ic:81:addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA поток 140642114078464
2024-11-05 17:40:11 InnoDB: Мы преднамеренно вызываем ловушку памяти.
2024-11-05 17:40:11 InnoDB: Отправьте подробный отчет об ошибке на http://bugs.mysql.com.
2024-11-05 17:40:11 InnoDB: Если вы получаете повторяющиеся ошибки утверждения или сбои, даже
2024-11-05 17:40:11 InnoDB: сразу после запуска mysqld, возможно,
2024-11-05 17:40:11 InnoDB: произошла порча в пространстве таблиц InnoDB. Пожалуйста, обратитесь к
2024-11-05 17:40:11 InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html
2024-11-05 17:40:11 InnoDB: о принудительном восстановлении.
2024-11-05 17:40:11 2024-11-05T09:40:11Z UTC - mysqld получил сигнал 6 ;
2024-11-05 17:40:11 Скорее всего, вы столкнулись с ошибкой, но эта ошибка также может быть вызвана неисправным оборудованием.
2024-11-05 17:40:11 BuildID[sha1]=6b049f17400f850658b2eb3ff165ec9a085d9655
2024-11-05 17:40:11 Указатель потока: 0x7fe978000b60
2024-11-05 17:40:11 Попытка выполнить обратный трассировку. Вы можете использовать следующую информацию, чтобы выяснить
2024-11-05 17:40:11, где mysqld завершил работу. Если вы не видите сообщений после этого, что-то пошло
2024-11-05 17:40:11 ужасно не так...
2024-11-05 17:40:11 stack_bottom = 7fe9cb3ffb10 thread_stack 0x100000
2024-11-05 17:40:11 /usr/sbin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x41) [0x213de91]
2024-11-05 17:40:11 /usr/sbin/mysqld(print_fatal_signal(int)+0x387) [0xfdeac7]
2024-11-05 17:40:11 /usr/sbin/mysqld(my_server_abort()+0x7e) [0xfdec1e]
2024-11-05 17:40:11 /usr/sbin/mysqld(my_abort()+0xe) [0x2137c7e]
2024-11-05 17:40:11 /usr/sbin/mysqld(ut_dbg_assertion_failed(char const*, char const*, unsigned long)+0x33a) [0x243b28a]
2024-11-05 17:40:11 /usr/sbin/mysqld() [0x2408158]
2024-11-05 17:40:11 /usr/sbin/mysqld() [0x2408d44]
2024-11-05 17:40:11 /usr/sbin/mysqld(trx_purge(unsigned long, unsigned long, bool)+0xeb) [0x240ba6b]
2024-11-05 17:40:11 /usr/sbin/mysqld(srv_purge_coordinator_thread()+0x4c2) [0x23de3d2]
2024-11-05 17:40:11 /usr/sbin/mysqld(void Detached_thread::operator()<void (*)()>(void (*&&)())+0xca) [0x22fd0fa]
2024-11-05 17:40:11 /lib64/libstdc++.so.6(+0xc2ba3) [0x7fea0d2c2ba3]
2024-11-05 17:40:11 /lib64/libpthread.so.0(+0x81da) [0x7fea0ec081da]
2024-11-05 17:40:11 /lib64/libc.so.6(clone+0x43) [0x7fea0c639e73]
2024-11-05 17:40:11 
2024-11-05 17:40:11 Попытка получить некоторые переменные.
2024-11-05 17:40:11 Некоторые указатели могут быть недействительными и вызвать сбой дампа.
2024-11-05 17:40:11 Запрос (0): является недействительным указателем
2024-11-05 17:40:11 ID соединения (ID потока): 0
2024-11-05 17:40:11 Статус: НЕ УБИТО
2024-11-05 17:40:11 
2024-11-05 17:40:11 Страница справки на http://dev.mysql.com/doc/mysql/en/crashing.html содержит
2024-11-05 17:40:11 информацию, которая должна помочь вам выяснить, что вызывает сбой.

Ответ или решение

Система управления базами данных MySQL, запущенная в контейнере Docker на Mac, иногда может сталкиваться с проблемами при запуске. Исходя из вашего описания ситуации, вы получили ошибку, связанной с InnoDB. Давайте разберем возможные причины и решения этой проблемы.

Обзор ошибки

Как видно из вашего лога, процесс MySQL завершился аварийно на этапе инициализации InnoDB:

[ERROR] [MY-013183] [InnoDB] Assertion failure: fut0lst.ic:81:addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA thread 140642114078464

Это указывает на сбой в работе механизма хранения InnoDB, который может быть вызван несколькими факторами:

  1. Коррупция файлов данных InnoDB.
  2. Проблемы в настройках конфигурации MySQL.
  3. Конфликты версий между Docker-образом и самой системой MySQL.

Потенциальные решения

  1. Удаление и повторное создание данных:
    Если у вас нет незаменимых данных или временных файлов, попробуйте удалить старые данные InnoDB и начать с чистого листа:

    docker rm -f <container_name>
    docker volume rm <volume_name>
  2. Запуск с параметрами восстановления:
    Если у вас есть важные данные, попробуйте запустить MySQL с параметрами принудительного восстановления. Для этого добавьте переменную окружения в команду запуска контейнера:

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest --innodb-force-recovery=1

    Увеличивайте значение innodb-force-recovery от 1 до 6, чтобы попытаться восстановить данные.

  3. Проверка версий:
    Убедитесь, что вы используете совместимые версии Docker и MySQL. Выполните обновление как Docker, так и образа MySQL перед повторной попыткой:

    docker pull mysql:latest
  4. Проверка конфигурации Docker:
    Убедитесь, что конфигурация вашего Docker Desktop правильно настроена, и достаточно доступных ресурсов (CPU, RAM). Параметры по умолчанию иногда недостаточны для запуска MySQL.

  5. Просмотр логов:
    Изучите дополнительные логи MySQL на предмет других ошибок или предупреждений. Вы можете сделать это, подключившись к контейнеру:

    docker logs <container_name>
  6. Тестирование на другом окружении:
    Если проблема не решается, попробуйте запустить тот же образ на другой машине или в другом окружении (например, в Linux), чтобы исключить индивидуальные проблемы с вашим Mac.

Заключение

Ошибки и сбои при запуске MySQL в Docker могут иметь различные причины, но часто они связаны с коррупцией данных, конфликтом версий или неправильной конфигурацией. Попробуйте предложенные выше методы для устранения проблемы. Если ни одно из решений не помогло, возможно, стоит обратиться за дополнительной поддержкой на специализированные форумы или в службу поддержки MySQL.

Оцените материал
Добавить комментарий

Капча загружается...