MySQL 是不是可以无缝替换为 MariaDB,或者在这种情况下有啥需要改变的吗?

Posted

技术标签:

【中文标题】MySQL 是不是可以无缝替换为 MariaDB,或者在这种情况下有啥需要改变的吗?【英文标题】:Can MySQL seamlessly be replaced with MariaDB or are there things to change in this case?MySQL 是否可以无缝替换为 MariaDB,或者在这种情况下有什么需要改变的吗? 【发布时间】:2011-05-05 14:43:34 【问题描述】:

如果我用 MariaDB 服务器(Maria 和 XtraDB 存储)而不是 mysql(MyISAM 和 InnoDB)替换 MySQL 5.1 服务器,大多数 MySQL 客户端软件(包括使用 php 5.2 和 Java SE 1.6 制作的应用程序).​​. .

    只是继续工作而不做任何更改(可能会有轻微的回归)? 或者我是否必须替换/重新配置客户端驱动程序(例如使用另一个 JDBC 驱动程序类和连接字符串)? 或者我什至需要更改应用程序代码?

【问题讨论】:

@cherouvim,我想你可能有线索 ;-) 它和“oracle”这个词有关系吗? 是的,我正在寻找一种不那么依赖 Oracle 并且更先进(就像 XtraDB 与 InnoDB、AFAIK 相比)的解决方案。考虑到市场恐慌和炒作,我相当保守,但现在即使是依靠甲骨文的善意,我也会感到不舒服:-) 【参考方案1】:

http://kb.askmonty.org/v/mariadb-versus-mysql

所有 MySQL 连接器(PHP、Perl、Python、Java、MyODBC、Ruby、MySQL C 连接器等)都可以在 MariaDB 中正常工作。

【讨论】:

简洁而完美。 这并不完全正确。 MariaDB 有两个级别的密码加密:旧的和新的。如果您的数据库帐户配置为使用旧方法,则 mysql 连接器无法连接到它。 Erick Robertson 我想我们遇到了同样的问题,那么如何解决呢?我备份了 MySql (mysqldump) 并将 MySql 升级到 MariaDB,所以现在我已将数据库恢复到 MariaDB,但我无法查看表的数据如果您知道解决方案,请告诉我【参考方案2】:

与流行的看法相反,Java 中用于连接 MySQL 并与之交互的默认 Connector/J JDBC 驱动程序不能很好地与 MariaDB 配合使用。要使用 MariaDB,您需要让您的应用程序使用 Drizzle 或 SkySQL 驱动程序。

http://kb.askmonty.org/en/mariadb-faq-is-there-any-java-connector-for-mariadb-than-the-one-from-mysql

【讨论】:

我已经阅读了您链接到的文章,但我看不出那里有什么意义。此外,它说没有理由更换连接器,并且有评论说 Drizzle 不完整。【参考方案3】:

多年来,我一直使用 Mariadb 作为 Oracle 的 MySQL 的替代品。它更快且非常可靠。在apt中只需要很少的关注,但没有什么严重的。此外,Mariadb 还有一个小细节;它在日志中看到 [错误]“PHP 警告:mysql_connect():标头和客户端库次要版本不匹配”。除了开始手动编译之外,我还没有找到任何其他解决方案:askMonty。

$php -i | grep 'Client API'

Client API version => 5.3.7-MariaDB
Client API library version => 5.3.7-MariaDB
Client API header version => 5.1.61
Client API version => 5.3.7-MariaDB

【讨论】:

【参考方案4】:

保持工作没有任何变化(有轻微的回归 也许)?

只要换成同一个版本,应该不会有任何问题。如果您当前使用的是 MySQL 5.1,则可以替换为 MariaDB 5.1。如果您使用的是 5.5,请使用相应的。 MariaDB v5.2 和 v5.3 以及 5.1 的增强版本。

或者我是否必须更换/重新配置客户端驱动程序(比如使用另一个 JDBC驱动类和连接字符串)?

你不应该。 MySQL 和 MariaDB 都使用相同的协议和整体语法,但在某些情况下可能会有一些例外。另一个答案中引用的 URL 是一个很好的资源:@​​987654321@

关于驾驶执照,如果您打算将项目进行商业分发,则存在差异。在这种情况下,我建议您仔细检查许可条款,如果您有任何疑问,请按照另一个答案中的建议使用连接器的 MariaDB/SkySQL 版本。详情请查看http://www.skysql.com/downloads/java-cc-connectors-mariadb。

或者我什至需要更改应用程序代码?

应用程序代码应保持不变。

【讨论】:

【参考方案5】:

关于与 mysql 驱动程序/CodeIgniter 的兼容性的一点反馈。几分钟前我遇到了关于 BIT 属性类型的问题。

值未从服务器检索。它总是空的。 我使用的是使用“mysql”驱动程序的标准 CI 数据库配置。 将database.php中的驱动改成“mysqli”后问题就解决了。

请注意,如果您使用的是旧的 mysql 驱动程序,可能会有一些差异。

$db['default']['dbdriver'] = 'mysqli';

MariaDB 客户端 API 版本 5.5.40

【讨论】:

【参考方案6】:

MariaDB 是 MySQL 演变而来的。

同时也是 MySQL 和 MariaDB 背后的开发者。差不多(如果不是,我只能说MariaDB是MySQL改进的,点)。

您无需在 PHP 中进行任何更改。

【讨论】:

以上是关于MySQL 是不是可以无缝替换为 MariaDB,或者在这种情况下有啥需要改变的吗?的主要内容,如果未能解决你的问题,请参考以下文章

Debian安装mysql-server

全网最详细的CentOS7里如何安装MySQL(得改为替换安装MariaDB)(图文详解)

markdown XAMPP - 用MySQL替换MariaDB

markdown XAMPP - 用MySQL替换MariaDB

MariaDB 是不是具有 MYSQL/Oracle JSON_TABLE 的可扩展等效项

HikariCP 升级到 Debian 10 (mariadb)