/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机器。 两台机器有相同的/ etc / mysqlconfiguration文件。 问题是,当我卸载/ 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
当我从configuration文件中删除指令datadir然后mysql服务器启动,但没有从我所需的位置加载适当的数据库数据。
我希望能够将mysql数据存储从一台机器快速移动到另一台机器上。 可能是什么问题?
两台机器都在Ubuntu 9.04 64位。
这两个机器上是否发生mysql/plugin.frm
错误? 我的猜测是如此。
datadir来自5.1之前的安装吗? 运行mysql_upgrade
来摆脱这个。
即使使用innodb_file_per_table
MySQL仍然会创build一个共享的表空间。
在你提供的configuration中缺lessinnodb_data_home_dir
和innodb_data_file_path
variables应该意味着在你的datadir
下创build一个10M的自动扩展表空间。 但是,如果第二台机器抱怨它缺less,那么它表明也许它不在你的datadir
。
我build议在第一台(工作)机器上寻找这个文件( ibdata1
)。 如果它存在于datadir
之外,那么closuresMySQL,移动它并configuration这些variables。
我有一个类似的问题(相同的错误消息,但在Ubuntu服务器10.04,我改变了MySQL的datadir指向/ 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,用'/ opt / mysql'replace了'/ var / lib / mysql'的所有实例。
之后,MySQL正常启动。
在我的情况下,问题是apparmor。 由于我的机器仅用于testing,我select了最简单的方法来解决它:
apt-get remove apparmor
mysql / plugin.frm是一个存储在数据文件夹中的文件,如果你使用链接mysql链接c:\ programdata \ mysql \ mysql服务器5.1 \ data \ dir如果找不到文件然后重新安装mysql它是可视化的基本文件