Bug 26232

Summary: Проблемы с default-storage-engine = InnoDB
Product: Branch p6 Reporter: Dank Bagryantsev <4alt>
Component: MySQL-serverAssignee: Andrey Cherepanov <cas>
Status: CLOSED FIXED QA Contact: QA p6 <qa-p6>
Severity: normal    
Priority: P3 CC: hiddenman, jackie.rosen, mike, rider, vsu
Version: не указана   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 26742    

Description Dank Bagryantsev 2011-09-05 03:28:14 MSK
Минимальный p6 с последними обновлениями на данный момент
Устанавливаем MySQL-server (5.1.56-alt4)
включаем поддержку InnoDB в my.cnf
и также ставим опцию default-storage-engine = InnoDB
при попытке старта в консоле root'a выдаются ошибки:
service mysqld start

Installing all prepared tables
110904 21:10:21 [Note] Plugin 'InnoDB' is disabled.
110904 21:10:21 [ERROR] Unknown/unsupported table type: InnoDB
110904 21:10:21 [ERROR] Aborting

110904 21:10:21 [Note] /usr/sbin/mysqld: Shutdown complete

Installation of system tables failed!

Examine the logs in /var/lib/mysql/log for more information.
You can also try to start the mysqld daemon with:
/usr/sbin/mysqld --skip-grant &
You can use the command line tool
/usr/bin/mysql to connect to the mysql
database and look at the grant tables:

shell> /usr/bin/mysql -u root mysql
mysql> show tables

Соответственно системная база mysql не создается.

Если закомментировать строку с default-storage-engine = InnoDB
то системная база создается, естественно как MyISAM

Если на данном этапе снова включить опцию default-storage-engine = InnoDB
то в консоле root'a при старте mysql снова выдает ошибки:

110904 21:20:29 [Note] Plugin 'InnoDB' is disabled.
110904 21:20:29 [ERROR] Unknown/unsupported table type: InnoDB
110904 21:20:29 [ERROR] Aborting

110904 21:20:29 [Note] /usr/sbin/mysqld: Shutdown complete

Installation of system tables failed!

Examine the logs in /var/lib/mysql/log for more information.
You can also try to start the mysqld daemon with:
/usr/sbin/mysqld --skip-grant &
You can use the command line tool
/usr/bin/mysql to connect to the mysql
database and look at the grant tables:

shell> /usr/bin/mysql -u root mysql
mysql> show tables

Но тем не менее mysql стартует и вроде как работает, и в его переменных установлена опция default-storage-engine = InnoDB
При этом в логе никаких ошибок:

2011-Sep-04 23:03:56 :: startup
110904 23:03:56  InnoDB: Initializing buffer pool, size = 5.0G
110904 23:03:57  InnoDB: Completed initialization of buffer pool
110904 23:03:58  InnoDB: Started; log sequence number 0 416685169
110904 23:03:58 [Note] Event Scheduler: Loaded 0 events
110904 23:03:58 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.56'  socket: '/mysql.sock'  port: 3306  ALT Linux MySQL RPM
Comment 1 Michael Shigorin 2013-02-19 20:34:27 MSK
Надо скопировать в p6 из t6 (можете тем временем поставить вручную и лишний раз проверить):

* Tue Apr 24 2012 Michael Shigorin <mike@altlinux.org> 5.1.62-alt0.M60T.1
- built for M60T

* Fri Mar 23 2012 Michael Shigorin <mike@altlinux.org> 5.1.62-alt1
- 5.1.62
- /dev/urandom tweaks
- spec cleanup

* Wed Mar 21 2012 Michael Shigorin <mike@altlinux.org> 5.1.61-alt2
- create /dev/urandom in chroot so SSL support actually works;
  thanks naf@ (closes: #27100)

* Thu Jan 12 2012 Michael Shigorin <mike@altlinux.org> 5.1.61-alt1
- 5.1.61

* Fri Dec 30 2011 Michael Shigorin <mike@altlinux.org> 5.1.60-alt2
- please note that 5.1.50-alt1 introduced modular InnoDB support
  thus the plugin must be loaded if it's supposed to be used

Возможно, есть смысл собрать 5.1.68 для начала в t6...
Comment 2 Michael Shigorin 2013-02-19 20:45:52 MSK
(In reply to comment #0)
> Installation of system tables failed!
Ещё возможно, что придётся для 5.1.x доработать mysql_install_db для поддержки вот такого вот innodb, который в 5.5.x откатили из модулей назад.
Comment 3 Andrey Cherepanov 2013-02-20 12:56:18 MSK
(В ответ на комментарий №1)
> Надо скопировать в p6 из t6 (можете тем временем поставить вручную и лишний раз
> проверить):
#90406 TESTED #1 [test-only] p6 copy=MySQL


[root@main ~]# tail -n2 /var/lib/mysql/my.cnf
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so
[root@main ~]# service mysqld restart
Sending TERM signal to mysqld:                                                                                                                                              [ DONE ]
Waiting, while mysqld actualy stopped:                                                                                                                                      [ DONE ]
Adjusting environment for mysqld:                                                                                                                                           [ DONE ]
Starting mysqld service:                                                                                                                                                    [ DONE ]
[root@main ~]# service mysqld  status
mysqld is dead, but subsystem is locked

Не работает.
Comment 4 Andrey Cherepanov 2013-02-20 13:07:51 MSK
Не удалил все  процессы. После этого всё запустилось и выдало InnoDB в show plugins;

Соответственно, таблицы с явным прописыванием ENGINE=InnoDB в CREATE TABLE создаются и показывают engine в show table status.

Проверьте задание под p6:

apt-repo add task 90406
apt-get update
apt-get dist-upgrade

Если всё устроит, отправлю в p6.
Comment 5 Andrey Cherepanov 2013-02-20 13:11:08 MSK
При этом строка default-storage-engine = InnoDB всё также не даёт запустить mysqld.
Comment 6 Andrew Kornilov 2013-02-21 15:42:12 MSK
Разбираясь с аналогичной проблемой, пришел пока к таким выводам:
1. В документации и во всех советах в интернете для установки default storage engine в MySQL 5.1 (любом) нужно прописать default-storage-engine=InnoDB. У всех это работает и ничего не ругается
2. В нашей сборке (mysqld из t6, 5.1.62, кажется), при установке этого параметра ругается именно наш скрипт-обвязка вокруг mysqld. Которая /usr/sbin/mysql_install_db: Installation of system tables failed!

Но при этом mysqld запускается, default storage engine становится InnoDB и вроде как всё работает.

Судя по тому, что никто в "этих ваших интернетах" не жалуется на такую проблему вообще, проблема в наших скриптах.  Такое моё предположение, доказать пока нет времени, вчера только немного позанимался этим.
Comment 7 Sergey Vlasov 2013-02-21 17:36:48 MSK
Действительно, в p6 попытка установить default-storage-engine=InnoDB в файле /var/lib/mysql/my.cnf приводит к ругани при запуске сервера, поскольку скрипт /usr/sbin/mysql_install_db вызывает mysqld с опцией --skip-innodb, которая несовместима с default-storage-engine=InnoDB вне зависимости от наличия или отсутствия параметра ignore-builtin-innodb. При этом ругань не мешает последующему запуску сервера, если системные таблицы на самом деле уже были созданы.

Способ установки InnoDB по умолчанию, работающий в p6 - указывать этот параметр в /etc/sysconfig/mysqld:

OPT="--default-storage-engine=innodb"

Что касается системных таблиц - они и должны быть в формате MyISAM, это указано в документации MySQL:

http://dev.mysql.com/doc/refman/5.1/en/converting-tables-to-innodb.html
Comment 8 Andrey Cherepanov 2013-02-21 18:22:55 MSK
Пакет пропускаем при условии последнего замечания?
Comment 9 Andrey Cherepanov 2013-07-19 19:44:09 MSK
В p6 сейчас MySQL-5.1.62, в котором при задании default-storage-engine=InnoDB в my.cnf демон mysqld всё же запускается. Осталась одна косметическая проблема при создании баз данных (а именно в /usr/sbin/mysql_install_db нужно убрать перестраховочный --skip-innodb [в p6 и Sisyphus/p7]).
Comment 10 Anton Farygin 2023-06-13 09:16:12 MSK
работает.