温馨提示×

MariaDB在Ubuntu上如何升级

小樊
39
2025-12-26 10:47:58
栏目: 云计算

Ubuntu 上升级 MariaDB 的完整步骤

一 升级前准备

  • 备份所有数据库与配置:使用逻辑备份确保可回滚,建议同时保留数据目录与配置文件的快照。示例:mysqldump -u root -p --all-databases --routines --triggers --single-transaction > /path/to/backup/all-databases.sql。如条件允许,停机后做文件系统级快照。
  • 记录现有版本与关键配置:执行 mysql -Vsudo systemctl status mariadb,并备份 /etc/mysql//var/lib/mysql/(注意权限与属主)。
  • 检查兼容性:跨小版本通常平滑,跨多个版本或跨发行版升级时,先评估应用与存储引擎(如 InnoDB)兼容性。
  • 选择升级路径:优先使用同一主版本的“小版本升级”(如 10.5.x → 10.5.y);跨主版本(如 10.3 → 10.11)建议先在测试环境演练。
  • 准备回滚方案:保留旧版本包与数据快照,确保可在短时间内恢复业务。
    以上备份与升级思路为 MariaDB 官方仓库与运维实践中的通用要求。

二 标准升级步骤(同一主版本内)

  • 更新系统软件包索引:sudo apt update && sudo apt upgrade -y
  • 备份当前数据库(见上节)。
  • 安装 MariaDB 新版本(保持同一主版本):sudo apt install mariadb-server mariadb-client
  • 重启服务:sudo systemctl restart mariadb
  • 执行安全初始化(如首次安装或需要重置策略):sudo mysql_secure_installation
  • 登录并核验版本:mysql -u root -p -e "SELECT VERSION();"
  • 如曾做过全量逻辑备份,可在确认无误后导入:mysql -u root -p < /path/to/backup/all-databases.sql
    上述流程适用于在同一主版本内使用 APT 原地升级的场景。

三 跨主版本或跨发行版升级

  • 备份与评估:完整备份与兼容性评估是必须步骤。
  • 添加 MariaDB 官方 APT 仓库(以 10.11 为例,替换为你的目标版本与系统代号):
    • 创建源文件:echo "deb [arch=amd64] https://mirror.yandex.ru/mariadb/repo/10.11/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/mariadb.list
    • 导入 GPG 公钥:sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
  • 更新索引并安装目标版本:sudo apt update && sudo apt install mariadb-server mariadb-client
  • 执行升级适配:sudo mysql_upgrade -u root -p(该步骤会检查并升级系统表结构、存储引擎等)。
  • 重启服务:sudo systemctl restart mariadb 并核验版本。
  • 不建议跨多个主版本一次性跳跃,必要时分步升级并在每一步核验。
    以上方法适用于跨主版本升级,包含添加官方仓库、导入密钥、安装与执行 mysql_upgrade 的关键环节。

四 常见问题与处理

  • root 登录报 “ERROR 1524 (HY000): Plugin ‘unix_socket’ is not loaded”
    原因多为认证插件变更或缺失。可按如下方式修复:
    1. 以系统管理员身份停止 MariaDB;2) 以跳过授权表方式启动:mysqld_safe --skip-grant-tables &
    2. 登录后执行:USE mysql; UPDATE user SET plugin='mysql_native_password' WHERE User='root'; FLUSH PRIVILEGES;(如需保留 socket 认证,可改为设置 plugin='unix_socket');
    3. 重启服务。
  • 从 MySQL 迁移到 MariaDB
    一般可直接安装 MariaDB 包覆盖,但需提前做好全量备份;跨大版本(如 MySQL 8.0 → MariaDB 10.11)更推荐用 mysqldump 逻辑迁移,避免系统表不兼容。
  • systemd 启动超时或 AppArmor 拦截
    检查是否存在 SysV 与 systemd 冲突、AppArmor 策略限制;必要时禁用冲突的 SysV 脚本或调整 AppArmor 配置后再试。
    以上问题为实际升级中高频案例,按文中方法可快速恢复。

五 回滚与验证

  • 快速回滚:若使用 APT 原地升级,可降级到旧版本包并恢复数据目录与配置文件;如做过快照,直接回滚快照更快。
  • 业务验证:核验表结构与数据一致性、主从复制状态(如有)、应用连接与性能基线。
  • 建议操作清单:
    • 核对 SELECT VERSION(); 与目标一致;
    • 抽样校验核心表行数与关键数据;
    • 检查错误日志 /var/log/mysql/error.log 是否存在异常;
    • 如启用复制/集群,确认 IO/SQL 线程正常。

0