本文目录一览:
- 1、mysql 怎么查看mysql的二进制日志
- 2、如何查看mysql二进制日志目录
- 3、如何通过Mysql的二进制日志恢复数据库数
- 4、如何实现mysql 数据库的二进制日志回滚
- 5、MYSQL备份:启用二进制日志功能的MYSQL增量备份
- 6、使用mysqlbinlog二进制日志文件 导出
mysql 怎么查看mysql的二进制日志
MySQL的日志文件模块启动后才会有日志记录。
开启日志服务:
在MY.INI里,MYSQLD项下添加log-bin=mysql。
如果只对某个库进行日志文件记录,那么再添加binlog-do-db=test,这样就只记录test数据库的日志,而放弃其他的。
添加完后,重新启动MYSQL的服务,日志文件开始工作了.
查看是否启用了日志命令:mysqlshow variables like 'log_bin';
查看当前的日志命令:mysql show master status;
看二进制日志文件用mysqlbinlog命令:shellmysqlbinlog mail-bin.000001
如何查看mysql二进制日志目录
从概述中我可以看到my.ini配置信息的log-bin没有指定文件扩展名,这是因为即使你指定上扩展名它也不使用。当mysql创建二进制日志文件时,首先创建一个以“mysql_log_bin”为名称,以“.index”为后缀的文件;再创建一个以“mysql_log_bin”为名称,以“.000001”为后缀的文件。当mysql服务重新启动一次以“.000001”为后缀的文件会增加一个,并且后缀名加1递增;如果日志长度超过了max_binlog_size的上限(默认是1G)也会创建一个新的日志文件;使用flush logs(mysql命令符)或者执行mysqladmin –u –p flush-logs(windows命令提示符)也会创建一个新的日志文件。
既然写入的都是MySQL二进制数据,用记事本打开文件是看不到正常数据的,那怎么查看呢?
使用BIN目录下mysqlbinlog命令,如:
Binmysqlbinlog d:/mysql_log/mysql_bin.000001
Binmysqlbinlog d:/mysql_log/mysql_bin.000002
Binmysqlbinlog d:/mysql_log/mysql_bin.000003
Binmysqlbinlog d:/mysql_log/mysql_bin.000004
Binmysqlbinlog d:/mysql_log/mysql_bin.000005
使用SQL语句也可查看mysql创建的二进制的文件目录:
Mysql show master logs; 查看当前二进制文件状态:
mysql show master status;
如何通过Mysql的二进制日志恢复数据库数
创建临时数据库,把备份导入进去进行 恢复单独的数据库 ,
mysqlbinlog 有一个 --databases 参数可以指定解析出指定db相关的sql ,你可以更加这个sql来恢复数据。
能不能建立多个二进制日志文件,使每个数据库对应自己的二进制日志文件?
mysql 下 无此功能,mysqlbinlog 记录的是整个mysql 实例的变化记录,不能针对单独的db 记录日志。
希望可以帮到您,谢谢!
如何实现mysql 数据库的二进制日志回滚
mysql命令行下怎样实现数据的回滚操作
在MySQL有时执行了错误的update或者delete时导致大量数据错误恢复的办法。执行时没有开启事务,也没有对数据进行。这时就需要使用到sqlbinlog工具。
sqlbinlog需要开启,具体的打开方法就不说了。
使用sqlbinlog会产生bin文件,恢复就需要用到这些文件。文件中记录着数据库的所有操作。(此方法的操作是将数据库之前所执行的语句重新执行一次,以达到恢复效果)
具体步骤:1,先找到bin文件,一般都是在mysql的data文件夹中,结尾以.00000X等形式结束。
2,寻找需要还原的时间点 使用语句 mysqlbinlog 文件名 例(MySQLbinlog xxbin.000001)来查看内容,然后找到对应的具体时间
3,导出sql语句,使用语句 mysqlbinlog 文件名sql文件路径 例(mysqlbinlog xxxbin,00001a.sql | mysql -u root -p )
如果需要指定时间导出--start--date -stop='' --date='' 来导出指定时间执行的语句例(sqlbinlog --start-stop='2015-11-22 10:00:00' xxbin.000001a.sql | mysql -u root -p )这句意思是导出在2015-11-22 10点之前的语句,反之start是导出时间之后的。 start和stop可以同时使用。
如果存在多个bin文件,则按照需要导出。
4,使用mysql将导出的语句执行一次。
MYSQL备份:启用二进制日志功能的MYSQL增量备份
小量的数据库我们可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,我们就不太可能每天进行一次完整备份了,而且改成每周一次完整备份,每天一次增量备份类似这样的备份策略。增量备份的原理就是使用了mysql的二进制日志,所以我们必须启用二进制日志功能。
一、增量备份
1、比如我们在星期天下午11点做一次完整备份:
mysqldump
--single-transaction
--flush-logs
--master-data=2
--all-databases
fullbackup_sunday_11_PM.sql
在sql文件中我们会看到两行:
–
Position
to
start
replication
or
point-in-time
recovery
from
–
CHANGE
MASTER
TO
MASTER_LOG_FILE=’bin-log.000002′,
MASTER_LOG_POS=107;
第二行包含了我们需要的信息,是指备份后所有的更改将会保存到bin-log.000002二进制文件中。
2、然后在星期一下午11点我们来做一次增量备份:
mysqladmin
flush-logs
这时将会产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了自星期天下午11点到现在的所有更改,我们只需要把这个文件备份到安全的地方就行了。然后星期二我们又做增量备份,还是执行同样的命令,这时我们保存bin-log.000003文件。
二、恢复备份
比如星期三中午12点出现了故障,这时需要恢复,我们首先导入星期天的完整备份:
mysql
fullbackup_sunday_3_AM.sql
接着我们导入星期一和星期二的增量备份:
mysqlbinlog
bin-log.000002
bin-log.000003
mysql
这时我们已经恢复了所有备份数据,我们还可以找到bin-log.000004,进一步恢复最新的数据。
使用mysqlbinlog二进制日志文件 导出
查看MySQL是否开启binlog(进mysql操作)
show variables like 'log_bin%';
2. 查询binlog文件名
show master status;
路径一般在安装的mysql/data 下
进入 mysqlbinlog 运行文件目录 一在mysql/bin下
执行
mysqlbinlog --no-defaults ../data/mysql-bin.000012 b.log
1、查询时间段内日志的执行内容
mysqlbinlog --start-datetime='2018-01-08 02:01:00' --stop-datetime='2018-01-08 02:30:10' -d test /var/lib/mysql/mysql-bin.000170 -v
2、查询时间段内日志中执行的删除语句
mysqlbinlog --start-datetime='2018-01-08 02:01:00' --stop-datetime='2018-01-08 02:30:10' -d test /var/lib/mysql/mysql-bin.000170 -v|grep DELETE -A 5
3、统计时间段内日志中执行的删除语句
mysqlbinlog --start-datetime='2018-01-08 02:01:00' --stop-datetime='2018-01-08 02:30:10' -d test /var/lib/mysql/mysql-bin.000170 -v|grep DELETE |wc -l