Ubuntu上MySQL数据迁移的常见方法
mysqldump是MySQL官方提供的逻辑备份工具,适用于大多数场景(如跨版本、跨平台迁移),通过导出SQL语句实现数据迁移。
mysqldump命令,生成包含数据库结构和数据的SQL文件。例如,备份mydatabase数据库:mysqldump -u root -p mydatabase > mydatabase_backup.sql(执行后会提示输入密码,避免在命令中直接暴露密码)。scp等工具将SQL文件传输到目标服务器。例如:scp mydatabase_backup.sql user@target_server:/home/user/。mysql -u root -p -e "CREATE DATABASE mydatabase;"(创建数据库);mysql -u root -p mydatabase < /home/user/mydatabase_backup.sql(导入数据)。mysqlpump是MySQL 5.7及以上版本新增的并行备份工具,相比mysqldump速度更快(支持多线程导出),适合大型数据库。
--databases参数指定数据库:mysqlpump -u root -p --databases mydatabase > mydatabase_backup.sql。mysql命令导入即可。xtrabackup是Percona提供的物理备份工具,支持热备份(不停机备份),适用于InnoDB存储引擎,备份和恢复速度快,适合大型生产环境。
sudo apt-get install percona-xtrabackup-24(安装24版本,兼容性更好)。xtrabackup --backup --target-dir=/var/backups/mydatabase --user=root --password=your_password --databases=mydatabase。prepare命令使备份可恢复:xtrabackup --prepare --target-dir=/var/backups/mydatabase。copy-back命令恢复数据:xtrabackup --copy-back --target-dir=/var/backups/mydatabase --datadir=/var/lib/mysql;sudo chown -R mysql:mysql /var/lib/mysql),并启动MySQL服务:sudo systemctl start mysql。若源服务器和目标服务器在同一局域网,且MySQL数据目录(默认/var/lib/mysql)结构一致,可使用rsync直接同步数据文件,无需导出SQL,速度快。
sudo systemctl stop mysql,确保数据一致性。rsync -av /var/lib/mysql/ user@target_server:/var/lib/mysql/(-a表示归档模式,保留权限;-v显示进度)。sudo systemctl start mysql,检查数据完整性。若不熟悉命令行,可使用图形化工具实现可视化迁移,适合新手或简单场景。
mysqldump或xtrabackup),防止数据丢失。utf8mb4),避免乱码问题(可通过SHOW VARIABLES LIKE 'character_set%'查看)。chown -R mysql:mysql /var/lib/mysql)。