温馨提示×

Ubuntu MariaDB升级要注意什么

小樊
31
2025-12-30 08:36:02
栏目: 云计算

Ubuntu 上升级 MariaDB 的关键注意事项

一 升级前的准备

  • 完整备份:优先使用物理/快照级备份(如云盘快照),再做逻辑备份。推荐导出全库与关键系统库:mysqldump -u root -p --single-transaction --routines --triggers --events --all-databases > full_backup.sql;同时备份配置文件与数据目录:/etc/mysql//var/lib/mysql/。升级前确保备份可用(做一次恢复演练)。
  • 版本与变更评估:确认当前版本与目标版本,阅读发行说明中的不兼容变更与废弃特性;跨小版本/跨大版本升级要分别评估风险。
  • 兼容性核查:核对 PHP、Apache/应用代码、连接器/驱动、存储引擎、字符集/排序规则 等在新版本的行为差异;必要时先在测试环境验证。
  • 资源与窗口:确保磁盘空间充足、网络稳定,选择业务低峰窗口,并做好回滚预案(保留旧版本包、快照、备份)。

二 升级路径与仓库管理

  • 优先使用发行版仓库:在 Ubuntu 上,优先通过 apt 使用系统自带或官方镜像仓库升级,减少依赖与冲突风险。
  • 需要新版本时再添加官方仓库:如需高于发行版仓库的版本,先导入 MariaDB GPG 密钥,再添加对应版本的 APT 仓库,然后 apt update。示例:
    • 导入密钥:wget -O /etc/apt/trusted.gpg.d/mariadb.gpg https://download.mariadb.org/MariaDB/mariadb_release_signing.key
    • 添加仓库(以 Ubuntu 20.04 focalMariaDB 10.5 为例):
      sudo add-apt-repository 'deb [arch=amd64,arm64,armhf] https://download.mariadb.org/mariadb/repo/10.5/ubuntu focal main'
  • 避免混源:不要同时启用多个 MariaDB 仓库;升级完成后可禁用临时仓库,减少误装风险。

三 执行升级的正确顺序

  • 小版本就地升级(推荐)
    1. sudo apt update && sudo apt upgrade mariadb-server mariadb-client
    2. 重启服务:sudo systemctl restart mariadb
    3. 验证版本:mysql -V 或在客户端执行 SELECT VERSION();
  • 跨小版本/跨大版本升级
    1. 完整备份(物理+逻辑);
    2. 按前述步骤切换到目标版本的官方仓库
    3. 执行安装/升级:sudo apt install mariadb-server(会替换旧包);
    4. 执行升级后检查与修复:sudo mysql_upgrade(必要时加 -u root -p);
    5. 重启服务并验证。
  • 从 MySQL 迁移到 MariaDB:建议采用导出与重新导入的方式(逻辑迁移),先 mysqldump 全量备份,再在新环境安装 MariaDB 并导入,避免就地替换带来的系统表不兼容风险。

四 升级后的验证与回滚

  • 版本与服务状态:确认 mysql -V 与服务 systemctl status mariadb 正常;检查错误日志:/var/log/mysql/error.log
  • 权限与系统表:确保 mysql_upgrade 已成功执行,系统表结构/权限已升级;如手工执行,完成后重启服务。
  • 应用连通性:在测试环境验证 PHP/应用 连接、查询与写入;检查慢查询、错误日志与复制状态(如启用)。
  • 回滚预案:若出现异常,优先恢复到升级前快照/备份,或切换到旧版本包并导入备份数据;回滚后再次核对版本与数据一致性。

五 常见坑与实用建议

  • 配置与目录变更:升级可能带来 my.cnf 变更与数据目录调整;谨慎合并配置,变更后需重启;避免直接覆盖自定义配置。
  • 存储引擎与特性:跨版本可能新增/废弃引擎或特性(如 InnoDB 改进、系统版本表等),上线前在测试环境验证业务 SQL 与性能。
  • 安全加固:升级完成后运行 sudo mysql_secure_installation 进行安全设置(密码策略、匿名用户、远程 root、测试库等)。
  • LAMP 组件联动:同步检查 PHP 扩展(如 php-mysql) 与新版本 MariaDB 的兼容性,必要时升级 PHP 并重启 Apache/Nginx

0