一般数据库不大时,我们用Navicate,MysqlWorkBrench等工具,将数据库导出为.sql ,再导入,是没有问题的。
但有时候一个数据库导出来有200多M,可能需要半小时。这时我们就可以用命令导出,导入了。
A服务器上的数据库databaseA, 导出到,
B服务器上的数据库databaseB,
-
登录A服务器,
进入到某目录下:比如:/data/mysqlbak/
命令行输入:
mysqldump -u userName -p dabaseName > fileName.sql
ls -al
能看到,3秒就生成了sql文件。是不是很快呢?
导出数据库中的某个表的数据
mysqldump -u userName -p dabaseName tableName > fileName.sql
这时,你也可以通过ftp,把该文件下载来,再上传到B服务器。比较慢。。。
也可以用scp传输。
2.登录B服务器,
进入到某目录下:比如:/data/mysqlbak/
命令行输入:scp -P **** root@***.*****.**:/data/mysqlbak/
fileName.sql
./
***是端口号,ip地址。注意P是大写。
如果端口号是22,可以不写-P ****。
如果是局域网,命令写为:
scp root@192.168.1.22:/data/mysqlbak/fileName.sql
然后会提示,输入密码后。就可以下载了。
然后进入mysql:
mysql -uroot -p 回车 输入密码
use
dabaseName
;
source /
data/mysqlbak/
fileName.sql
如果B服务器是mysql在导入过程中,出现卡死的情况,不容易看出来,可能是,sql_mode的限制,
这时可修改vi /etc/my.cnf,
添加 sql_mode =ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
重启mysql,
命令为service mysqld restart;
再重新导入,即可。
建议参考:http://www.cnblogs.com/hurry-up/p/6829694.html