MySQL备份:我可以将单独的MyISAM表文件复制到具有不同MySQL版本和不同操作系统的另一台服务器上吗?

我的意思是复制个人MyISAM表格文件是:
(closuresmysqld并将.frm,.myd和.myi文件从一个数据库文件夹复制到另一个)

题:
(一)我可以用这种方式备份MySQL数据库文件夹从一个服务器到另一个服务器与不同的MySQL版本?

(二)可以将这个备份文件移动到不同的操作系统? (例如:debian到centos)

只有在相同服务器版本之间的文件级复制MyISAM表:
– CPU'endian'(SPARC!= x86)
– MySQL版本升级无需转换(5.0.48复制到5.0.52不好,因为索引结构的变化,但5.0.52复制到5.1.45是有效的)。

注意竞争条件…当数据库正在读取表格时,您可能正在使用FTP或其他工具访问这些文件。 即使是最温和的表格读取,在.MYI中也有更新的表格“计数器”。

我发现以下将确保MyISAM表的完整性用于任何文件级操作:

LOCK TABLE x WRITE; FLUSH TABLE x; -- closes all file handles into table by mysql. < perform file-level manipulations > FLUSH TABLE x; -- A 'stat' of the table occurs and info-schema is updated appropriately. UNLOCK TABLES; 

如果你不锁定你的表,那么当你进行文件级的复制/操作的时候,mysql可能会访问它(读或写)。

这也是用于允许在HOT数据库上使用“myisampack”,“myisamchk”表的机制,即使外部锁定被禁用,也不用担心损坏。

– J Jorgenson –

a)只要确保关闭mysql,将myisam文件移动到相同版本的服务器上就可以了(但对于其他引擎则不是这样)。 一般来说,你甚至可以在不同的次版本之间进行切换(尽管它不能保证)。

b)Debian到CentOS应该可以正常工作。 一般来说,只有潜在的问题,你会跨越操作系统将是不同的文件夹结构(对于大多数Linux发行版不是问题)或具有不同endian – ness(也是一个非常罕见的问题,这些天)的操作系统。

也许。 我会详细说明。

如果它们是相同的小版本,并且具有相同的my.cnf版本,则为YES。

如果您从5.0或更高版本变为5.0或更高版本,并且具有相同的my.cnf,则为YES

如果使用全文索引并且将其参数设置成不同,包括停用词(提示:不要使用全文索引),则为NO。


但在一般情况下,不,我会说如果它运行的是与原来的完全相同的mysql二进制文件,你只能去另一台机器。 如果您打算做其他事情,请广泛测试。 格式的变化可能是微妙的,似乎工作(例如:排序细节导致索引范围扫描国际化问题)。

my.cnf的内容确实会影响行为,并且可能会使现有表无效,特别是全文索引。

即使转向更新的版本,我也遇到了困难,因为尽管它声称并且似乎工作,但是较旧的MyISAM版本会导致长期不可预知的行为和崩溃(我们正在谈论持续模拟大数据集的几天)。 这意味着对于4.1-5我必须使用REPAIR TABLE来迁移整个数据集。

如果myisam格式的任何差异都会导致不兼容,那么REPAIR TABLE总是修复它们(只要mysql能读取AT ALL的表格 – 例如5.0到4.1)!

在规划升级时,总是要进行浸泡/压力测试,这可能会暴露MySQL不知道的问题。

当你有相同版本的MySql服务器时,你可以移动文件并使用mysql工具进行检查。 我不认为有任何问题与操作系统。 但版本应该是相同的MySQL服务器。

如果版本不同,最好的方法就是使用mysqldump表,然后使用mysql导入它们。