温馨提示×

Debian MariaDB数据迁移方法有哪些

小樊
49
2025-10-17 03:03:40
栏目: 云计算

1. 使用mysqldump工具迁移(逻辑备份与恢复)
这是Debian环境下最常用的MariaDB数据迁移方法,适用于跨版本(如MySQL迁移到MariaDB)、跨服务器的场景。步骤如下:

  • 备份源数据库:在源服务器上使用mysqldump命令导出数据,可选择导出单个数据库(mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql)或所有数据库(mysqldump -u [用户名] -p[密码] --all-databases > full_backup.sql)。
  • 传输备份文件:通过scp命令将生成的.sql文件复制到目标服务器(scp backup.sql [目标服务器用户名]@[目标服务器IP]:/path/to/destination)。
  • 创建目标数据库:登录目标服务器的MariaDB,执行CREATE DATABASE [新数据库名];创建空数据库。
  • 导入备份数据:使用mysql命令将备份文件导入目标数据库(mysql -u [用户名] -p[密码] [新数据库名] < backup.sql)。
  • 验证数据完整性:登录目标数据库,检查表结构(SHOW CREATE TABLE [表名];)和数据量(SELECT COUNT(*) FROM [表名];)是否与源数据库一致。

2. 直接复制数据目录(物理迁移)
适用于同版本MariaDB之间的快速迁移,或需要保留数据库文件(如InnoDB表空间文件)的场景。步骤如下:

  • 停止源服务器MariaDB服务systemctl stop mariadb
  • 复制数据目录:默认数据目录为/var/lib/mysql,使用cp -R -p /var/lib/mysql/* /新目录路径/复制所有文件(-p参数保留文件权限和时间戳)。
  • 修改目标服务器配置文件:编辑/etc/mysql/mariadb.conf.d/50-server.cnf,将datadir参数修改为新目录路径(如datadir = /新目录路径)。
  • 调整SELinux/AppArmor权限:若目标服务器启用了SELinux或AppArmor,需修改相应策略允许MariaDB访问新目录。
  • 启动目标服务器MariaDB服务systemctl start mariadb,并通过SHOW DATABASES;验证数据是否加载成功。

3. MySQL与MariaDB版本升级迁移
若从MySQL迁移到MariaDB(或MariaDB跨大版本升级),需利用其二进制兼容性特性。步骤如下:

  • 备份源MySQL数据库:使用mysqldump导出所有数据(mysqldump -u [用户名] -p[密码] --all-databases --master-data > backup.sql)。
  • 卸载源MySQL:在Debian上执行sudo apt-get remove --purge mysql-server mysql-client mysql-common,并删除残留数据目录(rm -rf /var/lib/mysql)。
  • 安装MariaDB:通过apt添加MariaDB官方仓库(如sudo apt install software-properties-common && sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db && sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/10.5/debian bullseye main'),然后安装MariaDB(sudo apt install mariadb-server)。
  • 恢复数据:启动MariaDB后,导入之前导出的.sql文件(mysql -u [用户名] -p[密码] < backup.sql)。
  • 验证兼容性:检查字符集(SHOW VARIABLES LIKE 'character_set%';)、存储引擎(SHOW ENGINES;)等设置是否符合预期。

4. 迁移注意事项

  • 版本兼容性:确保目标MariaDB版本不低于源数据库版本(如MySQL 5.7数据可直接迁移到MariaDB 10.5,但MariaDB 10.6+可能不兼容旧版本MySQL)。
  • 网络稳定性:跨服务器迁移时,使用scprsync等可靠工具传输备份文件,避免中断导致数据损坏。
  • 数据一致性:迁移前锁定源数据库(FLUSH TABLES WITH READ LOCK;),确保备份时数据无变动;大型数据库可分批迁移。
  • 字符集处理:若源数据库与目标数据库字符集不同(如UTF-8与Latin1),导入前需转换字符集(ALTER DATABASE [新数据库名] CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;)或导出时指定字符集(mysqldump -u [用户名] -p[密码] --default-character-set=utf8mb4 [数据库名] > backup.sql)。

0