温馨提示×

ubuntu mariadb如何进行版本迁移

小樊
39
2025-12-16 15:34:30
栏目: 云计算

Ubuntu 上 MariaDB 版本迁移与升级实操指南

一 迁移策略与前置准备

  • 明确目标与路径
    • 同版本小升级(如 10.3 → 10.3.x):优先采用就地升级,执行升级后数据字典检查与修复。
    • 跨小版本或大版本(如 10.1 → 10.5/10.11):建议导出导入(逻辑迁移),降低系统表不兼容风险。
    • MySQL → MariaDB:跨产品迁移以导出导入为主,避免直接覆盖安装导致系统库冲突。
  • 备份与回滚
    • 全量逻辑备份:mysqldump -u root -p --single-transaction --routines --triggers --all-databases > backup.sql
    • 物理备份(可选,用于同机回滚):使用 mariabackup 做热备,保留数据目录与配置,便于快速回退。
  • 版本匹配与变更要点
    • MySQL 5.7 → MariaDB 10.2+;从 MySQL 8.0+ 建议用 mysqldump 导出导入。
    • 升级前阅读目标版本的“升级注意事项/不兼容变更”,避免 InnoDB、系统库、权限插件等带来的问题。
  • 维护窗口与验证
    • 选择业务低峰期,预留回滚方案;升级后做数据一致性与主从/应用连通性验证。

二 就地升级步骤(同系列小版本,Ubuntu 常见)

  • 准备与停服
    • 备份:mysqldump -u root -p --single-transaction --routines --triggers --all-databases > backup.sql
    • 停服:sudo systemctl stop mariadb
  • 添加 MariaDB 官方 APT 源(示例为 10.5,按需替换版本与代号)
    • 导入密钥:sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    • 添加源(将 bionic/xenial 替换为 lsb_release -cs 输出):
      • echo "deb [arch=amd64] https://mirrors.ustc.edu.cn/mariadb/repo/10.5/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mariadb.list
    • 更新索引:sudo apt update
  • 执行升级
    • 安装新包:sudo apt install mariadb-server mariadb-client
    • 启动服务:sudo systemctl start mariadb
  • 升级数据字典与验证
    • 执行升级:sudo mariadb-upgrade -u root -p
    • 登录验证:mysql -VSELECT VERSION(); 查看版本;抽查关键库表。

三 跨版本或跨产品迁移步骤(导出导入,更稳妥)

  • 源库导出
    • 全量导出:mysqldump -u root -p --single-transaction --routines --triggers --set-gtid-purged=OFF --all-databases > backup.sql
    • 如跨产品(MySQL→MariaDB)或版本跨度大,避免复制系统库(mysql 等),仅导出业务库更稳妥。
  • 目标库安装
    • 按“二”的步骤在新环境配置目标版本 MariaDB(添加官方源、安装服务)。
  • 目标库导入
    • mysql -u root -p < backup.sql
  • 升级与验证
    • 执行:sudo mariadb-upgrade -u root -p
    • 校验数据一致性与应用连接(重点业务回归)。

四 常见问题与修复

  • root 登录报错:Plugin ‘unix_socket’ is not loaded
    • 原因:新版本 root 默认使用 unix_socket 认证,某些场景会失效。
    • 处理(任选其一):
      • 允许 socket 认证:UPDATE mysql.user SET plugin='unix_socket' WHERE User='root'; FLUSH PRIVILEGES;
      • 改用密码登录:在 [mysqld] 加入 plugin-load-add=auth_socket.so,重启后用 mysql -u root -p 登录并重置密码与插件。
  • 升级后启动慢或失败、systemd 超时
    • 现象:与 AppArmor 或 SysV/systemd 启动脚本交互异常。
    • 处理:
      • 禁用 SysV:sudo /lib/systemd/systemd-sysv-install disable mysql
      • 放宽 AppArmor:sudo aa-disable /usr/sbin/mysqld(必要时调整 /etc/apparmor.d/usr.sbin.mysqld 策略),重启。
  • 配置与网络
    • 远程连接失败:检查 bind-address(如注释或改为 0.0.0.0)、防火墙与用户授权(如 GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'pwd'; FLUSH PRIVILEGES;)。
    • 配置文件路径差异:不同版本/仓库的默认配置路径可能不同(如 /etc/mysql/mariadb.conf.d/50-server.cnf/etc/my.cnf),以实际安装为准。

0