我的意思是复制单个 MyISAM 表文件是:
(关闭 mysqld 并将 .frm、.myd 和 .myi 文件从一个数据库文件夹复制到另一个数据库文件夹)
问题:
(a) 我可以使用这种方式将MySQL数据库文件夹从一台服务器备份到另一台具有不同MySQL版本的服务器吗?
(b) 这个备份文件可以移动到不同的操作系统吗? (示例:debian 到 centos)
仅在具有相同内容的服务器版本之间进行文件级复制 MyISAM 表:
- CPU“字节序”(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·乔根森——
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)