@hermaeus_seeker

Как исправить сбой MariaDB в Docker при выполнении миграции, если возникают ошибки «MySQL server has gone away» и «InnoDB Assertion failure»?

При выполнении миграций в контейнере Docker с БД MariaDB с использованием PHP фреймворка Yii2 возникают ошибки, такие как "MySQL server has gone away" и последующие сбои с сообщениями об ошибке в InnoDB.

- Ранее такой ошибки не было при тех же конфигурациях, она стала проявляться только в последнее время
- Проверено, что проблема проявляется на разных компьютерах других участников проекта
- Вероятней дело не в миграциях, ибо они выполняют простые запросы создания таблиц и некоторых записей в БД. Те же миграции без проблем срабатывали в OSPanel, рабочем и тестовом сервере. Пример миграции, на которой происходит ошибка: https://dpaste.org/RygHY
- Обновлен с `mariadb:10.3.36` на `mariadb:10.3.39` — не помогло, ошибка осталась
- При использовании образа `image: mysql:5.7.39` — всё работает корректно

Вот примеры ошибок из логов:
1. При выполнении миграции:
Exception: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

Полный лог: https://dpaste.org/UhMrn

2. Логи MariaDB показывают сбои, такие как:
InnoDB: Assertion failure in file /home/buildbot/buildbot/build/mariadb-10.3.39/storage/innobase/fil/fil0fil.cc line 962

Полный лог: https://dpaste.org/jjRef

Файл docker-compose.yml:
version: '3.7'

services:
  keystore_php:
    build:
      context: ./.docker
    container_name: keystore_php
    extra_hosts:
      - host.docker.internal:host-gateway
    ports:
      - '8001:80'
    volumes:
      - ./.docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
      - ./:/var/www/html
    user: "ubuntu"
    networks:
      - shared_network
    depends_on:
      - keystore_mysql
      - keystore_rabbitmq

  keystore_mysql:
    image: mariadb:10.3.39
    container_name: keystore_mysql
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ".docker/data/db:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-keystore}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-keystore}
      MYSQL_USER: ${MYSQL_USER:-keystore}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-keystore}
    ports:
      - '3336:3306'
    networks:
      - shared_network

  keystore_rabbitmq:
    build:
      context: ./.docker/rabbitmq
    container_name: keystore_rabbitmq
    ports:
      - "15675:15672"
    configs:
      - source: rabbitmq_conf
        target: /etc/rabbitmq/conf.d/10-defaults.conf
    healthcheck:
      test: rabbitmq-diagnostics -q ping
      interval: 30s
      timeout: 10s
      retries: 5
    networks:
      - shared_network

networks:
  shared_network:
    name: my_shared_network

configs:
  rabbitmq_conf:
    file: ./.docker/rabbitmq/10-defaults.conf-develop
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы