答案:使用mysqlpump可高效迁移数据库,支持并行导出和压缩。先确认工具可用,导出数据库为SQL文件,通过scp传输至目标服务器,再用mysql或mysqlpump导入,最后验证数据一致性。适用于中小型库迁移。
使用 MySQL Shell 的 mysqlpump 进行数据库迁移
mysqlpump 是 MySQL 官方提供的逻辑备份工具,从 MySQL 5.7 开始推荐用于替代 mysqldump。它支持并行导出、压缩、分库分表导出等功能,适合中大型数据库的迁移和备份。
1. 确认 mysqlpump 是否可用
确保你的 MySQL 安装包含了 mysqlpump 工具。通常在 MySQL 安装目录的 bin 路径下:
which mysqlpump # 或 mysqlpump --version
如果提示命令未找到,请确认是否安装了完整的 MySQL Server 或 MySQL Shell 工具包。
2. 使用 mysqlpump 导出数据库
基本语法如下:
mysqlpump -u [用户名] -p[密码] [选项] [数据库名] > backup.sql
常见用法示例:
- 导出单个数据库:
mysqlpump -u root -p my_database > my_database_backup.sql
- 导出多个数据库:
mysqlpump -u root -p --databases db1 db2 > multi_db_backup.sql
- 导出所有数据库(包括系统库):
mysqlpump -u root -p --all-databases > full_backup.sql
- 启用压缩以减小文件体积:
mysqlpump -u root -p --compress-output=ZLIB my_database > compressed_backup.sqlz
注意:压缩后文件需用
mysqlpump --decompress
恢复。
- 并行导出提升速度(适用于大库):
mysqlpump -u root -p --default-parallelism=4 --chunk-filesize=100 my_database > parallel_backup.sql
3. 将备份文件迁移到目标服务器
使用 scp、rsync 或其他方式将导出的 SQL 文件传输到目标 MySQL 服务器:
scp my_database_backup.sql user@target_host:/tmp/
4. 在目标服务器导入数据
导入前确保目标 MySQL 版本兼容,且用户有足够权限。
- 导入普通 SQL 备份:
mysql -u root -p my_database < my_database_backup.sql
- 导入压缩备份:
mysqlpump --decompress -u root -p my_database < compressed_backup.sqlz
- 导入时创建数据库(若不存在): 先手动创建:
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS my_database;"
再导入。
5. 验证迁移结果
登录目标数据库,检查表结构和数据是否完整:
USE my_database; SHOW TABLES; SELECT COUNT(*) FROM some_table;
对比源库和目标库的数据量和关键记录,确保一致性。
基本上就这些。mysqlpump 操作简单,适合跨主机迁移中小型数据库。注意网络稳定性、磁盘空间和字符集设置,避免导入失败。对于超大数据库,建议结合物理备份工具如 Percona XtraBackup。