将MySQL数据库复制到另一台计算机

时间:2010-07-12 15:49:41

标签: mysql innodb

我正在尝试在另一台服务器上复制MySQL数据库。我停止服务器,tar起mysql目录,将其复制到其他服务器并解压缩。我将所有权限设置为与工作服务器匹配,并复制my.cnf文件,因此除了特定于服务器的更改外,所有内容都相同。

但是,当我尝试启动服务器时,我收到以下InnoDB错误:

InnoDB: Operating system error number 13 in a file operation.
This error means mysql does not have the access rights to
the directory.
File name /var/lib/mysql/ibdata1
File operation call: 'open'.

所有文件的所有者/组是mysql。我甚至尝试将权限更改为+ rw。我可以su到mysql用户并使用head访问ibdata1文件。

SOLUTION:

问题是启用了selinux并阻止了新文件的访问。

2 个答案:

答案 0 :(得分:3)

一个愚蠢的问题,但是人们忘了:你说你检查过所有文件都有相同的权限;即使它在消息中这么说,你是否可能忘记检查包含目录的权限?

更新:还有两项建议:

  1. 你可以尝试插入--console--log-warnings标志,以获得大量的调试输出,就像这样(在我的Mac上):

    / usr / libexec / mysqld --console --log-warnings --basedir = / usr --datadir = / var / lib / mysql --user = mysql --pid-file = / var / run / mysqld /mysqld.pid --skip-external-locking --socket = / var / lib / mysql / mysql.sock

  2. 如果所有其他方法都失败了,您可以尝试strace mysqld ...查看它究竟是什么失败了。错误将位于底部。

  3. UPDATE2 :有趣的是......我看不到你的操作系统是什么。我通常不使用/sbin/service,这对我来说有点神秘;在Mac上,它已被弃用,而launchctl使用/System/Library/LaunchDaemons/mysqld.plist中的配置文件,而大多数Linux机箱上都有/etc/init.d/mysqld。所以你可以在那里插入strace。

    或(未经测试,但手册页显示可能)您可以尝试支持服务电话:

    strace -ff -o straces /sbin/service start mysqld
    

    这应该生成文件straces.pid,其中一个应该是mysqld的,希望你会在那里找到你的错误。

答案 1 :(得分:0)

这不是您问题的直接答案,但我建议您尝试使用其中一个程序来满足您的备份/恢复需求。

Percona Xtrabackup:https://launchpad.net/percona-xtrabackup Mydumper:http://www.mydumper.org/

两者都是很棒的工具,是免费的开源软件,可以帮助您完全避免这个问题。 希望有所帮助。