首页主机资讯Debian MariaDB数据库迁移方法

Debian MariaDB数据库迁移方法

时间2026-01-22 08:01:03发布访客分类主机资讯浏览1487
导读:Debian 上 MariaDB 迁移实操指南 一 迁移总览与版本选择 迁移常见两类:同机就地替换(MySQL → MariaDB)与跨机迁移(导出 SQL 再导入)。MariaDB 与 MySQL 命令工具通用,迁移以 mysqldum...

Debian 上 MariaDB 迁移实操指南

一 迁移总览与版本选择

  • 迁移常见两类:同机就地替换(MySQL → MariaDB)与跨机迁移(导出 SQL 再导入)。MariaDB 与 MySQL 命令工具通用,迁移以 mysqldump 导出/导入为主,适合绝大多数场景。
  • 就地替换时建议按版本匹配进行升级,减少不兼容风险:
    • MySQL 5.6 → MariaDB 10.0+
    • MySQL 5.7 → MariaDB 10.2+
    • MySQL 8.0+ → 建议用 mysqldump 逻辑迁移(避免存储引擎/特性差异带来的问题)
  • 就地替换完成后,执行 mysql_upgrade 完成系统表升级;跨机迁移则导入后再校验权限与数据一致性。

二 同机就地替换 MySQL 为 MariaDB(Debian)

  • 准备与备份
    • 全量逻辑备份(含存储过程/触发器/事件,关闭 GTID 信息以减少跨版本问题):
      • 仅库结构与数据:
        • mysqldump -uroot -p --databases 你的库1 你的库2 --routines --triggers --events --single-transaction --hex-blob --set-gtid-purged=OFF > backup.sql
      • 全实例(含用户与权限):
        • mysqldump -uroot -p --all-databases --routines --triggers --events --single-transaction --hex-blob --set-gtid-purged=OFF > backup.sql
    • 备份配置文件:sudo cp -a /etc/mysql /etc/mysql.bak
  • 安装 MariaDB(两种做法)
    • 使用发行版仓库(推荐):sudo apt update & & sudo apt install mariadb-server mariadb-client
    • 需要更新版本时,先导入 MariaDB 官方仓库,再安装对应版本(以官网工具生成源条目为准)。
  • 替换与启动
    • 停止旧服务:sudo systemctl stop mysql
    • 如采用覆盖安装,安装过程会替换包;安装完成后启动:sudo systemctl start mariadb
  • 升级系统表与权限
    • 执行升级:sudo mysql_upgrade -u root -p
    • 重启:sudo systemctl restart mariadb
  • 验证
    • 登录检查:mysql -uroot -p -e “SELECT VERSION(); SHOW DATABASES; ”
    • 抽样校验表数量/数据量,确认应用可正常连接。

三 跨机迁移或同机换目录的数据迁移

  • 导出
    • 单库:mysqldump -h 源主机 -u 用户 -p 数据库名 --single-transaction --hex-blob --set-gtid-purged=OFF > dump.sql
    • 多库/全库:mysqldump -h 源主机 -u 用户 -p --databases 库1 库2 … 或 --all-databases … > dump.sql
  • 传输
    • scp dump.sql 目标主机:/tmp/
  • 在目标 Debian 主机导入
    • 方法 A:mysql -uroot -p < /tmp/dump.sql
    • 方法 B:mysql -uroot -p 登录后执行:SOURCE /tmp/dump.sql;
  • 字符集与 GTID
    • 建议导出时显式指定字符集(如 utf8mb4),并在跨版本导入时关闭 GTID 信息(–set-gtid-purged=OFF),避免目标端报错。

四 配置文件与数据目录迁移要点

  • 配置文件
    • Debian 上 MariaDB 配置可能分散在多个目录,使用:mariadb --help | grep “Default options” 查看读取顺序;常见位置含 /etc/mysql//etc/mysql/mariadb.conf.d/。迁移后按需合并原有 my.cnf 配置项(如 innodb_buffer_pool_size、max_connections、log_error 等)。
  • 数据目录
    • 确认当前 datadir:mysql -uroot -p -e “SHOW GLOBAL VARIABLES LIKE ‘%datadir%’; ”
    • 迁移步骤(示例将 /var/lib/mysql 迁至 /data/mysql):
      • 停服务:sudo systemctl stop mariadb
      • 备份并迁移:sudo rsync -av /var/lib/mysql/ /data/mysql/
      • 备份原目录:sudo mv /var/lib/mysql /var/lib/mysql.bak
      • 配置 datadir=/data/mysql(在 /etc/mysql/mariadb.conf.d/50-server.cnf 的 [mysqld] 段)
      • 启动:sudo systemctl start mariadb
      • 验证:再次执行 SHOW GLOBAL VARIABLES LIKE ‘%datadir%’; 并检查错误日志。

五 常见问题与排错

  • root 免密或无法用密码登录
    • 检查认证插件:SELECT user,host,plugin FROM mysql.user WHERE user=‘root’;
    • 如需密码登录:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’; FLUSH PRIVILEGES;
    • 如需保持 socket 免密:UPDATE mysql.user SET plugin=‘unix_socket’ WHERE user=‘root’; FLUSH PRIVILEGES; (并在配置中确保加载 auth_socket 插件)。
  • 服务启动超时或 AppArmor 拦截
    • 检查端口占用:ss -lntp | grep 3306 或 lsof -i:3306
    • 视情况处理 AppArmor/旧 SysV 脚本冲突(如禁用冲突脚本或调整 AppArmor 策略),再重启服务。
  • 导入时报 GTID 相关错误
    • 重新导出时加上:–set-gtid-purged=OFF,再导入目标库。
  • 字符集乱码
    • 导出与导入统一使用 utf8mb4,并在连接参数中指定字符集。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian MariaDB数据库迁移方法
本文地址: https://pptw.com/jishu/789750.html
Debian MariaDB权限设置如何操作 Debian系统与Kubernetes的集成实践

游客 回复需填写必要信息