MySQL迁移到MariaDB

业务场景

为了后期数据库管理方便,统一公司当前使用的MySQL数据库版本(当前存在MySQL和MariaDB同时使用的情况),需要将某项目的MySQL数据库替换为MariaDB。

服务器详情

  • 操作系统:CentOS 7
  • MySQL版本:MySQL 5.5.8(二进制包安装)
  • MariaDB版本:MariaDB 10.0.23(YUM安装)

执行步骤

为了降低替换风险,需保持旧有的MySQL服务和新安装的MariaDB服务同时运行,待测试确认MariaDB没有问题后,再停止原有MySQL服务,完全切换到MariaDB。

主要操作为:
在项目的测试服务器上安装MariaDB数据库,且MariaDB和MySQL使用不同的配置文件和数据目录,将MySQL的所有数据(含权限信息)迁移到MariaDB,保持MySQL和MariaDB同时运行。

调整MySQL服务读取的配置文件路径

由于MySQL读取的是默认配置文件/etc/my.cnf,为了使MySQL和MariaDB配置文件互不影响,采取两个DB服务分别读取不同配置文件的方法。将MySQL配置文件路径调整为/opt/mysql/my.cnf

1
2
3
4
5
# 复制配置文件
shell > cp /etc/my.cnf /opt/mysql/my.cnf

# 关闭MySQL服务后并重启,以读取新路径的配置文件
shell > ./bin/mysqld_safe --defaults-file=/opt/mysql/my.cnf --user=mysql

安装MariaDB Enterprise(YUM)

1
2
# MariaDB源配置可参考 https://mariadb.com/my_portal/download
shell > yum install MariaDB-server MariaDB-client

修改MariaDB配置文件(/etc/my.cnf.d/mariadb-enterprise.cnf)

1
2
3
# 修改端口和数据目录
port = 3308
datadir = /opt/mysql_data

将MySQL数据目录下的所有文件复制到MariaDB数据目录(复制数据时,需停止MySQL服务)

1
shell > cp -aR /opt/mysql/data/* /opt/mysql_data/

启动MariaDB服务

1
shell > service mysql start

运行mysql_upgrade

1
shell > mysql_upgrade --verbose --port=3308 --protocol=tcp -uroot -p

该程序执行完成后,MySQL权限表和其他的表会进行一些相应的转换,MySQL成功迁移到MariaDB。

查看系统进程,MySQL和MariaDB服务同时在运行

1
shell > ps -aux | grep mysql

migrate_mysql_to_mariadb_1

参考文章

  1. Upgrading to MariaDB From MySQL 5.0 or Older