/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/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 位。
答案1
这个错误是否
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,移动它并配置这些变量。
答案2
我遇到了类似的问题(相同的错误消息,但在 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,将“/var/lib/mysql”的所有实例替换为“/opt/mysql”。
此后mysql正常启动。
答案3
就我而言,问题出在 apparmor 上。由于我的机器仅用于测试,因此我选择了最简单的方法来解决它:
apt-get remove apparmor
答案4
mysql/plugin.frm 是一个存储在数据文件夹中的文件,如果你用它来链接 mysql,则链接 c:\programdata\mysql\mysql server 5.1\data\dir,如果找不到文件,则重新安装 mysql,它是 Visual Basic 文件