前言
在使用mariadb的数据库(mysql有同样的问题)过程中,发现老版本的数据库的一些问题:
(1)自增字段是在内存里的,数据库重启后就会丢失,新的自增字段是根据表中已有数据的最大值+1(数据表的如果没有记录,自增字段又从头开始了);
(2)数据库的主从数据库配置,有部分配置项在重启过程中也会丢失。
因为公司业务需要,上述数据库问题会使公司业务产生bug,因此决定对公司在用的mariadb 10.1.40数据库进行升级
在官网中 https://mariadb.com/kb/en/auto_increment-handling-in-innodb/
可以看到AUTO_INCREMENT Values是在mariadb10.2.3之后改为持久化的,再加上其他的一些问题,公司决定将数据库升级至最新的稳定版本 mariadb 10.5.9
一、备份数据库
1、备份数据库
备份数据库数据
mysqldump -u root -p --all-databases > /home/alldb.sql
数据库data目录也可以备份一份
2、备份配置
cp /etc/my.cnf /etc/my.cnf.bak
3、停止数据库运行
service mysql stop
二、删除数据库
1、为什么要删除原有数据库服务
备注:我有尝试过不删除数据库,直接安装,尝试了一下方式:
(1)通过 yum install 命令安装新版本,会提示有原有老版本,无法安装。
(2)通过 yum update 命令更新版本,通过日志可以看到正常下载了新的安装包,但是在安装时会提示执行预执行的脚本发生错误,无法安装。
(3)官网查看maridb 更新操作 https://mariadb.com/kb/en/upgrading/ 也是说明需要先 uninstall 然后再 install 新版本。
2、 删除老版本数据库
yum remove MariaDB-server
//如果有其他组件,也可以一并删除
yum remove MariaDB-client // 等等
三、安装新版本数据库
建议使用MariaDB官方推荐的stable稳定版:
https://downloads.mariadb.org/mariadb/
http://yum.mariadb.org/
1、添加MariaDB yum源
vim /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.5 CentOS repository list
# http://yum.mariadb.org/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64/
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
2、清除yum源缓存并建立数据源
yum clean all
yum makecache
3、安装MariaDB新版本
yum install mariadb mariadb-server
yum install mariadb mariadb-client
4、启动新版MariaDB
service mysql start
// 启动后查看状态
service mysql status
5、升级已有数据库
mysql_upgrade -uroot -p --force
6 、配置开机自启动
systemctl enable mariadb
7、登录并检查数据
mysql -uroot -p
四、数据和配置恢复
1、恢复配置
查看配置是否丢失,如果出现丢失,拿最开始备份的配置恢复
vim /etc/my.cnf
2、恢复用户和数据
登录查看用户、存储过程、数据等,出现丢失,用户可以重新创建、数据拿最初的备份恢复
mysql -u root -p </home/alldb.sql