试验环境:
数据库:MySQL 5.5.8
主服务器:SERVERHOST
备用服务器:SERVERBAK
其中SERVERHOST为主服务器,每周备份数据库,命令为:mysqldump --opt--add-drop-table --default-character-set=gbk > *.sql
试验设想SERVERHOST硬件宕机,将SERVERHOST硬盘取出并读取复制其中的“MySQL Datafiles”文件夹。
使用每周的备份文件*.sql恢复SERVERBAK的数据库。停止SERVERBAK的MYSQL服务,然后将SERVERHOST的MySQL Datafiles文件夹覆盖SERVERBAK的MySQL Datafiles文件夹。然后启动SERVERBAK的MYSQL服务。这时候你会发现,SERVERBAK里的数据是最新的,并不是备份文件*.sql所备份的日期。
比如说,*.sql是在4月6日备份的,SERVERHOST是在4月11日宕机,你用*.sql备份文件也只能恢复到4月6日的数据。可是当你覆盖最新的MySQL Datafiles时,你得到的确是4月11日的数据。
注意:这里的关键是SERVERBAK的数据库里的表的结构要跟SERVERHOST数据库表结构一致。
注意:这只是个人试验,不是官方数据。数据无价,本博主对所发生的任何意外不负任何责任!
----------------------------------邪恶的分割线---------------------------------------------------
另:如果你不小心,没有备份文件同时也不记得数据库表的结构,也没有关系。你可以将SERVERHOST的DATA文件夹和MySQL Datafiles文件夹同时覆盖SERVERBAK的DATA文件夹和MySQL Datafiles文件夹。启动服务以后同样是最新的数据。但是必须要将DATA文件夹里的LOG文件给删除掉,其实就是将数据库文件夹之外的文件删除。不然启动服务会报错!
注意:还是那一句话,数据无价!本博主对所发生的任何意外不负任何责任!
-----------------------------------又见分割线----------------------------------------------------
另:如果SERVERBAK上并没有安装MYSQL。这里附上快速安装MYSQL的方法。
1、复制SERVERHOST上的整个MYSQL安装文件夹,包括DATA及MySQL Datafiles。粘贴到SERVERBAK。
2、修改复制过来的MY.INI配置文件。
[mysqld]
basedir="E:/MySQL/"
datadir="E:/MySQL/Data/"
innodb_data_home_dir="E:/MySQL/MySQL Datafiles/"
3、删除DATA文件夹下的LOG文件,就是除了数据库文件夹外的其它文件
4、安装服务
使用ADMINISTRATOR管理员身份运行命令提示符(PS:不以管理员身份运行,安装服务会报错install/remove of the service denied)
cd mysql\bin
mysqld install MySQL
5、修改注册表(PS:本步骤为检查)
运行 regedit
检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL 下的 ImagePath 值是否为E:\MySQL\bin\mysqld MySQL
6、运行MYSQL服务
看看,是不是最新的数据^_^
注意:还是那一句话,数据无价!本博主对所发生的任何意外不负任何责任!