Перемещение раздела данных 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 ответа

Решение
  1. Ли mysql/plugin.frm ошибка возникает на обеих машинах? Я думаю, это так.

    Пришел ли datadir из установки до 5.1? Бежать mysql_upgrade чтобы избавиться от этого.

  2. Даже при использовании 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
Другие вопросы по тегам