Руководство по устранению неисправностей службы MariaDB
MariaDB — это система управления реляционными базами данных с открытым исходным кодом, широко используемая в различных сценариях применения. Хотя MariaDB обычно работает стабильно, в некоторых случаях вы можете столкнуться с проблемами службы или производительности. В этой статье подробно описывается, как устранять неполадки службы MariaDB в ServBay, включая типичные проблемы, шаги диагностики и решения. ServBay работает на операционной системе macOS и включает различные версии MariaDB, поэтому в некоторых командах необходимо указывать файлы конфигурации и каталоги для конкретной версии.
Частые проблемы и их решения
1. Служба MariaDB не запускается
Возможные причины
- Ошибка в файле конфигурации
- Порт занят
- Проблемы с разрешениями
Решения
Проверить файл конфигурации: Убедитесь, что синтаксис файла конфигурации
my.cnf
правильный, путь к файлу:bash/Applications/ServBay/etc/mariadb/11.3/my.cnf
1Используйте следующую команду для проверки файла конфигурации:
bashmysqld --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf --validate-config
1Проверить занятость порта: Убедитесь, что порт, используемый MariaDB (по умолчанию 3306), не занят другими процессами. Используйте следующую команду для проверки занятости порта:
bashlsof -i :3306
1Проверить разрешения: Убедитесь, что разрешения для каталога данных и файла конфигурации MariaDB правильные. Используйте следующие команды для проверки разрешений:
bashls -l /Applications/ServBay/db/mariadb/11.3 ls -l /Applications/ServBay/etc/mariadb/11.3/my.cnf
1
2Запустить службу: Попробуйте перезапустить службу MariaDB:
bashservbayctl restart mariadb 11.3
1
2. Невозможно подключиться к MariaDB
Возможные причины
- Служба MariaDB не работает
- Брандмауэр блокирует соединение
- Проблемы с правами пользователя
Решения
Проверить статус службы: Убедитесь, что служба MariaDB работает:
bashservbayctl status mariadb 11.3
1Проверить настройки брандмауэра: Убедитесь, что брандмауэр пропускает порт MariaDB (по умолчанию 3306):
bashsudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mysqld
1
2Проверить права пользователя: Убедитесь, что у пользователя достаточно прав для подключения к базе данных:
sqlSHOW GRANTS FOR 'your_username'@'localhost';
1Тестировать соединение: Используйте следующую команду для тестирования подключения:
bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p -h localhost -P 3306
1
3. Проблемы с производительностью
Возможные причины
- Неоптимизированные запросы
- Неправильная конфигурация кеша
- Отсутствие индексов
Решения
Оптимизировать запросы: Используйте
EXPLAIN
для анализа производительности запросов и их оптимизации:sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1Настроить кеш: Настройте параметры кеша в
my.cnf
, например:[mysqld] query_cache_size = 64M innodb_buffer_pool_size = 1G
1
2
3Создать индексы: Убедитесь, что столбцы для часто используемых запросов индексированы:
sqlCREATE INDEX idx_column_name ON your_table_name(column_name);
1
4. Сбой базы данных
Возможные причины
- Аппаратные сбои
- Конфликты программного обеспечения
- Ошибки конфигурации
Решения
Проверить журнал ошибок: Проверьте журнал ошибок MariaDB для выявления конкретной причины сбоя. Путь к журналу:
bash/Applications/ServBay/logs/mariadb/11.3.err
1Исправить базу данных: Используйте инструмент
mysqlcheck
для исправления базы данных:bashmysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p --auto-repair --all-databases
1Восстановить данные: Если файлы базы данных повреждены, можно восстановить данные из резервной копии. Путь к резервной копии:
bash/Applications/ServBay/backup/mariadb/11.3
1
5. Проблемы с резервным копированием и восстановлением
Возможные причины
- Поврежденный файл резервной копии
- Ошибка команды восстановления
Решения
Проверить файл резервной копии: Убедитесь, что файл резервной копии цел и не поврежден. Используйте следующую команду для проверки размера и целостности файла:
bashls -lh /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1Правильное восстановление базы данных: Используйте утилиту
mysql
для правильного восстановления базы данных:bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p your_database < /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1
Особый случай: ib_logfile0 was not found
и InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
Возможные причины
- Ошибка в версии MariaDB 11.5.1.
Журнал ошибок
240618 22:37:46 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 22:37:46 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 3323
2024-06-18 22:37:46 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 22:37:47 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 22:37:47 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 22:37:47 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 22:37:47 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 22:37:47 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 22:37:47 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 22:37:47 0 [ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
2024-06-18 22:37:47 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 22:37:47 0 [Note] InnoDB: Starting shutdown...
2024-06-18 22:37:47 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 22:37:47 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 22:37:47 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 22:37:47 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 22:37:47 0 [ERROR] Aborting
240618 22:37:48 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
240618 23:22:28 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 23:22:28 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 6667
2024-06-18 23:22:28 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 23:22:29 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 23:22:29 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 23:22:29 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 23:22:29 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 23:22:29 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 23:22:29 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 23:22:29 0 [ERROR] InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Log scan aborted at LSN 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 23:22:29 0 [Note] InnoDB: Starting shutdown...
2024-06-18 23:22:29 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 23:22:29 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 23:22:29 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 23:22:29 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 23:22:29 0 [ERROR] Aborting
240618 23:22:29 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Решения
См. статью Изменение конфигурации MariaDB, найдите my.cnf
и выполните следующие шаги:
Добавьте
innodb_force_recovery = 6
в раздел[mysqld]
файлаmy.cnf
Отредактируйте файл конфигурации
my.cnf
, найдите раздел[mysqld]
и добавьте следующую строку:iniinnodb_force_recovery = 6
1Запустите MariaDB
Используйте следующую команду для запуска MariaDB:
bashservbayctl start mariadb 11.5
1Создайте резервную копию MariaDB
Используйте команду
mysqldump
для создания резервной копии всех баз данных:bashmysqldump -uroot -p --all-databases --opt > /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1Отключение службы MariaDB
В панели управления ServBay отключите службу MariaDB версии 11.5.
Удалите
innodb_force_recovery = 6
из файлаmy.cnf
Отредактируйте файл конфигурации
my.cnf
и удалите следующую строку:iniinnodb_force_recovery = 6
1Переименуйте каталог
11.5
Переименуйте каталог данных MariaDB
11.5
в11.5.bak
:bashmv /Applications/ServBay/db/mariadb/11.5 /Applications/ServBay/db/mariadb/11.5.bak
1Смените версию MariaDB
Переключитесь на исправленную версию MariaDB 11.5.0 или на другую версию, например, 11.3 или 11.4.
Восстановить резервную копию MariaDB
Используйте команду
mysql
для восстановления базы данных:bashmysql -uroot -p < /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1
Заключение
MariaDB — это мощная и гибкая система управления базами данных, но в процессе использования могут возникнуть различные проблемы. Эта статья объясняет, как устранять неполадки службы MariaDB, включая диагностику и решения типичных проблем. Надеемся, что эта статья будет вам полезна. Если у вас есть вопросы или вам нужна дополнительная помощь, свяжитесь с нами.