Bug 26232 - Проблемы с default-storage-engine = InnoDB
: Проблемы с default-storage-engine = InnoDB
Status: ASSIGNED
: Branch p6
(All bugs in Branch p6/MySQL-server)
: не указана
: all Linux
: P3 normal
Assigned To:
:
:
:
:
: 26742
  Show dependency tree
 
Reported: 2011-09-05 03:28 by
Modified: 2014-02-16 15:56 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2011-09-05 03:28:14
Минимальный 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 From 2013-02-19 20:34:27 -------
Надо скопировать в 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 From 2013-02-19 20:45:52 -------
(In reply to comment #0)
> Installation of system tables failed!
Ещё возможно, что придётся для 5.1.x доработать mysql_install_db для поддержки
вот такого вот innodb, который в 5.5.x откатили из модулей назад.
------- Comment #3 From 2013-02-20 12:56:18 -------
(В ответ на комментарий №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 From 2013-02-20 13:07:51 -------
Не удалил все  процессы. После этого всё запустилось и выдало 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 From 2013-02-20 13:11:08 -------
При этом строка default-storage-engine = InnoDB всё также не даёт запустить
mysqld.
------- Comment #6 From 2013-02-21 15:42:12 -------
Разбираясь с аналогичной проблемой, пришел пока к таким выводам:
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 From 2013-02-21 17:36:48 -------
Действительно, в 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 From 2013-02-21 18:22:55 -------
Пакет пропускаем при условии последнего замечания?
------- Comment #9 From 2013-07-19 19:44:09 -------
В p6 сейчас MySQL-5.1.62, в котором при задании default-storage-engine=InnoDB в
my.cnf демон mysqld всё же запускается. Осталась одна косметическая проблема
при создании баз данных (а именно в /usr/sbin/mysql_install_db нужно убрать
перестраховочный --skip-innodb [в p6 и Sisyphus/p7]).