温馨提示×

Ubuntu MySQL数据迁移步骤有哪些

小樊
43
2025-09-14 13:58:49
栏目: 云计算

以下是Ubuntu下MySQL数据迁移的常见步骤及方法,可根据场景选择:

一、逻辑迁移(推荐中小型数据库)

1. 备份源数据库
使用mysqldump导出数据(含结构),添加--single-transaction确保一致性:

mysqldump -u [用户名] -p[密码] --databases [源库名] > backup.sql  

2. 传输备份文件
通过scprsyncbackup.sql复制到目标服务器:

scp backup.sql user@[目标服务器IP]:/path/to/destination/  

3. 恢复到目标数据库
在目标服务器执行导入命令:

mysql -u [用户名] -p[密码] [目标库名] < /path/to/backup.sql  

4. 验证数据
登录目标数据库,检查表结构和数据是否完整:

USE [目标库名]; SHOW TABLES; SELECT COUNT(*) FROM [表名];  

二、物理迁移(适合大数据量或需保留原配置)

1. 停止MySQL服务

sudo systemctl stop mysql  

2. 迁移数据目录

  • /var/lib/mysql数据目录复制到新位置(如/mnt/mysql),保留权限:
sudo rsync -av /var/lib/mysql/ /mnt/mysql/  
  • 修改新目录权限:
sudo chown -R mysql:mysql /mnt/mysql  

3. 修改配置文件
编辑/etc/mysql/mysql.conf.d/mysqld.cnf,更新datadir路径:

datadir = /mnt/mysql  

4. 调整AppArmor(Ubuntu特有)
/etc/apparmor.d/usr.sbin.mysqld中添加新路径权限,重载配置:

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld  

5. 启动服务并验证

sudo systemctl start mysql  
sudo mysql -e "SHOW VARIABLES LIKE 'datadir';"  # 确认路径正确  

三、在线迁移(零停机,适合生产环境)

1. 主从复制配置

  • 源服务器:启用二进制日志,创建复制用户:
-- 在my.cnf中添加  
[mysqld]  
server-id = 1  
log-bin = /var/log/mysql/mysql-bin.log  
binlog-do-db=[库名]  
  • 目标服务器:配置为从库,指向主库:
CHANGE MASTER TO  
MASTER_HOST='主库IP',  
MASTER_USER='replicator',  
MASTER_PASSWORD='密码',  
MASTER_LOG_FILE='binlog文件名',  
MASTER_LOG_POS=位置;  
START SLAVE;  

四、工具迁移(图形化或高效方案)

  • MySQL Workbench:通过“数据导出/导入”功能,支持可视化操作。
  • Percona XtraBackup:热备份InnoDB数据,适合大规模数据库。

注意事项

  • 迁移前务必备份数据,避免丢失。
  • 确保目标服务器MySQL版本与源库兼容。
  • 迁移后测试应用程序连接,更新配置文件中的数据库地址。

根据数据规模和业务需求选择合适方案,小型库优先用mysqldump,大型库可考虑xtrabackup或主从复制。

0