ubuntu mariadb如何进行版本迁移
导读:Ubuntu 上 MariaDB 版本迁移与升级实操指南 一 迁移策略与前置准备 明确目标与路径 同版本小升级(如 10.3 → 10.3.x):优先采用就地升级,执行升级后数据字典检查与修复。 跨小版本或大版本(如 10.1 → 10...
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 -V与SELECT 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登录并重置密码与插件。
- 允许 socket 认证:
- 升级后启动慢或失败、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策略),重启。
- 禁用 SysV:
- 配置与网络
- 远程连接失败:检查
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),以实际安装为准。
- 远程连接失败:检查
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu mariadb如何进行版本迁移
本文地址: https://pptw.com/jishu/773409.html
