昨天新进了一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
建议使用第二种方法导入。