/etc/mysql/conf.d/myserver:
[mysqld]
innodb_file_per_table
datadir = /elastidb/lib/mysql
#log-bin = /elastiblockdb/log/mysql/mysql-bin.log
general_log = true
log = /elastiblockdb/log/mysql/mysql_general.log
log-error = /elastiblockdb/log/mysql/mysql_error.log
max_binlog_size = 1000M
log-slow-queries = /elastiblockdb/log/mysql/mysql-slow.log
long_query_time = 10
innodb_buffer_pool_size = 4500M
innodb_additional_mem_pool_size = 200M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
У меня есть две одинаковые машины Ubuntu на серверах Amazon. две машины имеют идентичные файлы конфигурации / etc / mysql. проблема в том, что когда я отключаю / elastidb (данные mysql) на одном сервере и повторно подключаю его на другом, когда я пытаюсь запустить mysql на другом сервере, я получаю следующую ошибку:
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
091104 13:53:13 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
091104 13:53:14 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
091104 13:53:14 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
когда я удаляю директиву datadir из своего файла конфигурации, запускается сервер mysql, но без загрузки соответствующих данных db из желаемого места.
Я хочу иметь возможность быстро перемещать это хранилище данных mysql с одной машины на другую. в чем может быть проблема?
обе машины работают на Ubuntu 9.04 jaunty 64 bit.
У меня была аналогичная проблема (то же сообщение об ошибке, но на сервере Ubuntu 10.04, и я изменил каталог данных mysql, чтобы он указывал на / opt / mysql).
Проблема заключалась в том, что apparmor блокировал попытки / usr / sbin / mysqld прочитать / opt / mysql. Я нашел такие строки:
type=1503 audit(1291916635.209:18): operation="open" pid=1201 parent=1 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=105 ouid=105 name="/opt/mysql/mysql/plugin.frm"
mysql main process (928) terminated with status 1
В моем / var / log / syslog.
Я отредактировал /etc/apparmor.d/usr.sbin.mysqld, заменив все экземпляры '/ var / lib / mysql' на '/ opt / mysql'.
После этого mysql запустился правильно.
Есть ли mysql/plugin.frm
ошибка возникает на обеих машинах? Я так думаю.
Получен ли datadir из предустановленной версии 5.1? Бегать mysql_upgrade
чтобы избавиться от этого.
Даже при использовании innodb_file_per_table
MySQL по-прежнему будет создавать единое общее табличное пространство.
Отсутствие innodb_data_home_dir
и innodb_data_file_path
переменные в предоставленной вами конфигурации должны означать, что автоматически расширяемое табличное пространство 10M создается под вашим datadir
. Но если вторая машина жалуется на ее отсутствие, значит, она не под вашим datadir
.
Я бы посоветовал поискать этот файл (ibdata1
) на первой (рабочей) машине. Если он существует за пределами datadir
, затем выключите MySQL, переместите его и настройте эти переменные.
mysql / plugin.frm - это файл, который хранится в папке с данными, если вы используете для ссылки на mysql ссылку c: \ programdata \ mysql \ mysql server 5.1 \ data \ dir, если файл не найден, затем переустановите mysql, это визуальный базовый файл
В моем случае проблема была в аппарме. Поскольку моя машина предназначена только для тестирования, я выбрал самый простой способ ее решения:
apt-get remove apparmor