MariaDB数据迁移主要分为逻辑迁移(通过SQL文件传输)和物理迁移(直接复制数据文件)两类。逻辑迁移适用于跨版本、跨平台或需要保留完整数据库结构的场景;物理迁移适用于大规模数据、追求高速迁移的场景,但需确保源与目标环境一致(如MariaDB版本、文件系统、配置参数)。
常用工具:
逻辑迁移是最常用的方式,适用于大多数场景,步骤如下:
使用mysqldump导出源数据库数据,支持以下常见选项:
mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql(如mysqldump -u root -p mydb > mydb_backup.sql);mysqldump -u [用户名] -p --all-databases > full_backup.sql;mysqldump -u [用户名] -p [数据库名] | gzip > backup.sql.gz;mysqldump -u [用户名] -p [数据库名] [表名1] [表名2] > tables_backup.sql。使用scp(安全复制)将备份文件传输到目标Ubuntu服务器,命令格式:
scp backup.sql [目标服务器用户名]@[目标服务器IP]:/目标路径(如scp mydb_backup.sql user@192.168.1.100:/home/user/backups)。
若使用压缩文件,传输后需解压:gunzip backup.sql.gz。
安装MariaDB(若未安装):
sudo apt update
sudo apt install mariadb-server mariadb-client
安装过程中会提示设置root密码,需记住该密码。
创建目标数据库(若备份的是单个数据库):
登录MariaDB后,执行CREATE DATABASE [数据库名];(如CREATE DATABASE mydb;)。
使用mysql命令导入备份文件:
mysql -u [用户名] -p[密码] [数据库名] < backup.sql(如mysql -u root -p mydb < mydb_backup.sql);mysql -u [用户名] -p < full_backup.sql。登录目标MariaDB,执行以下命令检查数据:
-- 查看数据库列表
SHOW DATABASES;
-- 选择目标数据库
USE [数据库名];
-- 查看表列表
SHOW TABLES;
-- 查询表数据(如查看前10行)
SELECT * FROM [表名] LIMIT 10;
确保所有数据库、表及数据均正确导入。
若需迁移整个MariaDB数据目录(如从旧服务器迁移到新服务器),可使用物理迁移,步骤如下:
迁移前需停止服务,避免数据损坏:
sudo systemctl stop mariadb
源服务器数据默认存储在/var/lib/mysql,使用rsync同步到目标服务器:
# 在目标服务器执行(需替换源服务器IP和路径)
rsync -avz -e ssh [源服务器用户名]@[源服务器IP]:/var/lib/mysql /var/lib/mysql
-avz选项表示归档模式、显示进度、压缩传输。
确保目标数据目录的属主为mysql用户(MariaDB默认运行用户):
sudo chown -R mysql:mysql /var/lib/mysql
编辑MariaDB配置文件(通常为/etc/mysql/mariadb.conf.d/50-server.cnf),找到datadir行,修改为新的数据目录路径:
[mysqld]
datadir = /var/lib/mysql
保存并退出。
# 启动MariaDB
sudo systemctl start mariadb
# 检查状态(确保为active状态)
sudo systemctl status mariadb
# 登录验证数据
mysql -u [用户名] -p -e "SHOW DATABASES;"
若状态正常且能查询到数据库,说明迁移成功。
scp、rsync over SSH),目标服务器MariaDB用户需有足够权限(如ALL PRIVILEGES);CREATE、INSERT权限);mysqldump的--single-transaction选项(适用于InnoDB)保证一致性,或物理迁移前停止写入;mysqldump的--compress选项压缩传输,或物理迁移时使用rsync的--bwlimit限制带宽。