MySQL的非正式备份恢复方法--MySQL Datafiles

来源:互联网 发布:apache压力测试准不准 编辑:程序博客网 时间:2024/06/14 16:14

    试验环境:

    数据库: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服务

        看看,是不是最新的数据^_^

    注意:还是那一句话,数据无价!本博主对所发生的任何意外不负任何责任!