mysql使用logbin进行数据恢复
2015-05-21 14:46
281 查看
最近老大让我研究一下,mysql日志的问题,主要是前方把数据中的数据都给删除了。这对于测量来说后期会产生不小的影响,所以我在这里也奉献上我两个小时的研究,由于之前没有搞过太多与数据库挂钩的事情,现在来看,数据库本省还是挺强大的,当初设计的时候就考虑到这些日志备份和恢复的功能,对前辈表示崇高的敬意。
MySQL对日志的操作同样强大,可以分为:
二进制binl-log日志,错误日志,SQL执行日志等。bin-log日志,是针对所有SQL操作以二进制的形式进行保存。错误日志;主要针对服务启动,运行,关闭中产生的错误信息的记录。
使用最多的就是通过二进制日志log-bin来备份数据库数据,恢复数据库数据。
1.查看log-bin日志的开启状态
我是用的是DOS操作,首先window+R,呼出运行,输入cmd,进入DOS页面,输入指令 mysql -uroot -pmypwd,切到数据库操作
2.输入 show variables like "%log_bin%";
ON表示开启,OFF表示关闭,也可以使用show variables like "%log_%"; 来查看所有的日志信息。
3.如果你的log_bin 是关闭的,那么需要在mysql目录下my.ini 来修改一下。配置一下就可以了,当然你也可以设置一下它的输出路径。
如果你跟我配置的一样都是使用自定义路径,那么一定要确保该路径存在,否则会无法正常启动mysql。配置完事,重新启动一下mysql就行了。你可以通过命令行 service restart mysql 也可以window+R 输入services.msc 来呼出服务,在服务里面重新启动一下mysql,也是可以的、
好了配置完事就可以操作数据库,来尝试一下,数据库的备份和恢复了。
首先我们备份的文件都是这样这么命名的mysql.000001或者mysql-logbin.000001这种,打开文件一看,完全看不懂,就能看到数据的操作SQL语句
这时我们需要将这些东西转为txt,方便我们阅读:
同样的操作,window+R输入cmd,切换mysql中bin所在目录
然后输入指令
这里注意一点,这里有可能会出现一个问题,输入这条语句之后,报了个错:mysqlbinlog unkown variables :default-character-set=utf8
那么你需要将my.ini中对于client中的编码格式注掉或者删除。
这样就可以看到txt文件了,打开text文件之后,就可以看到我们刚才的删除SQL。你可以根据时间进行恢复,也可以根据行号进行恢复。当然这里面最显眼的就应该是时间了。
你再打开数据库,查看一下就会发现数据库中的数据已经恢复到删除前的数据了。
这就是一个简单的数据库恢复工作,其实还蛮简单的,期间碰到几个问题:
1.修改my.ini文件,mysql启动失败,原因是找不到指定的文件夹
2.将备份文件转为txt时,编码错误,需要将【client】下设置的编码格式注掉或者删除
3.就是对于mysql和dos界面的切换以及指令的不熟悉了。多用几次就好了。
附:
1,怎么开启关闭日志?
答:在mys.ini中【mysqld】配置日志(比如bin-log)log-bin="E:/mysqllog/"
即可开启bin-log日志,注释掉日志配置即可关闭。需要重新启动mysql服务。
2,开启后日志的位置?
默认是在mysql下的data文件中,但是我是没找到。我使用的是配置路径,在路径下可以看到生成的mysql.000001等文件
3.日志记录何种内容?
根据日志类型的不同记录不同的内容,比如错误日志记录的就是服务开启,运行关闭过程中出现的错误信息。
bin-log日志记录的是对数据库的操作,比如增删改等。
bin-log中会有执行该SQL的时间以及对应的行数以及对SQL执行的说明信息。
4.如何查看日志信息?
通过指令将备份文件转为txt文件,打开txt文件就可查看。
指令;mysqlbinlog .exe --no-defaults --database=ecard E:/mysqllog/mysql.000001 >E:/mysqllog/1.txt
5.如何进行数据库数据恢复?
通过备份的旧数据和binlog日志进行恢复。
导入旧的备份数据
找到误操作的时间或者行数,使用指令来恢复到该时间点或者行数之前的数据。
指令:mysqlbinlog --stop-date="2015-05-21 13:12:12" E:/mysqllog/mysql.000001 | mysql -uroot -p123qwe
6.数据恢复的步骤
a.查看是否配置log-bin
b.将log-bin日志转为txt文件查看,误操作时间等
c.根据误操作的时间进行数据恢复
1.MySQL日志
从事开发工作的人都知道,我们程序时常会使用log日志管理,大点的公司还会有日志管理系统。对于数以百万级或者更大的日志来进行处理。日志的最大作用就是,可以记录日常操作以及操作所出现的异常。对异常的记录是尤为重要的,可以根据异常信息来研究问题的出现。MySQL对日志的操作同样强大,可以分为:
二进制binl-log日志,错误日志,SQL执行日志等。bin-log日志,是针对所有SQL操作以二进制的形式进行保存。错误日志;主要针对服务启动,运行,关闭中产生的错误信息的记录。
使用最多的就是通过二进制日志log-bin来备份数据库数据,恢复数据库数据。
2.数据备份和恢复
2.1log-bin的开启和关闭
要使用log-bin,那就必须先确保log-bin的开启。1.查看log-bin日志的开启状态
我是用的是DOS操作,首先window+R,呼出运行,输入cmd,进入DOS页面,输入指令 mysql -uroot -pmypwd,切到数据库操作
2.输入 show variables like "%log_bin%";
ON表示开启,OFF表示关闭,也可以使用show variables like "%log_%"; 来查看所有的日志信息。
3.如果你的log_bin 是关闭的,那么需要在mysql目录下my.ini 来修改一下。配置一下就可以了,当然你也可以设置一下它的输出路径。
如果你跟我配置的一样都是使用自定义路径,那么一定要确保该路径存在,否则会无法正常启动mysql。配置完事,重新启动一下mysql就行了。你可以通过命令行 service restart mysql 也可以window+R 输入services.msc 来呼出服务,在服务里面重新启动一下mysql,也是可以的、
<span style="font-size:18px;">[mysqld] #log="E:/mysqllog/mysql.log" log-bin="E:/mysqllog/" #log-bin=mysql-bin # The TCP/IP Port the MySQL Server will listen on port=3306</span>
好了配置完事就可以操作数据库,来尝试一下,数据库的备份和恢复了。
2.2 数据库回复
程序中的操作,对数据库进行增删改都会产生日志记录。如果你程序中使用flush或者像我在命令行输入flush logs; 那么会另外产生一个日志文件去记录flush之后的一些数据库操作。当然,我这里为了省事,就不用flush来操作,让所有的操作语句都输出到同一个文件中。这样方面我的回复操作。首先我们备份的文件都是这样这么命名的mysql.000001或者mysql-logbin.000001这种,打开文件一看,完全看不懂,就能看到数据的操作SQL语句
这时我们需要将这些东西转为txt,方便我们阅读:
同样的操作,window+R输入cmd,切换mysql中bin所在目录
然后输入指令
这里注意一点,这里有可能会出现一个问题,输入这条语句之后,报了个错:mysqlbinlog unkown variables :default-character-set=utf8
那么你需要将my.ini中对于client中的编码格式注掉或者删除。
这样就可以看到txt文件了,打开text文件之后,就可以看到我们刚才的删除SQL。你可以根据时间进行恢复,也可以根据行号进行恢复。当然这里面最显眼的就应该是时间了。
你再打开数据库,查看一下就会发现数据库中的数据已经恢复到删除前的数据了。
这就是一个简单的数据库恢复工作,其实还蛮简单的,期间碰到几个问题:
1.修改my.ini文件,mysql启动失败,原因是找不到指定的文件夹
2.将备份文件转为txt时,编码错误,需要将【client】下设置的编码格式注掉或者删除
3.就是对于mysql和dos界面的切换以及指令的不熟悉了。多用几次就好了。
附:
1,怎么开启关闭日志?
答:在mys.ini中【mysqld】配置日志(比如bin-log)log-bin="E:/mysqllog/"
即可开启bin-log日志,注释掉日志配置即可关闭。需要重新启动mysql服务。
2,开启后日志的位置?
默认是在mysql下的data文件中,但是我是没找到。我使用的是配置路径,在路径下可以看到生成的mysql.000001等文件
3.日志记录何种内容?
根据日志类型的不同记录不同的内容,比如错误日志记录的就是服务开启,运行关闭过程中出现的错误信息。
bin-log日志记录的是对数据库的操作,比如增删改等。
bin-log中会有执行该SQL的时间以及对应的行数以及对SQL执行的说明信息。
4.如何查看日志信息?
通过指令将备份文件转为txt文件,打开txt文件就可查看。
指令;mysqlbinlog .exe --no-defaults --database=ecard E:/mysqllog/mysql.000001 >E:/mysqllog/1.txt
5.如何进行数据库数据恢复?
通过备份的旧数据和binlog日志进行恢复。
导入旧的备份数据
找到误操作的时间或者行数,使用指令来恢复到该时间点或者行数之前的数据。
指令:mysqlbinlog --stop-date="2015-05-21 13:12:12" E:/mysqllog/mysql.000001 | mysql -uroot -p123qwe
6.数据恢复的步骤
a.查看是否配置log-bin
b.将log-bin日志转为txt文件查看,误操作时间等
c.根据误操作的时间进行数据恢复
相关文章推荐
- 使用myisamchk命令进行崩溃恢复Mysql数据表
- 使用mysql备份工具innobackupex进行本地数据备份、恢复操作实例
- Mysql 使用ibd数据文件进行数据恢复 (以及数据移动) 1067的解决办法
- java操作mysql进行数据备份及恢复操作
- Linux下实现MySQL数据备份和恢复的命令使用全攻略
- Linux下实现MySQL数据备份和恢复的命令使用全攻略
- MySQL日志——使用二进制日志恢复数据介绍
- 使用mysqldump对MySQL的数据进行备份的操作教程
- 使用mysqldump对MySQL的数据进行备份的操作教程
- mysql 使用binlog进行数据还原
- MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程
- 关于使用Mysql binlog对数据进行恢复的实战
- mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
- 使用xtrabackup对MySQL进行备份和恢复
- 报错:对象必须实现 IConvertible;以分隔符进行分割链接concat_ws的使用方法;mysql数据类型转换cast,convert
- mysql 利用二进制日志来进行恢复数据的实例操作
- <Android>在Activity被非正常杀死并重建时,使用savedInstanceState进行数据恢复的简单实例
- 使用MONGODB 集群的OPLOG 日志进行数据恢复
- MYSQL使用二进制日志来恢复数据
- 活用mysql的binlog进行数据恢复