温馨提示×

MariaDB在Linux上的数据迁移步骤

小樊
57
2025-11-02 11:54:01
栏目: 云计算

1. 准备工作
迁移前需完成两项基础准备:一是确认版本兼容性,目标服务器的MariaDB版本应与源服务器兼容(如无特殊需求,建议选择相同主版本);二是评估数据规模,大型数据库(如超过10GB)需选择更高效的迁移工具(如xtrabackup),并预留充足的迁移时间。

2. 方法一:使用mysqldump工具(逻辑备份,适合中小型数据库)

  • 备份源数据库:登录源服务器,使用mysqldump命令导出数据。导出单个数据库的命令为:mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql(如mysqldump -uroot -pMySecretPassword mydb > mydb_backup.sql);导出所有数据库的命令为:mysqldump -u [用户名] -p[密码] --all-databases > full_backup.sql。执行后会生成包含建表语句、插入数据的SQL文件。
  • 传输备份文件:使用scp命令将备份文件复制到目标服务器,例如:scp backup.sql user@target_server_ip:/path/to/destination/(替换为用户、IP和目标路径)。
  • 恢复数据到目标服务器:登录目标服务器,确保已安装MariaDB。若未安装,可通过包管理器安装(如Ubuntu:sudo apt install mariadb-server mariadb-client;CentOS:sudo yum install mariadb-server mariadb)。恢复数据时,使用mysql命令导入:mysql -u [用户名] -p[密码] [数据库名] < /path/to/destination/backup.sql(如mysql -uroot -pMySecretPassword mydb < /home/user/mydb_backup.sql)。
  • 核对数据完整性:连接目标数据库,检查数据库、表及数据是否完整。常用命令:USE [数据库名]; SHOW TABLES; SELECT COUNT(*) FROM [表名];(如USE mydb; SHOW TABLES; SELECT COUNT(*) FROM users;)。

3. 方法二:使用xtrabackup工具(物理备份,适合大型/生产数据库)

  • 安装xtrabackup:在源和目标服务器上安装Percona XtraBackup(支持InnoDB热备份),例如Ubuntu:sudo apt install percona-xtrabackup-24;CentOS:sudo yum install percona-xtrabackup-24
  • 源服务器备份:执行全量备份,命令:xtrabackup --backup --user=[用户名] --password=[密码] --target-dir=/path/to/backup(如xtrabackup --backup --user=root --password=MySecretPassword --target-dir=/var/backups/mariadb),备份文件会保存到指定目录。
  • 传输备份文件:使用scp -r递归复制备份目录到目标服务器,例如:scp -r /var/backups/mariadb user@target_server_ip:/path/to/destination/
  • 目标服务器准备恢复:解压备份目录(若为压缩文件),执行xtrabackup --prepare --target-dir=/path/to/destination/backup,将备份文件转换为可恢复状态。
  • 恢复数据:停止目标MariaDB服务(sudo systemctl stop mariadb),将备份数据复制到数据目录(如/var/lib/mysql):xtrabackup --copy-back --target-dir=/path/to/destination/backup --datadir=/var/lib/mysql,恢复后修改数据目录权限:sudo chown -R mysql:mysql /var/lib/mysql
  • 启动服务并验证:启动MariaDB服务(sudo systemctl start mariadb),登录数据库检查数据完整性(同方法一的核对步骤)。

4. 方法三:迁移数据目录(适用于同一Linux系统内的版本升级或路径变更)

  • 停止服务:停止源服务器上的MariaDB服务,命令:sudo systemctl stop mariadb
  • 复制数据文件:MariaDB默认数据目录为/var/lib/mysql,使用cp -a(保留权限)复制到新位置,例如:sudo cp -a /var/lib/mysql /new/location/mysql
  • 修改配置文件:编辑MariaDB配置文件(通常为/etc/mysql/mariadb.conf.d/50-server.cnf/etc/my.cnf),找到datadir参数,修改为新路径:datadir=/new/location/mysql
  • 修改权限:确保新数据目录的所有者为mysql用户,命令:sudo chown -R mysql:mysql /new/location/mysql
  • 启动服务并验证:启动MariaDB服务(sudo systemctl start mariadb),登录数据库检查数据是否正常。

5. 注意事项

  • 测试环境验证:正式迁移前,务必在测试环境模拟整个流程,避免生产环境数据丢失。
  • 版本兼容性:确保目标服务器MariaDB版本与源服务器兼容(如MariaDB 10.5无法直接迁移至10.10,需中间过渡版本)。
  • 网络稳定性:大型备份文件传输时,建议使用稳定的有线网络或断点续传工具(如rsync),避免中断。
  • 字符集一致性:恢复数据前,检查目标数据库的字符集(如utf8mb4)与源数据库一致,避免乱码问题。
  • 服务停机时间:物理备份(xtrabackup)支持热备份(不停机),逻辑备份(mysqldump)需停机,建议在业务低峰期执行。

0