Рейтинг:0

Полностью отключить InnoDB в MariaDB 10.6

флаг tm

Не совсем уверен, стоит ли спрашивать об этом здесь или на dba.stackexchange.com, но я подумал, что здесь может быть более подходящим, поскольку это проблема с конфигурацией сервера.

У меня есть совершенно новая установка MariaDB 10.6.5 на Ubuntu 20.04.

Я использовал собственные репозитории MariaDB, которые можно найти по этому URL-адресу - https://mariadb.org/download/?t=repo-config&d=20.04+%22focal%22&v=10.6&r_m=one

Следуя инструкциям по ссылке выше, все устанавливается нормально, но после этого все начинает запутываться.

У меня есть другая машина с Ubuntu 20.04 и MariaDB 10.3.32, и все работает нормально благодаря выполнению этих запросов после установки:

ИЗМЕНИТЬ ТАБЛИЦУ mysql.innodb_index_stats ИЗМЕНИТЬ имя_таблицы имя_таблицы VARCHAR(64) НАБОР СИМВОЛОВ utf8 COLLATE utf8_bin NOT NULL;
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='mysql' AND engine='InnoDB';

а затем добавить следующие строки в [mysqld] часть /etc/mysql/my.cnf:

пропустить-innoDB
механизм хранения по умолчанию = MyISAM

Я попытался сделать то же самое для установки 10.6 (добавив 2 строки внутри [mysqld] раздел в /etc/mysql/mariadb.conf.d/50-server.cnf), но по какой-то причине InnoDB все еще активен и по умолчанию после того, как я выдаю ШОУ ДВИГАТЕЛИ; запрос в консоли.

Еще одна вещь, которую я заметил, это новый система база данных, которая также использует InnoDB, и я нигде не могу найти информацию о том, как от нее избавиться. После удаления базы у меня возникли проблемы и пришлось все переустанавливать.

Причина, по которой мне это нужно, в основном из-за использования дешевых машин с 1 ГБ ОЗУ или меньше, где MyISAM по-прежнему остается королем.

//РЕДАКТИРОВАТЬ:

Вот результат my_print_defaults --mysqld --defaults-file=/etc/mysql/mariadb.cnf

--socket=/run/mysqld/mysqld.sock
--skip-innodb
--default-storage-engine=MyISAM
--user=mysql
--pid-file=/run/mysqld/mysqld.pid
--basedir=/usr
--datadir=/var/lib/mysql
--tmpdir=/tmp
--lc-messages-dir=/usr/share/mysql
--lc-messages=en_US
--skip-внешняя-блокировка
--bind-адрес=127.0.0.1
--expire_logs_days=10
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci

Вот статус systemctl mariadb.service

mariadb.service — сервер базы данных MariaDB 10.6.5
     Загружено: загружено (/lib/systemd/system/mariadb.service; включено; предустановка поставщика: включена)
    Вставка: /etc/systemd/system/mariadb.service.d
             ââмигрировал из-my.cnf-settings.conf
     Активно: активно (работает) с понедельника 27.12.2021, 08:13:02; 3 мин 57 с назад
       Документы: мужчина: mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Процесс: 2884 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Процесс: 2889 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (код=выход, статус=0/УСПЕХ)
    Процесс: 2899 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [$? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || выход 1 (с>
    Процесс: 2924 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (код=выход, статус=0/УСПЕХ)
    Процесс: 2926 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
   Основной PID: 2907 (mariadbd)
     Статус: "Принимаю ваши SQL-запросы сейчас..."
      Заданий: 10 (лимит: 9451)
     Память: 63,1 Мб
     Группа CG: /system.slice/mariadb.service
             ââ2907 /usr/sbin/mariadbd

27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 3 [Предупреждение] Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: НЕТ)
27 декабря 08:13:02 testhost mariadbd[2907]: 27-12-2021 8:13:02 4 [Предупреждение] Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: НЕТ)
27 декабря 08:13:02 testhost /etc/mysql/debian-start[2931]: Ищем «mysql» как: /usr/bin/mysql
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: поиск 'mysqlcheck' как: /usr/bin/mysqlcheck
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: проверка версии не удалась. Получил следующую ошибку при вызове клиента командной строки mysql
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: ОШИБКА 1045 (28000): Доступ запрещен для пользователя «root» @ «localhost» (с использованием пароля: НЕТ)
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: FATAL ERROR: Ошибка обновления
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2941]: проверка небезопасных учетных записей root.
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 5 [Предупреждение] Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: НЕТ)
27 декабря 08:13:02 testhost debian-start[2944]: ОШИБКА 1045 (28000): доступ запрещен для пользователя «root» @ «localhost» (с использованием пароля: НЕТ)

А вот журналctl -u mariadb.service -n 30

27 декабря 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Примечание] /usr/sbin/mariadbd (сервер 10.6.5-MariaDB-1:10.6.5+maria~focal ) начиная с процесса 2907...
27 декабря 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Примечание] InnoDB: сжатые таблицы используют zlib 1.2.11
27 декабря 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Примечание] InnoDB: Количество пулов: 1
27 декабря 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Примечание] InnoDB: использование инструкций crc32 + pclmulqdq
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: использование родного AIO для Linux
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: инициализация пула буферов, общий размер = 134217728, размер фрагмента = 134217728
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: завершена инициализация буферного пула
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: активны 128 сегментов отката.
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: создание общего табличного пространства для временных таблиц
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: установка размера файла './ibtmp1' равным 12 МБ. Физически запись файла в полном объеме; Пожалуйста, подождите ...
27 декабря 08:13:02 testhost mariadbd[2907]: 27-12-2021 8:13:02 0 [Примечание] InnoDB: размер файла './ibtmp1' теперь составляет 12 МБ.
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: запущена версия 10.6.5; порядковый номер журнала 33062; идентификатор транзакции 4
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: загрузка пулов буферов из /var/lib/mysql/ib_buffer_pool
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] Плагин FEEDBACK отключен.
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] InnoDB: загрузка пула буферов завершена в 211227 8:13:02
27 декабря 08:13:02 testhost mariadbd[2907]: 27-12-2021 8:13:02 0 [Примечание] Сокет сервера создан на IP: «0.0.0.0».
27 декабря 08:13:02 testhost mariadbd[2907]: 27-12-2021 8:13:02 0 [Примечание] Сокет сервера создан на IP: '::'.
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Примечание] /usr/sbin/mariadbd: готово для подключения.
27 декабря, 08:13:02 testhost mariadbd[2907]: Версия: '10.6.5-MariaDB-1:10.6.5+maria~focal', сокет: '/run/mysqld/mysqld.sock', порт: 3306 mariadb.org бинарный дистрибутив
27 декабря, 08:13:02 testhost systemd[1]: запущен сервер базы данных MariaDB 10.6.5.
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 3 [Предупреждение] Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: НЕТ)
27 декабря 08:13:02 testhost mariadbd[2907]: 27-12-2021 8:13:02 4 [Предупреждение] Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: НЕТ)
27 декабря 08:13:02 testhost /etc/mysql/debian-start[2931]: Ищем «mysql» как: /usr/bin/mysql
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: поиск 'mysqlcheck' как: /usr/bin/mysqlcheck
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: проверка версии не удалась. Получил следующую ошибку при вызове клиента командной строки mysql
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: ОШИБКА 1045 (28000): Доступ запрещен для пользователя «root» @ «localhost» (с использованием пароля: НЕТ)
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2931]: FATAL ERROR: Ошибка обновления
27 декабря, 08:13:02 testhost /etc/mysql/debian-start[2941]: проверка небезопасных учетных записей root.
27 декабря 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 5 [Предупреждение] Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: НЕТ)
27 декабря 08:13:02 testhost debian-start[2944]: ОШИБКА 1045 (28000): доступ запрещен для пользователя «root» @ «localhost» (с использованием пароля: НЕТ)
Рейтинг:1
флаг cn

Дэниел Блэк на MariaDB Zulip протестировал это, и в контейнере все работало достаточно хорошо:

$ podman run --rm --env MARIADB_RANDOM_ROOT_PASSWORD=1 mariadb:10.6 --skip-innodb --default-storage-engine=Aria
2021-12-23 05:54:16+00:00 [Примечание] [Точка входа]: сценарий точки входа для сервера MariaDB 1:10.6.5+maria~focal запущен.
2021-12-23 05:54:17+00:00 [Примечание] [точка входа]: переключение на выделенного пользователя «mysql»
2021-12-23 05:54:17+00:00 [Примечание] [Точка входа]: сценарий точки входа для сервера MariaDB 1:10.6.5+maria~focal запущен.
...
2021-12-23 5:54:27 0 [Примечание] Плагин InnoDB отключен.
2021-12-23 5:54:27 0 [Примечание] Плагин «ОТЗЫВЫ» отключен.
2021-12-23 5:54:27 0 [Предупреждение] Вам нужно использовать --log-bin, чтобы --expire-logs-days или --binlog-expire-logs-seconds работали.
2021-12-23 5:54:27 0 [Примечание] Сокет сервера создан на IP: «0.0.0.0».
2021-12-23 5:54:27 0 [Примечание] Сокет сервера создан на IP: '::'.
23.12.2021, 5:54:27 0 [Предупреждение] Запись 'proxy_priv' '@% root@9df410ee481f' игнорируется в режиме --skip-name-resolve.
2021-12-23 5:54:27 0 [Примечание] mysqld: готов к соединениям.
Версия: '10.6.5-MariaDB-1:10.6.5+maria~focal', сокет: '/run/mysqld/mysqld.sock', порт: 3306, двоичный дистрибутив mariadb.org

показать двигатели:

$ podman exec optimistic_kalam mariadb -p'4(V_6icy&6BPL4wt*cG!=vi"rh8gvW;Q' -e 'показать двигатели'
Поддержка движка Комментарий Транзакции Точки сохранения XA
CSV ДА Сохраняет таблицы в виде файлов CSV НЕТ НЕТ НЕТ
MRG_MyISAM ДА Коллекция идентичных таблиц MyISAM НЕТ НЕТ НЕТ
ПАМЯТЬ ДА Основано на хэше, хранится в памяти, полезно для временных таблиц НЕТ НЕТ НЕТ
Aria DEFAULT Защищенные от сбоев столы с наследием MyISAM. Используется для внутренних временных таблиц и таблиц привилегий НЕТ НЕТ НЕТ
MyISAM ДА Нетранзакционный механизм с хорошей производительностью и небольшим объемом данных НЕТ НЕТ НЕТ
ПОСЛЕДОВАТЕЛЬНОСТЬ ДА Сгенерированные таблицы, заполненные последовательными значениями ДА НЕТ ДА
InnoDB NO Поддерживает транзакции, блокировку на уровне строк, внешние ключи и шифрование для таблиц NULL NULL NULL
PERFORMANCE_SCHEMA YES Схема производительности NO NO NO

mysql.transaction_registry использует его, так как ему нужен механизм хранения транзакций.

danblack avatar
флаг dz
Контейнеры note запускают mysql_install_db в той же конфигурации, и там достаточно ума, чтобы обнаружить отсутствие innodb и соответствующим образом настроить. Если вы выполняете новую установку, удалите /var/lib/mysql и `mysql_install_db --user mysql` после изменения конфигурации.
danblack avatar
флаг dz
Не также в моем примере, что [~markusjm] представил, что я использовал Aria вместо MyISAM для безопасности при сбоях. Должен также содержать аналогичные параметры дружественности к памяти.
Sledge Hammer avatar
флаг tm
@markusjm и @danblack — спасибо вам обоим за помощь, но я до сих пор не знаю, как отключить движок через файлы конфигурации. Я попробовал приведенный выше пример в консоли после остановки службы, и InnoDB действительно отключен, но когда я добавляю параметры в файл конфигурации, о которых я упоминал в вопросе, ничего не происходит. Мне стало любопытно, и я заменил всю папку `/etc/mysql` на папку из 10.3, и она отлично работает, но эти файлы были из еще более старой версии, и я боюсь, что в какой-то момент они перестанут работать, и я бы предпочел иметь более актуальную конфигурацию.
danblack avatar
флаг dz
Включите информацию в свой вопрос. «ничего не происходит», вероятно, он не запускается, однако я не могу сказать, почему без дополнительной информации. Показать журнал сервера `journalctl -u mariadb.service -n 30` и `systemctl status mariadb.service`. Замена конфигурацией 10.3 не рекомендуется, так как устаревшие параметры могли произойти, как было предложено. Для ясности вопроса включите `my_print_defaults --mysqld`, чтобы увидеть, какие элементы конфигурации установлены.
Sledge Hammer avatar
флаг tm
@danblack - Под «ничего не происходит» я имею в виду, что все то же самое, что я уже указал в вопросе - я добавляю изменения в файл, служба запускается нормально, но по какой-то причине эти параметры конфигурации игнорируются, и InnoDB все еще активен и используется по умолчанию, когда я запускаю `SHOW ENGINES;`. Я добавил вывод журналов, которые вы хотели... Я установил пароль для root, так что это должно быть причиной корневых ошибок. Я планирую стереть всю машину и начать с нуля в ближайшие несколько дней, чтобы посмотреть, удалось ли мне что-то испортить, хотя я сомневаюсь, что результат будет другим.
danblack avatar
флаг dz
Следуйте инструкциям по удалению каталога данных в первом комментарии и повторно инициализируйте с помощью `mysql_install_db`. Я посмотрел, хотя код и innodb, похоже, инициализируются, если эти его файлы есть.
Sledge Hammer avatar
флаг tm
@danblack - уже пробовал это до моего предыдущего комментария, и результат был таким же. У меня была отредактированная конфигурация с двумя добавленными параметрами, и я сделал `service mariadb stop`, `rm -rf /var/lib/mysql/*`, а затем `mysql_install_db --user mysql` и `service mariadb start`, и все еще имел innodb Бег.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.