mysql update失误如何恢复数据

恢复数据
先在my.ini配置文件中加上
[mysqld]
log-bin=mysql-bin (二进制日志名,可以自己定义)
然后如果log-bin开启了
那么之后所有的操作都会记录在mysql-bin日志里
如果没有开启log-bin则需要开启,否则无法恢复数据。

如何查询log-bin是否开启用
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin            | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin             | OFF   |
+---------------+-------+
1 row in set (0.01 sec)

如果是OFF就没有开启)。
如何开启log-bin,首先是在my.ini加上log-bin=mysql-bin
然后重启mysql,注意重启不是quit在登录,
而是开始-运行-输入:services.msc-点确定-找到MySQL-在上面右键-重新启动。
然后再用show variables like 'log_bin';
就会发现为on了。
这之后如果执行其他语句
然后用show binlog events in 'xxxxx';  xxxxx为SHOW BINARY LOGS其中的log-name
会发现变化
比如
update sys_menu set url=1;
update sys_menu set url =2;

然后查看所有二进制日志文件


看pos为385是update sys_menu set url=2的

pos为586是update sys_menu set url=1的

然后咱们的目标是导出pos为184这个,再然后再执行导出的

导出pos=385这段至update.sql

然后进入mysql

执行

会发现确实更新会url=2了

遇到的错误与问题:

如何用SHOW BINARY LOGS时出现 you are not using binary log则先重启mysql使log-bin为on
mysqlbinlog --start-position=281 --stop-position=281 mysql-bin.000001 > D:/mysqllog.txt
出现mysqlbinlog file not found
原来要先搜出mysql-bin.000001,写直接或者相对路径才才行,我搜出路径然后
写成mysqlbinlog --start-position=281 --stop-position=281 c:\mysql\mysql server 5.5\mysql-bin.000001 > D:/mysqllog.txt
还是不行,原来路径不能有空格
则把my.ini改成
log-bin="D:/logbin/mysql-bin"
这样生成的log-bin就在D:/logbin/mysql-bin里面了
当然改完log-bin还需要重启mysql,如果启动mysql失败,说明你写my.ini错误,比如logbin这个文件夹没有建
 参考的一些网站

http://kerry.blog.51cto.com/172631/146259
http://zhidao.baidu.com/question/115653100.html              怎样重启mysql服务器
http://hi.baidu.com/zhanglp/item/e91ef70f45e34cca2e4c6bb8      mysqlbinlog路径中的文件夹名称中不能有空格
http://storyxsj.iteye.com/blog/494355                         指定binlog输出路径
http://zhidao.baidu.com/question/89567791.html               Mysql服务无法启动,显示错误1067
http://blog.sina.com.cn/s/blog_610997850100mwv8.html  mysql source命令
http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#mysql-commands     mysql source命令
http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#mysqlbinlog  mysqlbinlog命令
http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html      show logs

http://blog.chinaunix.net/uid-24086995-id-127355.html        MYSQL--如何用日志文件恢复数据

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQLupdate语句是用来修改表格中已有的记录。其基本语法如下: ``` UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ``` 其中,`table_name`为表格名,`column1`、`column2`等是需要修改的列名,`value1`、`value2`等是相应列名要被修改成的值。`WHERE`子句为可选项,但它的作用是筛选需要被修改的数据,因此通常需要使用。 例如,当我们需要在表格`students`中将`score`列中大于80的分数修改为100时,可以使用以下update语句: ``` UPDATE students SET score = 100 WHERE score > 80; ``` 此外,在update语句中我们还可以使用一些其他的关键字进行特殊操作。以下是几个常用的关键字: - `LIMIT`:用于限制改动的记录数。例如,`UPDATE students SET score = 100 WHERE score > 80 LIMIT 3;`表示只修改满足条件的前3条记录。 - `ORDER BY`:用于对筛选出的数据进行排序。例如,`UPDATE students SET score = 100 WHERE score > 80 ORDER BY score DESC;`表示按分数从高到低排序后,将符合条件的记录的分数修改为100。 - `JOIN`:用于在一个update语句中同时操作多张表格。例如,`UPDATE students AS s JOIN courses ON s.id = courses.id SET s.score = 90 WHERE courses.name = 'Math';`表示修改选了数学课的学生的分数为90。此处`s`为`students`表格的别名。 在使用update语句时需要小心操作,确保修改的数据与条件无误。同时,由于update语句将直接修改表格中的记录,因此也需要充分备份原有数据以防操作失误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值