由于我的托管服务提供商曾经居住过,我想知道是否可以将 MYSQL 4.0 服务器复制到 5.0 服务器。
目前我已经有运行 4.1 的 slave,它工作正常,但我真的错过了 MYSQL 5.0 中存在的功能。
如果不可能,是否可以从我运行 4.1 的从站复制到另一个运行 5.0 的从站?
遗憾的是,我的托管服务提供商不会在版本上让步。
谢谢
最佳答案
官方表示最多支持一个大版本差异的跨版本复制。即支持4.1 master转5.0 slave,不支持4.0 master转5.0 slave。不是它不能用,而是他们没有测试它,所以他们无法保证它能用。
参见 http://dev.mysql.com/doc/refman/5.0/en/replication-compatibility.html
可能从 4.0 复制到 5.0,至少有限制。我只是在 Linux VM 上设置了这样一个配置来测试它,尽管我没有测试范围广泛的查询——只是一个 CREATE TABLE test.foo
。因此,至少最低限度的复制配置是有效的:从服务器进行身份验证、接收二进制日志并开始执行语句。
但是查询存在多种向后兼容性问题。有些你可以减轻:
- 设置SQL_MODE='mysql40'在从机上,否则某些带有
NOT
的表达式将无法正确执行。 - 不要使用 character sets .
- 避免某些 JOIN 语法,例如
SELECT * FROM A, B JOIN C ON C.x=A.y
,在 5.0 上中断。 - 不要使用 views , triggers , 或 stored routines .
这不一定是一个完整的列表,只是我立即想到的。
您还应该阅读升级手册页以查找非向后兼容性的其他情况,并查看它们是否适用于您的应用程序。其中大多数情况并不常见,但我们不知道它们是否适用于您的应用:
- http://dev.mysql.com/doc/refman/4.1/en/upgrading-from-previous-series.html
- http://dev.mysql.com/doc/refman/5.0/en/upgrading-from-previous-series.html
您已经明白,将大约 2003 年的 MySQL 复制到大约 2005 年的 MySQL,并期望您获得更现代版本的好处,这有点荒谬。
这就像从 Model T Ford 升级到 VW Bug,以获得更好的舒适性和燃油经济性。
我知道你说过你还不能离开这个托管服务提供商,但如果你不能放弃旧的 MySQL 4.0 版本,你必须预料到很多不便。
关于mysql - 是否可以将mysql 4.0复制到5.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956457/