温馨提示×

MariaDB在Linux上的数据迁移技巧

小樊
40
2025-10-12 00:42:01
栏目: 云计算

1. 常规工具迁移(mysqldump/mariadb-dump + mysql/mariadb-restore)
这是Linux环境下最基础、最常用的迁移方法,适用于中小型数据库。步骤如下:

  • 备份源数据库:使用mysqldump(兼容MySQL/MariaDB)或mariadb-dump(MariaDB专用)导出数据。例如,备份单个数据库:mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql(注意-p与密码无空格);备份所有数据库:添加--all-databases参数。
  • 传输备份文件:通过scp命令将backup.sql复制到目标服务器,如scp backup.sql user@target_ip:/path/to/destination
  • 目标端准备:登录目标服务器,创建目标数据库:mysql -u [用户名] -p[密码] -e "CREATE DATABASE [新数据库名];"
  • 恢复数据:使用mysqlmariadb-restore导入数据,如mysql -u [用户名] -p[密码] [新数据库名] < /path/to/destination/backup.sql
  • 验证数据:连接目标数据库,检查表结构和数据完整性:USE [新数据库名]; SHOW TABLES; SELECT COUNT(*) FROM [表名];

2. 热备份工具迁移(xtrabackup/percona-xtrabackup)
适用于大型数据库或需要零停机迁移的场景,支持InnoDB/XtraDB存储引擎的热备份(无需停止MariaDB服务)。步骤如下:

  • 安装xtrabackup:在源/目标服务器上安装Percona XtraBackup,如Ubuntu/Debian使用sudo apt-get install percona-xtrabackup-24,CentOS/RHEL使用sudo yum install percona-xtrabackup-24
  • 源端全量备份:执行xtrabackup --backup --target-dir=/path/to/backup --user=[用户名] --password=[密码],生成备份目录。
  • 准备备份:运行xtrabackup --prepare --target-dir=/path/to/backup,将备份转换为可恢复状态。
  • 传输备份:将备份目录压缩(tar -czvf backup.tar.gz /path/to/backup)后传输到目标服务器。
  • 目标端恢复:解压备份(tar -xzvf backup.tar.gz -C /),执行xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql--datadir为目标数据目录),恢复完成后修改目录权限:chown -R mysql:mysql /var/lib/mysql
  • 重启服务:重启MariaDB使恢复生效:sudo systemctl restart mariadb

3. 图形化工具迁移(phpMyAdmin)
适合不熟悉命令行的用户,通过web界面完成迁移。步骤如下:

  • 导出数据:在源服务器的phpMyAdmin中,选择目标数据库,点击顶部“导出”标签,选择“快速”导出方式(SQL格式),点击“执行”下载backup.sql
  • 传输文件:使用scp或FTP将backup.sql传输到目标服务器。
  • 导入数据:在目标服务器的phpMyAdmin中,选择目标数据库,点击“导入”标签,上传backup.sql文件,点击“执行”完成导入。

4. 迁移注意事项

  • 版本兼容性:确保目标服务器MariaDB版本与源服务器兼容(如MariaDB 10.5可兼容10.3/10.4,但需避免跨大版本升级,如10.3→10.6需先升级至中间版本)。
  • 字符集一致性:迁移前后需保持字符集(如utf8mb4)和排序规则(如utf8mb4_general_ci)一致,避免乱码。可在恢复时指定字符集:mysql --default-character-set=utf8mb4 -u [用户名] -p[密码] [数据库名] < backup.sql,或在目标数据库中转换:ALTER DATABASE [数据库名] CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ALTER TABLE [表名] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 停机时间规划:大型数据库迁移建议在业务低峰期进行,若使用mysqldump,停机时间为备份和恢复的总时长;若使用xtrabackup,可实现几乎零停机(仅最后一次备份需短暂锁表)。
  • 网络稳定性:传输备份文件时,建议使用scp(加密)或rsync(增量传输),避免因网络中断导致备份损坏。
  • 数据验证:迁移后务必核对关键数据(如记录数、字段值),可通过SELECT COUNT(*)CHECKSUM TABLE命令验证一致性。

0