昨天新进了一VPS跑LINUX,打算把 一批网站搬过来。原来的是wamp,现在用lamp了。

数据库的迁移使用图形工具phpmyadmin来办,由phpmyadmin导出,然后新vps中phpmyadmin导入。以前都是这么干的,

但是出问题了。。。

 

首先、这次迁移的网站数据库太大(400个表,300M),导入文件大小受限。

改php.ini,找到 upload_max_filesize 、 memory_limit 、 post_max_size 这三个参数!

 

改后可以导入了,但是写下来频繁的报错(版本错、空表错等五花八门)、还超时。

难不住咱,使用神奇语句加分段传。经过一次次的上传、一次次的更新,更到200多个表时又挂了。。。

 

神奇语句如下:

——————————————————————————————————

set global max_allowed_packet=100 000 000;
set global net_buffer_length=100000;
SET GLOBAL  interactive_timeout=28800 000;
SET GLOBAL  wait_timeout=28800000

以上语句的解释:

–max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;

–net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行

interactive_timeout = 10; 对后续起的交互链接有效;

wait_timeout 对当前交互链接有效;

=============================================

 

难道真的没有办法了吗?

痛定思痛呀,得出结论:图形界面不可靠,phpmyadmin不可靠!在网络环境、vps硬件有限的条件下当直接用命令干活!

以furuige为例:

 

#/usr/local/mysql/bin/   ./mysql -u root -p XXXXX

mysql>create database furuige;

mysql>use furuige;
mysql>set names gbk;
导入数据(当然furuige_db.sql 事先先放在 /home/soloweb下了)
mysql>source /home/soloweb/furuige_db.sql;

瞬间导入!无困惑!

——————————————————————————————————————————

通用的方法:

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/   mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码

2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/   mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/  —>  mysql的data目录
二、导入数据库
1、首先建空数据库
mysql>create database abc;

2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql

建议使用第二种方法导入。

yantaisolo

作者 yantaisolo