数据库缺陷导致Mysql无法启动

在我的台式机上,装了Oracle VM VirtualBox 虚拟机,虚拟了CentOS 6.5的系统,使用桥接网卡的方式,给虚拟机操作系统另外分配了一个内网IP。在CentOS的系统上,部署了Nginx+Apache+PHP+Mysql的环境。安装了dokuwiki和禅道项目管理软件供部门内部使用。另外也安装了一些优秀的开源程序,供产品经理学习其设计思路。

继续阅读

Mysql数据库导出与导入

Mysql数据库的导出与导入主要用于对数据库的备份。常有几种方法:

  1. 直接复制数据库文件;
  2. 使用phpmyadmin或mywebsql导出或导入;
  3. 使用“帝国备份王(EmpireBAK)”进行备份;
  4. 使用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