首页 > 编程知识 正文

利用mysql的二进制日志文件,mysql二进制日志文件如何打开

时间:2023-12-27 22:26:30 阅读:324410 作者:VYKB

本文目录一览:

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。