升级 mariadb 版本

从 CentOS 7 开始,自带的数据库就变成 MariaDB 了,yum 安装的 mariadb 默认版本是 5.5 ,实际开发中一些 SQL 特性和语法支持的不是太好,本文记录的是平滑升级 MariaDB 5.5 到 10.x 新版本的实践操作过程。

升级 mariadb 版本

确认已安装的数据库版本

1
mysql --version

确定当前数据库数据

备份

备份非常重要!备份非常重要!备份非常重要!
升级前一定要注意备份,除非你不在乎数据库中的数据或配置。

备份数据库到 backup.sql 文件

1
mysqldump -u root -p --all-databases > ~/myConf/backup.sql

也可以备份一下数据库配置(如果需要保留 my.cnf)

1
mv /etc/my.cnf /etc/my.cnf.bak

停止数据库运行

1
systemctl stop mariadb

添加 MariaDB Yum 源

建议使用 MariaDB 官方推荐的 stable 稳定版:

MariaDB 官方下载

Yum 官方下载

新建并添加 MariaDB 官方源

1
vi /etc/yum.repos.d/MariaDB.repo

复制粘贴以下内容

1
2
3
4
5
6
7
# MariaDB 10.3 CentOS repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

检查是否添加成功

清除 yum 源缓存

1
yum clean all

建立新的 yum 源缓存

1
yum makecache


升级已有数据库

安装 MariaDB 新版本

1
yum install mariadb mariadb-server



启动新版 MariaDB

1
systemctl start mariadb

升级已有数据库

1
mysql_upgrade -uroot -p --force

配置服务自启动

1
systemctl enable mariadb

登录数据库验证

1
mysql -uroot -p

查看当前版本并检查数据是否丢失

恢复数据

查看原用户是否存在、原用户密码是否存在

如果原用户不存在,就重写创建用户

1
2
3
use mysql;
update user set password=password("xxxxxxx") where user="root" and host='localhost';
FLUSH PRIVILEGES;

恢复数据库

1
mysql -u root -p < ~/myConf/backup.sql

参考文档

Mariadb 5.5 upgrade to 10.0 需知

Mariadb 官网