Назад | Перейти на главную страницу

Перемещение раздела данных 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, но без загрузки соответствующих данных 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 запустился правильно.

  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, переместите его и настройте эти переменные.

mysql / plugin.frm - это файл, который хранится в папке с данными, если вы используете для ссылки на mysql ссылку c: \ programdata \ mysql \ mysql server 5.1 \ data \ dir, если файл не найден, затем переустановите mysql, это визуальный базовый файл

В моем случае проблема была в аппарме. Поскольку моя машина предназначена только для тестирования, я выбрал самый простой способ ее решения:

apt-get remove apparmor