五颜六色论坛 -> 网站建设 -> MySQL数据库安全备份/恢复方法 登录 -> 注册 -> 回复主题 -> 发表主题

deserts 2006-05-01 20:46

由于采用PHPMYADMIN导出的大数据库不能通过PHPMYADMIN很好的导入,经过网上资料查找及试验,发现利用以下方法能很好的解决此问题。
一、数据库的导出

通过PHPMYADMIN导出成SQL格式文件。

二、数据库的导入

将导出的SQL文件上传至FTP服务器,然后登录服务器使用以下命令导入SQL文件

#mysql -u root -ppassword database_name < phpmyadmin.sql

PS:此方法需要有服务器的SHELL权限

deserts 2006-05-01 20:49
大个Insert语句拆分脚本
在使用phpmyadmin导出mysql数据的时候,往往会把一张数据表中的数据导为一个很大的insert语句,造成导回mysql的时候报错。比如如下这样的错误:


ERROR 2006 at line 6080: MySQL server has gone away


因此完成了这个脚本对phpmyadmin导出的sql脚本进行处理,拆分所有大的insert语句,使每条insert语句只负责插入一个数据行,这样再导入mysql的时候出错的可能也会减小。


这是在nt系列内核下可以直接执行的二进制版本:


Attach: [attachment=17225]


这是Python源代码:


Attach: [attachment=17226]


使用方法为: SplitInsert 源sql文件名 目的sql文件名


处理后的sql脚本可以使用mysql附带的命令行工具导入数据库:


mysql -u USER_NAME -p DATA_BASE_NAME < SQL_FILE_NAME


之后输入用户密码,就会开始数据导入过程。



--------------------------------------------------------------------------------


mysql自带的mysqldump工具导出的sql脚本一般可以正常导入,不需要我这个程序的处理。使用方法大致是这样的:


mysqldump 要导出的数据库名 > 导出文件名


在恢复备份的时候可以这样:


mysql -u 用户名 -p 恢复后的数据库名 < 脚本文件名



--------------------------------------------------------------------------------


用phpmyadmin导入sql脚本有时候会说“没有sql语句”,这是因为php环境和phpmyadmin设置了最大上传文件大小,如果要导入的sql脚本的大小超过了这个限制,那么会造成脚本上传失败,因此无法执行。



--------------------------------------------------------------------------------


有时候会发现拆分insert语句之后还是出现“ MySQL server has gone away ”错误,这可能是因为其中一些insert语句的大小超出了mysql目前设置的缓冲区大小。


可以在mysql的配置文件的“[mysqld]”段增加类似:


set-variable = max_allowed_packet=16M


来扩大这个缓冲区的限制来解决。


这种情况常见于把图片存储在数据库里面的情况。


查看完整版本: [-- MySQL数据库安全备份/恢复方法 --] [-- top --]


[ 五颜六色论坛 ]

Powered by PHPWind 5.0.1 © 2005 苏ICP备05001866号 5y6s.net
Time 0.750678 second(s),query:4 Gzip enabled