Перемещение раздела данных mysql innodb с одного компьютера на другой
/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, но без загрузки соответствующих данных из моей базы данных.
Я хочу иметь возможность быстро перенести хранилище данных mysql с одной машины на другую. в чем может быть проблема?
обе машины на Ubuntu 9.04 Jaunty 64 бит.
4 ответа
Ли
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, переместите его и настройте эти переменные.
У меня была похожая проблема (то же сообщение об ошибке, но на сервере Ubuntu 10.04, и я изменил datadir 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 - это файл, который хранится в папке с данными, если вы используете для связи ссылку mysql c:\programdata\mysql\mysql server 5.1\data\dir, если файл не найден, то переустановите mysql, это визуальный базовый файл
В моем случае проблема была apparmor. Поскольку моя машина предназначена только для тестирования, я выбрал самый простой способ ее решения:
apt-get remove apparmor