使用SQLyog导入导出大型MYSQL数据库(恢复大的SQL数据)
原来的数据使用的是MySQL4.1,大概有800M左右。使用 mysqldump -u username -p dbname > “filename”
导出的时候很容易死掉,而且数据也出现乱码。后来找到一个非常好用的工具-SQLyog,它里面有数据导入导出功能,而且效率非常的高(我800M的数据导出或导入都不到5分钟)。
下面来说说整个的过程:
-
首先打开SQLyog,创建远程数据库连接。
-
然后选择“Tools”-“Export Data As SQL Statements”,选择数据库和表以及保存的sql文件名,然后点击“Export”按钮。这样就将数据备份到了sql文件中。如果导入的话选择“Tools”-“Import From SQL Statements”,然后选择sql文件执行就可以了。
-
如果是导入到本地的MySQL中的话只要断开远程数据库连接然后创建本地连接,接下来使用导入命令就可以了。
说明几点:
-
导出的时候可以选择“只导出数据库结构”和“导出数据库结构和数据”,另外还有许多选项,比如是否自动创建新的数据库,是否删除存在的表等等,可以根据自己的需要选择。
-
导入数据的时候可能会出现 Got a packet bigger than ‘max_allowed_packet’ bytes 的错误提示(在SQLyog的错误日志里面),这是因为MySQL默认的 max_allowed_packet 设置为 1M,增大这个参数就可以了,比如设置为8M。默认的my.ini文件中是没有这个参数的,可以自行添加。---
-
SQLyog 的官方地址为:http://www.webyog.com/
-
最后补充几点点有些题外的问题,一个是使用SQLlog直接查看数据的时候显示的是乱码,这个是没有关系的,仅仅是软件显示的时候编码不对而已,解决的方法跟MySQL-Front类似,具体看 MySQL-Front查看中文数据出现乱码的解决方法;另外一个就是使用SQLyog创建用户的时候如果使用PHP连接的时候会出现“Client does not support authentication protocol requested by server…”的提示,这是因为PHP连接数据库还是使用的MySQL4.1以前的方式,所以还需要执行下面的SQL脚本一下(这点跟在PHPMyAdmin中是类似的):
set password for username@localhost =old_password('yourPassword');
flush privileges;