/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
i have two identical ubuntu machine on amazon servers. two of the machines have identical /etc/mysql configuration files. the problem is that when i unmount /elastidb (mysql data) on one server and remount it on the other, when i try to start mysql on the other server i get the following error:
/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
when i remove the directive datadir from my configuration file then mysql server starts but without loading the appropriate db data from my desired location.
I want to be able to quickly move that mysql data storage from one machine to the other. what may be the problem ?
both machines are on ubuntu 9.04 jaunty 64 bits.
Does the
mysql/plugin.frm
error occur on both machines? My guess is so.Did the datadir come from a pre-5.1 installation? Run
mysql_upgrade
to get rid of this.Even when using
innodb_file_per_table
MySQL will still create a single shared tablespace.The lack of
innodb_data_home_dir
andinnodb_data_file_path
variables in the config you're provided should mean that a 10M auto-extending tablespace is created under yourdatadir
. But if the second machine is complaining about it missing then it suggests that maybe it isn't under yourdatadir
.I'd suggest having a hunt around for this file (
ibdata1
) on the first (working) machine. If it exists outside thedatadir
, then shutdown MySQL, move it and configure those variables.I had a similar issue (same error message, but on Ubuntu server 10.04, and I changed the mysql datadir to point at /opt/mysql).
The problem was that apparmor was blocking attempts by /usr/sbin/mysqld to read /opt/mysql. I found lines like:
In my /var/log/syslog.
I edited /etc/apparmor.d/usr.sbin.mysqld, replacing all instances of '/var/lib/mysql' with '/opt/mysql'.
After that mysql started properly.
In my case the problem was apparmor. Since my machine is purposed for testing only, I chose the simplest way for solving it:
mysql/plugin.frm is a file that store in over data folder if u use to link mysql link c:\programdata\mysql\mysql server 5.1\data\dir if file not found then u reinstall the mysql it is visual basic file