Mysql数据库的导出与导入主要用于对数据库的备份。常有几种方法:
- 直接复制数据库文件;
- 使用phpmyadmin或mywebsql导出或导入;
- 使用“帝国备份王(EmpireBAK)”进行备份;
- 使用mysqldump命令导出,再使用命令导入;
注意导出时应关闭数据写入,简单做法就是暂停网站。
第一种直接复制数据库文件的方法没有测试过,流程是先在目标服务器创建同名数据库,然后把源服务器下同名数据库文件夹(如:/usr/local/mysql/var/demo)的文件全都复制过去。如果这种方法可行,是一种简单的方法。
补记:后测试这种方法还是风险很高的一种方法,必须是环境、版本、表类型等一致的情况下才行得通,否则会出现灾难性的后果。
第二种使用phpmyadmin或mywebsql导出或导入,可以将数据库文件导出到本地再导入到目标服务器。更好的方法是把文件先上传到目标服务器再导入,修改目标服务器的phpmyadmin配置文件config.inc.php约68、69两行如下:
$cfg['UploadDir'] = ‘upload’; $cfg['SaveDir'] = ‘save’;
然后在目标服务器的phpmyadmin目录下新建upload,把导出的数据库文件上传到upload,导入时选择“从网站服务器上传文件夹 upload/ 中选择”,免去了上传的时间,可以更快。
这种方法的问题是当数据库文件太大时,导入时间会很长,当超过php.ini的脚本执行超时的时间(默认为30秒)时,会出错。当数据库文件大时不推荐这种备份方法。
第三种使用“帝国备份王(EmpireBAK)”,导入时也出过错,没能完全导入,不推荐。
第四种使用命令导出,推荐使用这种方法,最快最保险。
mysqldump具体命令为(假设mysql安装在/usr/local/,database是需要导出的数据库名):
/usr/local/mysql/bin/mysqldump --opt database -u'user' -p > /home/db_bak$(date +%Y%m%d%H%M).sql
导入命令有两种,一种是mysql,另一种是source,使用mysql导入时出过错,建议使用source命令,具体为:
mysql -u user -p use database source /home/wwwroot/db_bak.sql