出处:sunmoon的思考空间。 http://sunmoon.kmblog.info/?p=218
问题情境:在数据库里执行SQL语句时不小心错误操作,将wordpress数据库里wp_posts表里的post_content字段的值统一更新成了网站的地址,致使内容丢失。这时发现本数据库恰好没有最近的备份,mysql服务的更新日志没有打开,但是二进制日志却存在。进一步检测,发现数据库及表的存储引擎设为非事务型MyISAM,而不是事务型的存储引擎InnoDB。数据库为5.0以上版本。现在想将post_content字段的值恢复到错误更新之前的状态,何解?
探索解决方案的过程:
1、先通过查看一些资料发现许多人发文说若只是存在二进制日志的话,可以用二进制日志恢复数据库。二进制日志存储了mysql数据库的所有操作记录,包括查询、创建、更新、删除等操作。二进制日志按照时间将每一次的操作以二进制的形式保存进日志里。通常有多个二进制文件,每个二进制文件都是增量记录操作(上次二进制日志备份之后数据库的所有操作)。而且利用mysqlbinlog.exe工具可以基于时间点来恢复数据。查询了mysqlbinlog的用法以及实践过以后,只有如下形式才能正常运行。
在运行中输入:H:\wamp\mysql\bin\mysqlbinlog.exe –database=”mydatabase” –stop-date=”2010-06-07 9:30:00″ ../data/mysql-bin.000058|mysql -uroot –p123456
其中第一句是工具软件的路径和名称,必须有路径,否则找不到程序。后面–开头的是语法的选项,这里有两个选项设置database:要恢复的数据库,stop-date:恢复到的时间点。再后面是数据库的某个要执行的二进制文件路径与名称,可以是绝对地址或相对于mysqlbinlog.exe 所在位置的相对地址。最后面|之后的是数据库访问权限设置,-u表示用户名,-p表示密码。如果用户名、密码为root、123456,则写为如上形式。
问题:按照上述语句执行二进制日志恢复,将数据库添加和更新post_content值的那段日志都执行了一遍,数据库却仍没有任何改变。再查了一些资料,发现好些人碰到相同的问题;查询中偶然发现有人说非事务型的数据库不支持用二进制日志来恢复数据库,所以无效。
2、将数据库的二进制日志、所用工具、数据库保存到本地服务器,并到数据库中进入每个表,将该表的存储引擎改为InnoDB,而且数据库的存储引擎也改为InnoDB。再用上面的语句执行还是不行。能够顺利执行,但执行后没有对数据库造成任何改变。
3、然后想将二进制文件保存为sql文件,然后再将sql文件导入数据库或直接执行,以来重新执行以前的数据库操作来恢复数据。
先是用H:\wamp\mysql\bin\mysqlbinlog.exe –database=”mydatabase” –stop-date=”2010-06-07 9:30:00″ ../data/mysql-bin.000050 > c:\my.sql |mysql -uroot –p123456
即将数据库操作记录保存到C盘的my.sql文件里面。上述语句执行同样没有效果,即没有生成my.sql文件。多次执行仍没有效果。
4、最后经过对mysqlbinlog的详细了解,发现一个选项可以设置导出文件:result-file,用法是–result-file=”c:\my.sql” 。抱着尝试的心态运行下面的语句:
H:\wamp\mysql\bin\mysqlbinlog.exe –database=”mydatabase” –stop-date=”2010-06-07 9:30:00″ –result-file=”c:\my.sql” ../data/mysql-bin.000050 | mysql -uroot –p123456 ,然后文件输出成功了。查看之后,果然是所有操作记录,而且有丢失数据的创建和更新操作,热泪盈眶啦。
5、再然后由于一个sql文件过大,所以不得不采取mysql.exe中用source语法来导入操作,因为mysql数据库本身上传的sql文件不能超过2M左右,大了数据库报错。而my.sql 文件中有大量的数据库查询操作,占了大量数据,所以文件比较大。
然后利用如下命令来打开mysql控制台语法如下:
h:\wamp\mysql\bin\mysql.exe -uroot –p123546
这样就会登录数据库。
然后在输出如下命令(前面的mysql>不是命令,而是登录之后的前缀)。
mysql>source c:\my.sql,就会让数据库执行文件里的所有操作。
只需要将与数据库里的丢失数据有关的所有操作重新执行一遍,那么相应的数据就会被恢复到最后执行的二进制日志操作时间。
6、经过不懈努力,终于将wp_posts表恢复到原先的数据状态,然后将本地数据库里该表导出为wp_posts.sql文件,到服务器上的数据库里加载执行(之前先删除老的wp_posts,否则报错)执行之后,wp_posts表就恢复到原先的状态。
7、感概:一句话,还是要及时的备份数据啊,特别是对数据库进行操作之前要备份数据库,以免数据操作出错恢复力度太大或者难以恢复啊。毕竟二进制日志恢复起来不太容易,而且非事务型数据库可能永远无法恢复。特别是二进制日志都没有的时候,就回天乏术了。
相关推荐
这份"MySQL数据库入门到高级笔记快速学习pdf版本"提供了从基础到高级的全面教程,适合不同水平的学习者。以下将详细解析其中涉及的主要知识点: 1. **基本操作**: - **启动与关闭MySQL服务**:可以通过`...
8. **备份与恢复**:如何备份和恢复MySQL数据库,确保数据安全。 9. **安全性**:用户权限管理、GRANT和REVOKE语句,以及如何设置安全策略。 10. **性能优化**:查询优化技巧,如EXPLAIN分析,以及如何通过调整配置...
MySQL数据库课程笔记.pdf 本资源为 MySQL 数据库课程笔记,涵盖了 MySQL 的基础知识、SQL 语言、数据库管理系统、NoSQL 数据库等多个方面的内容。 数据库基础知识 * 数据库管理系统(DBMS): MySQL 是一种关系型...
这份“关于数据库的学习笔记,mysql数据库教程”包含了丰富的知识内容,旨在帮助初学者和进阶者深入理解MySQL的各个方面。 首先,MySQL的基础知识是学习的重点。数据库是用于存储和管理数据的系统,而MySQL则是实现...
9. **备份与恢复**: 理解如何备份MySQL数据库,使用mysqldump工具,以及如何在数据丢失时恢复备份。 10. **安全性**: 掌握用户权限管理,如何创建用户、赋予权限、撤销权限,以及如何设置安全策略,防止未授权访问...
这份“MySQL数据库学习过程笔记”将带你深入理解MySQL的基本概念、安装配置、数据类型、SQL语句、表的操作、索引、视图、存储过程、触发器以及备份与恢复等多个关键知识点。 1. **基本概念**:MySQL基于SQL...
这份"燕十八刘道成Mysql数据库课堂笔记"涵盖了MySQL的基础知识、高级特性以及最佳实践,是学习和掌握MySQL数据库的宝贵资料。 一、MySQL基础 1. 数据库与表:了解数据库的基本概念,如数据表、列、主键和外键。学习...
这份"MySQL数据库学习笔记.zip"文件很可能包含了关于MySQL的基本概念、安装与配置、SQL语句、表的设计、索引、视图、存储过程、触发器、事务处理、备份与恢复等多方面的内容。下面我们将深入探讨这些关键知识点。 1...
MySQL数据库是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用程序中广泛应用。它的InnoDB存储引擎提供了事务处理、行级锁定以及外键支持等功能,确保了数据的可靠性和并发性。以下是对MySQL,尤其是...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行数据操作。MySQL因其高效、稳定和易于...在实际工作中,理解和熟练运用这些知识点是成为合格的MySQL数据库管理员的关键。
这份"MySQL数据库笔记"涵盖了MySQL的基础知识、安装配置、数据类型、SQL语句、索引、视图、存储过程、触发器、事务处理、备份恢复、性能优化等多个关键领域。以下是这些知识点的详细说明: 1. **基础概念**:MySQL...
MySQL数据库是世界上最流行的开源关系型数据库...总之,"Mysql数据库基础入门视频及xmind笔记"是一个全面的初学者资源,通过系统学习,你可以建立起对MySQL的坚实基础,为未来更深入的数据库开发和管理打下坚实的基础。
MySQL数据库的高可用性是确保业务连续性和数据安全的关键因素。MHA(Master High Availability)是一种用于MySQL集群的高可用性解决方案,它能够在主数据库发生故障时自动将从库提升为主,以最小化服务中断时间。...
备份与恢复是数据库运维的关键环节,笔记会讲述全量备份、增量备份和热备份的方法,以及如何利用mysqldump和mysqlpump工具进行数据恢复。此外,还会涉及到复制技术,包括主从复制、多源复制,以及复制故障排查。 ...
10. 备份与恢复:了解如何备份数据库以防止数据丢失,以及在出现问题时如何恢复数据,是任何数据库管理员必备的技能。 尚硅谷的MySQL笔记是学习数据库管理的一个宝贵资源,对于想要系统学习或复习MySQL的人员来说...
**MySQL数据库笔记** MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它以其高效、稳定和易用性在全球范围内受到青睐。这份“数据库笔记”深入浅出地介绍了MySQL的各种核心概念和技术,旨在帮助读者全面...
10. **备份与恢复**:为了防止数据丢失,数据库系统支持定期备份和在发生故障时的数据恢复。常见的备份策略有全备、增量备和差异备份。 通过深入理解和实践这些知识点,可以有效地掌握数据库系统原理,从而在实际...
MySQL DBA,全称Database Administrator(数据库管理员),是专门负责管理和维护MySQL数据库系统的专业人士。这份“大神写的MySQL DBA学习笔记”无疑是深入理解和掌握MySQL技术的重要资源,尤其适合那些希望提升自己...
MySQL数据库是世界上最受欢迎的开源关系型数据库管理系统之一,广泛应用于Web应用程序、数据分析、企业系统等多个领域。本学习笔记和项目练习旨在帮助初学者和进阶者深入理解和掌握MySQL的核心概念和技术。 1. ...
《韩顺平老师oracle视频教程听课笔记.pdf》将带你深入Oracle的世界,学习其高级特性,如PL/SQL编程、分区表、物质化视图、数据库链接、闪回技术、数据守护和RAC(实时应用集群)等。Oracle数据库的复杂性和灵活性使...