在 Linux 系统中将 MySQL 迁移到 MariaDB 是很多运维人员和开发者的常见需求,MariaDB 作为 MySQL 的开源分支,在功能兼容性和后续维护上有明显优势,迁移过程需要严格遵循步骤操作,确保数据安全和服务稳定。
迁移前准备
在开始迁移之前,需要先完成几项基础准备工作,避免后续操作出现问题。
- 确认当前 MySQL 的版本,不同版本的迁移细节略有差异,可以通过命令查看版本信息。
- 检查服务器磁盘空间,确保有足够的空间存放备份文件和临时数据。
- 通知相关业务方迁移时间,尽量选择在业务低峰期操作,减少影响。
查看 MySQL 版本
执行以下命令可以查看当前安装的 MySQL 版本:
mysql --version
数据备份
数据备份是迁移过程中最重要的环节,必须确保所有业务数据都能完整备份,防止迁移失败导致数据丢失。
停止 MySQL 服务
首先停止正在运行的 MySQL 服务,避免备份过程中数据发生变化:
sudo systemctl stop mysql
备份所有数据库数据
使用 mysqldump 工具备份所有数据库,将备份文件保存到指定目录:
mysqldump -u root -p --all-databases > /tmp/mysql_backup.sql
执行命令后会提示输入 MySQL 的 root 密码,输入完成后等待备份完成,可以检查备份文件是否存在且大小正常。
卸载 MySQL
备份完成后,需要卸载当前的 MySQL 软件,注意只卸载软件包,不要删除数据目录,后续 MariaDB 会复用原有数据目录。
卸载 MySQL 软件包
根据不同的 Linux 发行版执行对应的卸载命令,以下是常见发行版的操作:
| 发行版 | 卸载命令 |
|---|---|
| Ubuntu/Debian | sudo apt-get remove mysql-server mysql-client mysql-common |
| CentOS/RHEL | sudo yum remove mysql mysql-server mysql-libs |
清理残留文件
卸载完成后清理残留的配置文件和依赖包:
# Ubuntu/Debian 系统 sudo apt-get autoremove sudo apt-get autoclean # CentOS/RHEL 系统 sudo yum autoremove
安装 MariaDB
卸载 MySQL 后,就可以安装 MariaDB 了,大部分 Linux 发行版的官方源都包含 MariaDB 安装包。
安装 MariaDB 服务
根据发行版执行安装命令:
# Ubuntu/Debian 系统 sudo apt-get update sudo apt-get install mariadb-server mariadb-client # CentOS/RHEL 系统 sudo yum install mariadb mariadb-server
启动 MariaDB 服务
安装完成后启动 MariaDB 服务,并设置开机自启:
sudo systemctl start mariadb sudo systemctl enable mariadb
数据恢复与验证
MariaDB 安装完成后,需要将之前备份的 MySQL 数据恢复到 MariaDB 中,并验证数据是否完整。
恢复备份数据
使用以下命令将备份的 SQL 文件导入到 MariaDB 中:
mysql -u root -p < /tmp/mysql_backup.sql
同样需要输入 MariaDB 的 root 密码,导入完成后可以登录 MariaDB 查看数据库是否存在。
验证迁移结果
登录 MariaDB 后执行以下操作验证数据:
-- 查看所有数据库 SHOW DATABASES; -- 切换到某个业务数据库查看表 USE 业务数据库名; SHOW TABLES; -- 查询表中数据验证完整性 SELECT COUNT(*) FROM 业务表名;
常见问题处理
迁移过程中可能会遇到一些常见问题,以下是对应的处理方法:
- 如果恢复数据时出现权限错误,检查备份文件的权限,确保 MariaDB 运行用户有读取权限。
- 如果启动 MariaDB 失败,检查原有 MySQL 的数据目录权限,将其所有者修改为 MariaDB 运行用户。
- 如果业务连接数据库失败,检查 MariaDB 的端口是否和之前 MySQL 一致,默认都是 3306 端口。
注意:如果迁移后出现兼容性问题,可以查看 MariaDB 官方文档的版本兼容说明,调整对应的配置参数。