如何查看MySQL的日志情况(是否开启等),MySQL的二进制日志是事务安全型的

发布时间:2019-11-05  栏目:数据  评论:0 Comments

1、初识binlog

(1卡塔 尔(阿拉伯语:قطر‎MySQL的binlog就是大家平时所说的Binary
Log,即bin-log,是MySQL存款和储蓄对数据库改换的二进制文件,约等于记录了具备DDL与DML(select除此而外卡塔 尔(阿拉伯语:قطر‎语句,利用它主要能够做两件事:

  • 数据复苏:通过mysqlbinog工具举办恢复生机;
  • 数据复制:MySQL
    Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据黄金年代致的指标。

(2)如何查看MySQL的日记情状(是还是不是展开等卡塔尔国,当MySQL还未拉开时候,通过命令:show
variables like ‘log_bin%’查看

mysql> show variables like 'log_bin%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | OFF   |
| log_bin_basename                |       |
| log_bin_index                   |       |
| log_bin_trust_function_creators | OFF   |
| log_bin_use_v1_row_events       | OFF   |
+---------------------------------+-------+
5 rows in set

(3)如何在Wnidows在修改log_bin状态为ON开启呢?

  • 找到C:\ProgramData\MySQL\MySQL Server
    5.7\my.ini文件(只顾:是C盘下掩没文件夹ProgramData,并非Program
    Files下
    )  

  图片 1

  • 充实/矫平常用的安顿属性

  图片 2

(4卡塔 尔(英语:State of Qatar)常用轻便属性表明:除了上述log_bin、binlog_format四个简易的布署外,还足以有其它的习性配置

  • log-bin = /xxx/xxx/mysql_bin #binlog日志文件,以mysql_bin开头,六个数字结尾的文件:mysql_bin.000001,并且会将文件存储在相应的xxx/xxx路径下,如果只配置mysql_bin的话默认在C:\ProgramData\MySQL\MySQL Server 5.7\Data下;``
  • binlog_format = ROW #binlog日志格式,默认为STATEMENT:每一条SQL语句都会被记录;ROW:仅记录哪条数据被修改并且修改成什么样子,是binlog开启并且能恢复数据的关键;
  • expire_logs_days= 7 #binlog过期清理时间;
  • ``max_binlog_size = 100m #binlog每个日志文件大小;
  • binlog_cache_size = 4m #binlog缓存大小;
  • max_binlog_cache_size = 512m #最大binlog缓存大小。

      备份一下末段二个binlog日志文件:

 
sync_binlog=0,在开展n次事务提交以往,Mysql将实践贰回fsync之类的磁盘同步指令,通告文件系统将Binlog文件缓存刷新到磁盘。

4.读取binlog日志,剖析难点

3、总结

  (1)运用binlog只好针对针对数据量不是成都百货上千的情景,真正的坐褥情形每种多少个G的日记文件,不仅是光靠binlog复苏的,还也有更加多的主意,在那只是做叁个粗略的学习记录!

  (2卡塔 尔(阿拉伯语:قطر‎判定时间binlog日志的时刻阶段与pos地方很入眼,不过必要驾驭有关binlog的居多参数!

  (3卡塔尔之今日真的认为开采人士就没有必要太理解数据库相关的运转,不过前几天资历过才晓得数据库的连锁知识也是开垦人士必得通晓的!

 

          # /usr/local/mysql/bin/mysqlbinlog –start-position=1195
–stop-position=1437 –database=zyyshop 
/usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql
-uroot -p123456 -v zyyshop        c3.将 name=’李四’、name=’小二’
多步操作一齐过来,要求按事务区间,可那般:

  binlog_ignore_db

# /usr/local/mysql/bin/mysqldump -uroot -p123456 -lF --log-error=/root/myDump.err -B zyyshop > /root/BAK.zyyshop.sql
......

前言

  在近来的劳作中,由于自身粗(zuo卡塔尔国心(si卡塔 尔(英语:State of Qatar)误update操作招致几百行的多少现身错误,在惊惧的还要(那时小编竟然不知情除了备份之后还会有binlog日志复苏)立马查资料学习binlog的回复,随后即刻展开了苏醒。尽管能够假装自个儿没出错(emmmmm……最终依旧得料定的!卡塔尔国,但下班现在情感无法长时间平复,立马展开计算机进行二回施行记录技术对得起和煦犯的荒诞。

  注:此番试验是在Wnidows下进展的(英特网Linux挺多,不过Windows的什么少,加上自个儿作者的Computer也是Win7就差不离做贰遍实行吧!

 


 

          –read-from-remote-server  Read binary logs from
aMySQLserver.从有个别MySQL服务器上读取binlog日志

 insert into bin(name) values ('orange'); 

A.查询第三个(最初)的binlog日志:

2、恢复生机数据测验

(1)准备表user

mysql> select * from user;
+----+----------+----------------------------------+
| id | name     | password                         |
+----+----------+----------------------------------+
|  1 | Zhangsan | 2d7284808e5111e8af74201a060059ce |
|  2 | Lisi     | 2d73641c8e5111e8af74201a060059ce |
|  3 | Wangwu   | 2d73670c8e5111e8af74201a060059ce |
+----+----------+----------------------------------+
3 rows in set

 (2卡塔 尔(阿拉伯语:قطر‎误update苏醒,比方小编在update user set name = ‘Lijian’ where id =
1;的时候忘写where id = 1首要尺度,结果形成整个数量被更新

mysql> update user set name ='Lijian';
Query OK, 3 rows affected
Rows matched: 3  Changed: 3  Warnings: 0
mysql> select*from user;
+----+--------+----------------------------------+
| id | name   | password                         |
+----+--------+----------------------------------+
|  1 | Lijian | 2d7284808e5111e8af74201a060059ce |
|  2 | Lijian | 2d73641c8e5111e8af74201a060059ce |
|  3 | Lijian | 2d73670c8e5111e8af74201a060059ce |
+----+--------+----------------------------------+
3 rows in set

  那个时候你确定很慌,但是先不要慌(实际上慌也没用卡塔 尔(英语:State of Qatar),先看未有备份,若无再看是或不是开启binlog(show
variables like
‘log_bin%’卡塔 尔(英语:State of Qatar),借使两个都未有(笔者深信大家都会定期备份+binlog卡塔尔从数据库这些局面是爱莫能助苏醒的了,尽管binlog开启的话,一切都好说。就从头举办上面几步苏醒吧!

  先是步:找到当前mysql记录的binlog文件,试行show
master status;

  第二步:查看binlog,定位误操作的pos只怕时间段。实行show
binlog events in ‘mysql_bin.000001’;

mysql> show binlog events in 'mysql_bin.000001';
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| mysql_bin.000001 |   4 | Format_desc    |         1 |         123 | Server ver: 5.7.12-log, Binlog ver: 4 |
| mysql_bin.000001 | 123 | Previous_gtids |         1 |         154 |                                       |
| mysql_bin.000001 | 154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql_bin.000001 | 219 | Query          |         1 |         291 | BEGIN                                 |
| mysql_bin.000001 | 291 | Table_map      |         1 |         344 | table_id: 108 (test.user)             |
| mysql_bin.000001 | 344 | Update_rows    |         1 |         650 | table_id: 108 flags: STMT_END_F       |
| mysql_bin.000001 | 650 | Xid            |         1 |         681 | COMMIT /* xid=22 */                   |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
7 rows in set

  第三步:进入C:\ProgramData\MySQL\MySQL Server 5.7\Data执行mysqlbinlog --start-position=219 --stop-position=681 mysql-bin.000001 > e:\\update.sql将update部分单独备份出来到E盘下为update.sql  

 图片 3 

  第四步:登录mysql(mysql -uroot
-p123)

  第五步:执行source
e:update.sql恢复生机数据
,部分截图如下:

  图片 4

  **第六步:查看结果**

mysql> select * from user;
+----+----------+----------------------------------+
| id | name     | password                         |
+----+----------+----------------------------------+
|  1 | Zhangsan | 2d7284808e5111e8af74201a060059ce |
|  2 | Lisi     | 2d73641c8e5111e8af74201a060059ce |
|  3 | Wangwu   | 2d73670c8e5111e8af74201a060059ce |
+----+----------+----------------------------------+
3 rows in set

      A.完全苏醒(本例不可靠,因为最后这条 drop database zyyshop
也在日记里,必需想方法把那条破坏语句撤销掉,做一些复苏)

  max_binlog_cache_size

mysql> drop database zyyshop;

          –start-datetime=”二零一三-11-29 13:18:54″ 起头时间点

 create table bin( id int(10) primary key auto_increment,name varchar(255));
# /usr/local/mysql/bin/mysqlbinlog --start-position=953 --stop-position=1195 --database=zyyshop /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop

        # /usr/local/mysql/bin/mysqlbinlog –start-datetime=”二〇一三-11-29
13:18:54″ –stop-datetime=”二零一一-11-29 13:21:53″ –database=zyyshop
/usr/local/mysql/data/mysql-bin.000021 | /usr/local/mysql/bin/mysql
-uroot -p123456 -v zyyshop     
总括:所谓恢复生机,正是让mysql将保存在binlog日志中钦赐段落区间的sql语句每种重新实行三遍而已。

 --start-positon="50" //指定从50位置开始 
 --stop-postion="100"//指定到100位置结束 
# vi /usr/local/mysql/etc/my.cnf

      mysql> select * from zyyshop.tt;

  使用二进制日志缓存的事情数量

E.也可内定时期间隔复苏(部分恢复生机):除了用pos点的方法开展还原,也足以由此点名时间距离实行还原,按期间回复必要用mysqlbinlog命令读取binlog日志内容,找时间节点。

    3.刷新log日志,今后刻上马发出三个新编号的binlog日志文件

  log_bin

mysql> flush logs;

        mysql> drop table tt;

  
bin-log因为是二进制文件,不能够经过记事本等编辑器直接张开查看,mysql提供三种格局查看格局,在介绍早先,大家先对数据库实行一下增加和删除改的操作,不然log里边数占有一点点空。 

MySQL的二进制日志可以说是MySQL最重大的日记了,它记录了富有的DDL和DML(除了数量查询语句)语句(全部对数据库修改的操作语句),以事件方式记录,还包罗语句所实行的开支的时光,MySQL的二进制日志是职业安全型的。

        @ –stop-position=953 pos结束点

为了保证职业的完整性,不容许做切换日志的动作,只可以将该专业的有所SQL都记录进当前天记,直到职业结束。

二进制有八个最重大的运用境况:

        +—-+———-+—–+—–+———+        | id | name    |
sex | age | classid |        +—-+———-+—–+—–+———+   
    |  1 | yiyi    | w  |  20 | cls1    |        |  2 | xiaoer  | m  | 
22 | cls3    |        |  3 | zhangsan | w  |  21 | cls5    |        |  4
| lisi    | m  |  20 | cls4    |        |  5 | wangwu  | w  |  26 |
cls6    |        +—-+———-+—–+—–+———+     
C.钦命pso点区间回复(部分恢复):

  binlog_cache_use

c1.独立恢复name=’李四’ 那步操作,可这般:

五、恢复生机binlog日志实验(zyyshop是数据库)

MySQL Binary Log相当于常说的bin-log,
,是mysql试行退换产生的二进制日志文件,其关键功效有多少个:
* 数据苏醒
* 主从数据库。用于slave端实行增加和删除改,保持与master同步。

vi编辑展开mysql配置文件

              Server_id: 1
————————————————————–>
标志是由哪台服务器执行的

  此参数表示只记录钦点数据库的二进制日志

mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10\G;

        ) ENGINE=InnoDBDEFAULTCHARSET=utf8;

图片 5

上边截取一个片段剖判:

      将zyyshop数据库备份到 /root/BAK.zyyshop.sql 文件中:

     (2卡塔尔国.钦定以前\终结地方,从上面的查看爆发的binary
log大家得以知道某些log的开端到截止的职分,大家得以在还原的长河中钦点回复从A地点到B地方的log.必要用下边三个参数来钦点: 

慎选解析:
IN
‘log_name’
内定要询问的binlog文件名(不钦定就是第一个binlog文件)
FROM pos
钦命从哪个pos开头点起始查起(不点名就是从整个文件第2个pos点起头算)
LIMIT
[offset,] 偏移量(不钦赐正是0)
row_count
查询总条数(不点名便是全数行)

        mysql> show binlog events in ‘mysql-bin.000021’ from 8224\G;

   
(1卡塔 尔(阿拉伯语:قطر‎.最长用的就是过来钦点数据端的数据了,能够直接过来到数据库中: 

c2.单身恢复name=’小二’ 那步操作,可那样:

      查看数据

  binlog_do_db

# ll /usr/local/mysql/data | grep mysql-bin
# cp -v /usr/local/mysql/data/mysql-bin.000023 /root/

    # vi /usr/local/mysql/etc/my.cnf    在[mysqld] 区块

  sync_binlog

         
binlog日志与数据库文件在同目录中(作者的条件计划安装是选取在/usr/local/mysql/data中)

  eg: 
  [mysqld] 
    ...... 
    log_bin = mysql_bin 
    ...... 
  log_bin是生成的bin-log的文件名,后缀则是6位数字的编码,从000001开始,按照上面的配置,生成的文件则为: 
    mysql_bin.000001 
    mysql_bin.000002 
    ...... 

三、常用binlog日志操作命令

      复苏语法格式:

  binlog_cache_size

E.钦点询问
mysql-bin.000021
这些文件,从pos点:8224发端查起,偏移2行,查询10条

      改过后的结果:

命令行参数

# pkill mysqld
# /usr/local/mysql/bin/mysqld_safe --user=mysql

    vi编辑张开mysql配置文件

 Binlog最大值,最大和暗中认可值是1GB,该装置并无法严刻调节Binlog的朗朗上口,非常是Binlog相比较临近最大值而又境遇一个很大事务时,

# /usr/local/mysql/bin/mysqlbinlog --start-position=953 --stop-position=1437 --database=zyyshop /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop

        CREATE TABLE IF NOT EXISTS `tt` (

   最后介绍多少个bin_log的操作:
   (1).产看最后一个bin日志文件是非常,现在地方

截取部分查询结果:

        mysql> show binlog events in ‘mysql-bin.000021’ from 8224
limit 10\G;

 
当事情提交后,Mysql仅仅是将binlog_cache中的数据写入binlog文件,但不实行fsync之类的磁盘,同步指令布告文件系统将缓存刷新到磁盘,而让Filesystem自行决定哪天来做联合,那么些是性质最棒的。

签到服务器

      mysql> insert into
zyyshop.tt(`name`,`如何查看MySQL的日志情况(是否开启等),MySQL的二进制日志是事务安全型的。sex`,`age`,`classid`)
values(‘yiyi’,’w’,20,’cls1′),(‘xiaoer’,’m’,22,’cls3′),(‘zhangsan’,’w’,21,’cls5′),(‘lisi’,’m’,20,’cls4′),(‘wangwu’,’w’,26,’cls6′);

  –log-bin [=file_name]

也得以按工作区间单独复苏,如下:

        mysql> select * from zyyshop.tt;

 
使用二进制日志缓存但超过binlog_cache_size值并采取一时文件来保存事务中的语句的事情数量。

@
–start-datetime=”二〇一一-11-29 13:18:54″ 开首时间点
@
–stop-datetime=”2011-11-29 13:21:53″ 结束时间点

   
2.上边这种办法读收取binlog日志的全文内容非常多,不易于辨别查看pos点消息,这里介绍生机勃勃种特别有利的询问命令:

  –max_binlog_size

将zyyshop数据库备份到 /root/BAK.zyyshop.sql 文件中:

      +—-+———-+—–+—–+———+      | id | name    | sex
| age | classid |      +—-+———-+—–+—–+———+      |  1
| yiyi    | w  |  20 | cls1    |      |  2 | xiaoer  | m  |  22 | cls3 
  |      |  3 | zhangsan | w  |  21 | cls5    |      |  4 | lisi    | m 
|  20 | cls4    |      |  5 | wangwu  | w  |  26 | cls6    |     
+—-+———-+—–+—–+———+     
凌晨时光又推行了改动数据操作

  
    配置保存以往重启mysql的服务器,用show variables like 
‘%bin%’查看bin-log是不是张开,如图: 

mysql> select * from zyyshop.tt;
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
| 1 | yiyi | w | 20 | cls1 |
| 2 | xiaoer | m | 22 | cls3 |
| 3 | zhangsan | w | 21 | cls5 |
| 4 | lisi | m | 20 | cls4 |
| 5 | wangwu | w | 26 | cls6 |
+----+----------+-----+-----+---------+

      A.查询第一个(最早)的binlog日志:

    
供给校勘mysql的配备文件,本篇的试生势况是win7,配置文件为mysql安装目录\MySQL
Server 5.1下的my.ini,增添一句log_bin = mysql_bin即可 

二进制日志富含两类公事:二进制日志索引文件(文件名后缀为.index卡塔 尔(英语:State of Qatar)用于记录全部的二进制文件,二进制日志文件(文件名后缀为.00000*卡塔 尔(阿拉伯语:قطر‎记录数据库全数的DDL和DML(除了数据查询语句)语句事件。

四、查看有个别binlog日志内容,常用有三种艺术:

(测量试验前笔者早就建表) 

一、开启binlog日志:

            *************************** 21.
row ***************************             
  Log_name:mysql-bin.000021Pos: 11308
———————————————————->
pos起始点:11308(即:上行的pos结束点)

系统变量

c3.将
name=’李四’、name=’小二’
多步操作一同过来,须要按事务区间,可这么:

    1.查看全体binlog日志列表

2.用mysql自带的工具mysqlbinlog,那是大家就供给知道bin-log存在硬盘的怎么地点,win7私下认可存在C:\ProgramData\MySQL\MySQL
Server
5.1\data文件夹上边,若无此文件夹,那咱们得以因而布置文件中的 
datadir=”C:/ProgramData/MySQL/MySQL Server 5.1/Data/”
定位,假如还没有曾,那小编就能说“各类系统的搜寻效能都做的正确!”。这种查看情势就没那么些美貌了,如下

其意气风发:MySQL
Replication(复制)在Master端开启binlog,Mster把它的二进制日志传递给slaves来落成master-slave数据风度翩翩致的指标(主从复制)。

      mysql> select * from zyyshop.tt;

    (2).启用新的日记文件,平日备份完数据库后实践

那条语句能够将钦命的binlog日志文件,分成有效事件行的章程赶回,并可采取limit钦命pos点的初阶偏移,查询条数;

    登陆服务器

4.binary log连锁变量和参数

B.内定询问
mysql-bin.000021 那几个文件:

   
MySQL的二进制日志可以说是MySQL最要紧的日记了,它记录了具备的DDL和DML(除了数据查询语句)语句,以事件格局记录,还蕴丹麦语句所施行的开销的时日,MySQL的二进制日志是业务安全型的。

3.利用bin_log复苏数据

在[mysqld] 区块
设置/加多log-bin=mysql-bin 确认是开垦状态(值 mysql-bin
是日记的基本名或前缀名);

相关文章

留下评论

网站地图xml地图