背景:
MariaDB是由MySQL的原始开发者Michael "Monty" Widenius在2009年创立的,目的是为了确保MySQL能够在开源社区中继续自由发展。
2008年,Oracle收购了Sun Microsystems,从而获得了MySQL的所有权,这引发了开源社区的担忧。社区担心Oracle会将MySQL封闭化或限制其功能,以保护自己的商业数据库产品。因此,Widenius和其他MySQL的核心开发者决定创建MariaDB,以保持数据库的开源和社区驱动。
兼容性:
MariaDB与MySQL高度兼容,这意味着现有的MySQL应用可以很容易地迁移到MariaDB上。无论是在SQL语法、API接口还是存储格式上,MariaDB都尽量保持与MySQL的一致性,降低了用户的迁移成本。
个人见解:
其实在我们的一些项目中,直接更换数据库,所有mysql依赖 驱动 等都不更换,也没遇到过什么问题。 但是,我并不敢保证这种情况永远不会出现,想了想还是试着全面替换了mysql的依赖驱动包等。
环境:
本机Windows
注意事项:
查看MariaDB版本与Mysql版本兼容性,进行选择替换的版本。
地址:MariaDB Enterprise Open Source Database | MariaDB
过程:
1.更换Mysql依赖包为MariaDB依赖包
<!-- MariaDB驱动包-->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
</dependency>
2.修改连接池
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: org.mariadb.jdbc.Driver druid: # 主库数据源 master: url: jdbc:mariadb://localhost:3306/local_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
以下是JDBC URL 各个参数的含义:
-
jdbc:mariadb://
:这是 JDBC URL 的协议部分,指定了使用 JDBC 连接到 MariaDB 数据库。 -
localhost:这是数据库服务器的 IP 地址,客户端将尝试连接到这个地址上的数据库服务器。
-
:3306
:这是数据库服务器监听的端口号,MariaDB 默认的端口号是 3306。 -
local_test
:这是要连接的数据库名称。 -
useUnicode=true
:这个参数指定了字符编码应该使用 Unicode 字符集。 -
characterEncoding=utf8
:这个参数指定了字符编码的具体类型,这里是 UTF-8。UTF-8 是一种广泛使用的 Unicode 实现,可以表示世界上大多数语言的字符。 -
zeroDateTimeBehavior=convertToNull
:这个参数定义了当遇到日期时间字段(如DATETIME
或TIMESTAMP
)的值为 '0000-00-00 00:00:00' 时的行为。在这里,它被设置为convertToNull
,意味着这种值会被转换为 SQL 的NULL
。 -
useSSL=false
:这个参数指定了是否使用 SSL 加密连接。在这里,它被设置为false
,意味着不使用 SSL 加密连接。如果你希望使用 SSL 加密连接,需要将其设置为true
并确保数据库服务器配置了 SSL。 -
serverTimezone=GMT%2B8
:这个参数指定了服务器的时区。在这里,它被设置为GMT+8
,即东八区,对应中国标准时间(CST)。
总的来说,这个 JDBC URL 配置了一个连接到特定 IP 地址和端口上的 MariaDB 数据库的连接,指定了数据库名、字符编码、日期时间行为、SSL 使用情况以及服务器时区。