基本上就是按照官网的教程来的,流程是先备份,然后停止mariadb服务,卸载,重新安装,一整套流程走下来理论上是不需要恢复数据的,当安装到新版本的mariadb数据库,数据库还是正常可以保留的,升级全程大概10分钟,并且对网站的影响很小(1分钟左右)。
- 服务器备份快照。
- 备份。
在 MariaDB Community Server 10.3 及更早的版本中,可以使用 mariabackup 工具进行备份(由于我的数据库版本是10.3,所以下方的教程均以10.3版本为例,如果是10.4版本以上,方式略有不同,请参考下方官网链接):
sudo mariabackup --backup \
--user=mariabackup_user \
--password=mariabackup_passwd \
--target-dir=/data/backup/preupgrade_backup
sudo mariabackup --prepare \
--target-dir=/data/backup/preupgrade_backup
- 停止mariadb服务
打开数据库命令行,或者在Navicat中依次输入:
SET GLOBAL innodb_fast_shutdown = 1;
XA RECOVER;
这两个步骤是在升级 MariaDB 服务器之前执行的预备工作,目的是确保数据库处于一个稳定且可靠的状态,以防止在升级过程中发生数据损坏或其他问题。
MariaDB 关闭时,InnoDB 存储引擎会执行一些清理和日志刷新等操作。将 innodb_fast_shutdown 设置为1表示尽可能快速地关闭,而不进行额外的数据检查和清理,这有助于加速关闭过程。
XA 是一种用于支持分布式事务的协议,XA RECOVER 命令用于检查是否有未完成的外部 XA 事务。在升级之前,确保没有处于准备状态的 XA 事务,如果有,需要先提交或回滚这些事务。
$ sudo systemctl stop mariadb
此时数据库开始无法访问。
- 卸载。与官网教程略有区别,yum移除包时区分大小写,mariadb和Mariadb完全不同
sudo yum remove "mariadb-*"
sudo yum remove galera
如果此时输入下方命令没有任何结果返回,则证明此步OK
$ rpm --query --all | grep -i -E "mariadb|galera"
- 安装新版本
cd /data
wget https://r.mariadb.com/downloads/mariadb_repo_setup
echo "30d2a05509d1c129dd7dd8430507e6a7729a4854ea10c9dcf6be88964f3fdc25 mariadb_repo_setup" \
| sha256sum -c -
chmod +x mariadb_repo_setup
sudo ./mariadb_repo_setup \
--mariadb-server-version="mariadb-10.6"
sha256sum 是一个 Linux/Unix 系统上的命令行工具,用于计算文件的 SHA-256 摘要(hash)。-c 是 sha256sum 命令的一个选项,它用于检查文件的校验和。
-c:该选项告诉 sha256sum 执行校验操作。
-:这表示从标准输入(stdin)读取校验和信息。
sudo yum install MariaDB-server MariaDB-backup
- 恢复配置文件,由于我的配置文件都是默认的,所以此步跳过。
- 启动mariadb,此步数据库已恢复,可以看到数据库中的表均正常
sudo systemctl start mariadb
sudo systemctl enable mariadb
- 更新。mariadb-upgrade。一般建议MariaDB 服务器停止的情况下运行此命令,但是我在实际测试中,发现没啥影响。
sudo mariadb-upgrade -u root -p
`mariadb-upgrade` 是 MariaDB 数据库系统提供的一个工具,用于在升级 MariaDB 服务器版本时执行必要的操作。主要任务包括:
1. 升级系统表:`mariadb-upgrade` 将更新系统表,以适应新版本的 MariaDB。这包括修改表结构、添加新列、删除不再需要的列等。
2. 升级存储引擎:如果新版本的 MariaDB 包含了对存储引擎的改进或变化,`mariadb-upgrade` 会执行相应的操作,确保现有的数据和表结构可以在新版本中正常工作。
3. 执行其他必要的升级步骤:在升级过程中,可能还涉及一些其他必要的步骤,如执行特定版本之间的转换脚本、更新配置文件等。
- 测试
SELECT VERSION()
参考:
https://mariadb.com/docs/server/service-management/upgrades/community-server/release-series-cs10-6/