如何无需额外软件在两台Linux主机间迁移MySQL数据库,避免重复写SQL?
嘿,这个需求太常见了!不用额外装软件完全没问题——咱们直接用MySQL自带的工具加上Linux原生命令就能搞定,全程都是系统默认就有的东西,省得折腾安装包。下面一步步给你说清楚:
步骤1:在源Linux机器上导出数据库
MySQL自带的mysqldump就是干这个的,完全不用额外安装:
- 打开源机器的终端,导出单个目标数据库(假设你的库名叫
mydb,MySQL用户名是root):
执行后输入MySQL密码,回车就会在当前目录生成mysqldump -u root -p mydb > mydb_backup.sqlmydb_backup.sql,里面包含了这个库的所有表结构和数据。 - 如果要导出所有数据库,用这条命令:
mysqldump -u root -p --all-databases > all_dbs_backup.sql
步骤2:把备份文件传到目标Linux机器
Linux原生的scp命令就能完成跨机器文件传输,默认就有:
- 在源机器的终端里,把备份文件传到目标机器(假设目标机器IP是
192.168.1.100,目标机器用户名是target_user,要传到/home/target_user/目录):
输入目标机器的用户密码后就开始传输了。scp mydb_backup.sql target_user@192.168.1.100:/home/target_user/ - 要是你在目标机器上操作,也可以反过来从源机器拉取文件:
scp source_user@192.168.1.50:/path/to/mydb_backup.sql /home/target_user/
步骤3:在目标Linux机器上导入数据库
先确保目标机器已经装了MySQL服务,然后按下面来:
- 先创建对应的空数据库(如果是导出单个库的话):
先进入MySQL命令行:
输入密码后执行SQL创建库:mysql -u root -pCREATE DATABASE mydb; EXIT; - 然后导入备份文件:
输入密码后等待执行完成就行。mysql -u root -p mydb < /home/target_user/mydb_backup.sql - 如果是导入所有数据库,直接用这条命令(不用提前创建库):
mysql -u root -p < /home/target_user/all_dbs_backup.sql
一些实用小提醒
- 尽量保证源机器和目标机器的MySQL版本接近,避免版本差异导致的兼容性问题(比如某些新语法在旧版本不支持)。
- 如果数据库很大,导出和导入会花点时间,别中途中断终端连接,耐心等就行。
- 要是网络慢,也可以用
rsync代替scp传输文件,同样是Linux原生工具,稳定性更好。
内容的提问来源于stack exchange,提问作者AKASH GUDADHE
相关产品推荐
相关产品推荐

