简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。
创新互联建站专注于企业营销型网站、网站重做改版、扎赉特网站定制设计、自适应品牌网站建设、H5技术、成都商城网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为扎赉特等各大城市提供网站开发制作服务。
复杂情况下:
从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作。经过如下几种情况的操作。
1. 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 5.0\。结果,失败:数据库连接错误。
2. 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。
3. 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 5.0\data。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,数据可以访问操作。
至此,操作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。
使用mysql中的日志功能。
首先:将最近的二进制类型的日志文件存成文本文件导出,命令如下:
mysqlbinlog
F:/wamp/mysql-bin.000045
F:/test.txt
其次:打开保存的txt文件,文件格式如下:
其中at
1099代表第1099个命令(姑且这么记),查询这些命令,看看需要回复的命令在什么地方,然后执行命令。
最后:执行回复命令,如下:
mysqlbinlog
--start-position="123"
--stop-position="531"
F:/wamp/mysql-bin.000045
F:/test.txt
|
mysql
-uroot
-p
这样就可以完成数据库的回复了!!!
1、先在运行中输入services.msc,找到MysQL的服务,将其停止;
2、然后备份新安装的MY.INI和DATA这两个目录,直接将其原来mysql/data下的文件拷到新安装的mysql/data目录下即可;
3、启动MysQL服务。该方法只在新安装的数据库与旧数据库版本相同的情况下实验成果。重新打开navicat,发现原来的数据库都可以使用了。
好像不支持事务回滚
mysql
Max版支持
mysql_query('BEGIN');//开始事务
mysql_query('..........');//中间执行其他sql语句
mysql_query('COMMIT');//成功后提交事务
//mysql_query('ROLLBACK');//失败后回滚
上面不是php代码吗
就是用mysql_query执行而已
在当前mysql中虽然出现了事务的支持,但它还很不成熟,所以,呵呵,先观望事务吧,采取其他手段达到事务的效果
比如你想删除或更新一些记录,你可以创建一个临时表或者使用预先建立的备份表,将要将要操作的数据备份下来,当其他操作失败时将这些数据恢复回去。当然实际情况可能更复杂一些。这样做看起来很麻烦,而且效率值得怀疑,不过需要事务处理的地方应该不会很多,所以麻烦一次两次还是可以忍受的。
事务处理本身就不是一个高效的、百分百安全的手段,我们完全可以通过优化表的结构、编写有效的脚本而避免使用事务。关注我也关注