如何查看MySQL的日志情况(必威是否开启等),

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

  那一年你一定很慌,不过先不要慌(实际上慌也没用),先看未有备份,若无再看是不是开启binlog(show variables like ‘log_bin%'),要是双方都尚未(笔者相信大家都会按时备份+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:ProgramDataMySQLMySQL Server 5.7Data执行mysqlbinlog --start-position=219 --stop-position=681 mysql-bin.000001 > e:\update.sql将update部分单独备份出来到E盘下为update.sql  

 必威 1 

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

  第五步:实施source e:update.sql复苏数据,部分截图如下:

  必威 2

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

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

          # /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      D.在另一终端登入查看最近结果(两名称也过来了):

    (3).清空现存的所用bin-log

        | mysql-bin.000023 |  953 | Query      |        1 |        1038 | BEGIN                                                      |

--read-from-remote-server Read binary logs from a MySQL server.从有些MySQL服务器上读取binlog日志

3、总结

  (1)接纳binlog只好针对针对数据量不是累累的情况,真正的生育碰着每个多少个G的日记文件,不仅仅是光靠binlog苏醒的,还会有越来越多的点子,在此只是做二个简练的求学记录!

  (2)决断时间binlog日志的时刻阶段与pos地方很关键,不过急需精通有关binlog的多多参数!

  (3)此前几天真的感到开垦职员就没有须求太精通数据库相关的运维,可是前几日经验过才知道数据库的连锁知识也是开垦职员必得理解的!

 

        mysql> show binlog events in 'mysql-bin.000021'G;

必威 3

      也正是说, mysql-bin.000023 是用来记录4:00自此对数据库的有所“增加和删除改”操作。

上面截取二个片段解析:

前言

  在如今的劳作中,由于投机粗(zuo)心(si)误update操作导致几百行的数量出现错误,在匆忙的还要(那时候本身居然不了然除了备份之后还应该有binlog日志恢复生机)立马查资料学习binlog的复原,随后立时展开了还原。固然能够假装本身没出错(emmmmm......最终照旧得承认的!),但下班之后心境无法短时间平复,立马张开Computer举行一次尝试记录技巧对得起和谐犯的荒谬。

  注:此番试验是在Wnidows下进展的(英特网Linux挺多,不过Windows的吗少,加上本人小编的管理器也是Win7就轻易做二回尝试吧!

 


 

        +----+----------+-----+-----+---------+        | id | name    | sex | age | classid |        +----+----------+-----+-----+---------+        |  1 | yiyi    | w  |  20 | cls1    |        |  2 | 小二    | m  |  22 | cls3    |        |  3 | zhangsan | w  |  21 | cls5    |        |  4 | 李四    | m  |  20 | cls4    |        |  5 | wangwu  | w  |  26 | cls6    |        +----+----------+-----+-----+---------+      E.也可指定期期间隔恢复生机(部分苏醒):除了用pos点的法子开展复原,也足以由此点名时间间隔实行苏醒,定时间回复必要用mysqlbinlog命令读取binlog日志内容,找时间节点。

      亦可导出为sql文件,再导入至数据库中: 

            End_log_pos: 11417

E.钦点询问 mysql-bin.000021 那个文件,从pos点:8224开始查起,偏移2行,查询10条

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:ProgramDataMySQLMySQL Server 5.7my.ini文件(留意:是C盘下掩饰文件夹ProgramData,并非Program Files下)  

  必威 4

  • 充实/修改常用的安排属性

  必威 5

(4)常用轻便属性表明:除了上述log_bin、binlog_format七个轻松的布局外,还足以有其他的质量配置

  • log-bin = /xxx/xxx/mysql_bin #binlog日志文件,以mysql_bin开头,六个数字结尾的文件:mysql_bin.000001,并且会将文件存储在相应的xxx/xxx路径下,如果只配置mysql_bin的话默认在C:ProgramDataMySQLMySQL Server 5.7Data下;``
  • 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缓存大小。

    2.早9:00上班了,业务的供给会对数据库举办各类“增加和删除改”操作~~~      @ 比方:成立四个学生表并插入、修改了多少等等:

  binlog_cache_disk_use

      +----+----------+-----+-----+---------+

诸如,小编把刚苏醒的tt表删除掉,再用时间间隔点苏醒
mysql> drop table tt;

    2.翻看master状态,即最终(最新)三个binlog日志的编号名称,及其最后二个操作事件pos截至点(Position)值

  此参数表示binlog使用的内部存储器最大的尺码

        常用选项:

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

        以下为末段片段:

 create table bin( id int(10) primary key auto_increment,name varchar(255));

              LIMIT [offset,] 偏移量(不点名正是0)

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

    日常的话开启二进制日志大致会有1%的天性损耗(参见MySQL官方汉语手册 5.1.24版)。二进制有多个最要害的利用情形:

    (1).最长用的正是回复钦命数据端的多寡了,可以一贯过来到数据库中: 

        | mysql-bin.000023 | 1195 | Query      |        1 |        1280 | BEGIN                                                      |

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

    3.此刻杯具了,别慌!先留意查看最终三个binlog日志,并记录下主要的pos点,到底是哪位pos点的操作变成了数据库的破坏(平常在结尾几步);

  使用二进制日志缓存但超越binlog_cache_size值并运用不经常文件来保存事务中的语句的作业数量。

      |  3 | zhangsan | w  |  21 | cls5    |

要是此时是晚上18:00,莫名地试行了一条悲催的SQL语句,整个数据库都没了:

    3.刷新log日志,自此刻始发发出七个新编号的binlog日志文件

你或然感兴趣的稿子:

  • 剖判mysql二进制日志处总管务与非事务性语句的分别
  • MySQL日志文件详解
  • Mysql日志文件和日志类型介绍
  • mysql二进制日志文件复苏数据库
  • 教您活动还原MySQL数据库的日志文件(binlog)
  • mysql日志文件在哪 如何修改MySQL日志文件地方
  • 化解Mysql裁减事务日志和日志文件过大不可能裁减难题

            选项分析:

--start-position=953 起始pos点

      D.钦赐询问mysql-bin.000021 那个文件,从pos点:8224初始查起,查询10条

即便排版有一些乱,但从图中大家可以收获更加的多消息,如时间戳,自增的撼动,是不是自动提交业务等新闻。如下图为从当中提取的一局地。

      B.钦定询问 mysql-bin.000021 那么些文件:

修改后的结果:

      # /usr/local/mysql/bin/mysqldump -uroot -p123456 -lF --log-error=/root/myDump.err -B zyyshop > /root/BAK.zyyshop.sql......        大约过了多数分钟,备份达成了,笔者不用操心数据错过了,因为作者有备份了,嘎嘎~~~      由于笔者动用了-F选项,当备份职业刚起首时系统会刷新log日志,发生新的binlog日志来记录备份之后的数据库“增删改”操作,查看一下:

  mysqlbinlog --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 >d:1.sql 
  source d:1.sql 

        | mysql-bin.000023 | 1437 | Query      |        1 |        1538 | drop database zyyshop                                      |

mysql> show binlog events in 'mysql-bin.000023';

          # /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        c2.单独恢复生机 name='小二' 那步操作,可那样:

C:ProgramDataMySQLMySQL Server 5.1data>mysqlbinlog mysql_bin.000001 
/*!40019 SET @@session.max_insert_delayed_threads=0*/; 
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; 
DELIMITER /*!*/; 
# at 4 
#121015 16:35:56 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.51-community-log created 121015 16:35:56 at startup 
ROLLBACK/*!*/; 
BINLOG ' 
7Mp7UA8BAAAAZgAAAGoAAAAAAAQANS4xLjUxLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAADsyntQEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC 
'/*!*/; 
# at 106 
#121015 16:36:51 server id 1 end_log_pos 174 Query thread_id=2  exec_time=0  error_code=0 
SET TIMESTAMP=1350290211/*!*/; 
SET @@session.pseudo_thread_id=2/*!*/; 
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/; 
SET @@session.sql_mode=1344274432/*!*/; 
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; 
/*!C utf8 *//*!*/; 
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/; 
SET @@session.collation_database=DEFAULT/*!*/; 
BEGIN 
/*!*/; 
# at 174 
#121015 16:36:51 server id 1 end_log_pos 202 Intvar 
SET INSERT_ID=3/*!*/; 
# at 202 
#121015 16:36:51 server id 1 end_log_pos 309 Query thread_id=2  exec_time=0  error_code=0 
use test/*!*/; 
SET TIMESTAMP=1350290211/*!*/; 
insert into bin(name) values('xishizhaohua') 
/*!*/; 
# at 309 
#121015 16:36:51 server id 1 end_log_pos 336 Xid = 28 
COMMIT/*!*/; 
# at 336 
#121015 16:37:25 server id 1 end_log_pos 379 Rotate to mysql_bin.000002 pos: 4 
DELIMITER ; 
# End of log file 
ROLLBACK /* added by mysqlbinlog */; 
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; 

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

3.此刻杯具了,别慌!先稳重翻看最后三个binlog日志,并记录下第一的pos点,到底是哪些pos点的操作导致了数据库的毁损(平时在结尾几步);

        ...............................................................................# at 552#131128 17:50:46 server id 1  end_log_pos 665  Query  thread_id=11    exec_time=0    error_code=0 ---->实施时间:17:50:46;pos点:665SET TIMESTAMP=1385632246/*!*/;

必威 6

      # ll /usr/local/mysql/data | grep mysql-bin

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 |
+----+----------+-----+-----+---------+

            thread_id=11    线程号

 mysqlbinlog --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 |mysql -uroot -p123456 

          --start-position=953                  起始pos点

1.翻看全部binlog日志列表

      在MySQL5.5之下版本采纳mysqlbinlog命令时一旦报错,就增加“--no-defaults”选项

  binlog_cache_use

      方式一:使用mysqlbinlog读取binlog日志:

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

          -p --password[=name]        Password to connect to remote server.连接到远程主机的密码

1.开启binary log功能

      # mysqlbinlog mysql-bin.0000xx | mysql -u顾客名 -p密码 数据库名

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

        # /usr/local/mysql/bin/mysqlbinlog  /usr/local/mysql/data/mysql-bin.000023      格局二:登陆服务器,并查看(推荐):

   最终介绍多少个bin_log的操作:
   (1).产看最终一个bin日志文件是那么些,以后地点

        +----+----------+-----+-----+---------+

办法二:登入服务器,并查阅(推荐):

        # /usr/local/mysql/bin/mysqlbinlog  /usr/local/mysql/data/mysql-bin.000021 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop      B.内定pos甘休点过来(部分恢复生机):

 Binlog最大值,最大和私下认可值是1GB,该装置并不可能严苛调控Binlog的分寸,极其是Binlog比较临近最大值而又遇上一个不小事务时,

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

1.要是现行是黎明先生4:00,笔者的布置职分初步执行三次完整的数据库备份:

    设置/增添log-bin=mysql-bin  确认是开垦状态(值mysql-bin 是日记的基本名或前缀名);

     (2).钦点初阶终止地点,从地点的查看发生的binary log大家可以清楚某些log的发端到完工的岗位,大家得以在平复的长河中钦赐回复从A地点到B地方的log.必要用下边七个参数来钦点: 

      +------------------+----------+--------------+------------------+

binlog 基本认知

        +------------------+------+------------+-----------+-------------+------------------------------------------------------------+        | Log_name        |Pos| Event_type | Server_id | End_log_pos | Info                                                      |        +------------------+------+------------+-----------+-------------+------------------------------------------------------------+        |mysql-bin.000023 |  922 | Xid        |        1 |        953 | COMMIT/* xid=3820 */|        |mysql-bin.000023 |  953 | Query      |        1 |        1038 | BEGIN                                                      |        |mysql-bin.000023 | 1038 | Query      |        1 |        1164 |use`zyyshop`; update zyyshop.tt set name='李四' where id=4|        |mysql-bin.000023 | 1164 | Xid        |        1 |        1195 | COMMIT/* xid=3822 */|        |mysql-bin.000023 | 1195 | Query      |        1 |        1280 | BEGIN                                                      |        |mysql-bin.000023 | 1280 | Query      |        1 |        1406 |use`zyyshop`; update zyyshop.tt set name='小二' where id=2|        |mysql-bin.000023 | 1406 | Xid        |        1 |        1437 | COMMIT/* xid=3823 */|        |mysql-bin.000023 | 1437 | Query      |        1 |        1538 | drop database zyyshop                                      |        +------------------+------+------------+-----------+-------------+------------------------------------------------------------+        通过分析,形成数据库破坏的pos点区间是在于 1437--1538 之间,只要恢复到1437前就可。

(测验前自个儿一度建表) 

        mysql> show binlog eventsG;

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

    5.现行反革命把深夜备份的数据复苏:

 --start-positon="50" //指定从50位置开始 
 --stop-postion="100"//指定到100位置结束 

        @ --stop-datetime="二零一二-11-29 13:21:53"  结束时间点

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 |
+----+----------+-----+-----+---------+

      mysql> show master logs;

  --binlog-ignore-db=db_name

    mysql> show variables like 'log_%';

mysql> show master logs;

        mysql> show binlog events in 'mysql-bin.000023';

必威 7

      C.内定pso点区间回复(部分恢复生机):

常用选项:

      +------------------+----------+--------------+------------------+      |File| Position | Binlog_Do_DB | Binlog_Ignore_DB |      +------------------+----------+--------------+------------------+      |mysql-bin.000023 |      120 |              |                  |      +------------------+----------+--------------+------------------+      也便是说, mysql-bin.000023 是用来记录4:00后头对数据库的保有“增加和删除改”操作。

  sync_binlog

    3.刷新log日志,自此刻起始发出多个新编号的binlog日志文件

2.查看master状态,即最终(最新)三个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值

        mysql> select * from zyyshop.tt;

  设置此参数表示启用binlog功用,并拟定路线名称。

        通过解析,变成数据库破坏的pos点区间是介于 1437--1538 之间,只要苏醒到1437前就可。

c3.将 name='李四'、name='小二' 多步操作一齐过来,需求按事务区间,可这么:

        注:此pos停止点介于“导入实验数据”与更新“name='李四'”之间,那样可以过来到改动“name='李四'”之前的“导入测量检验数据”

命令行参数

    # vi /usr/local/mysql/etc/my.cnf

*************************** 20. row ***************************
Log_name: mysql-bin.000021 ----------------------------------------------> 查询的binlog日志文件名
Pos: 11197 ----------------------------------------------------------> pos起始点:
Event_type: Query ----------------------------------------------------------> 事件类型:Query
Server_id: 1 --------------------------------------------------------------> 标识是由哪台服务器执行的
End_log_pos: 11308 ----------------------------------------------------------> pos结束点:11308(即:下行的pos起始点)
Info: use `zyyshop`; INSERT INTO `team2` VALUES (0,345,'asdf8er5') ---> 执行的sql语句
*************************** 21. row ***************************
Log_name: mysql-bin.000021
Pos: 11308 ----------------------------------------------------------> pos起始点:11308(即:上行的pos结束点)
Event_type: Query
Server_id: 1
End_log_pos: 11417
Info: use `zyyshop`; /*!40000 ALTER TABLE `team2` ENABLE KEYS */
*************************** 22. row ***************************
Log_name: mysql-bin.000021
Pos: 11417
Event_type: Query
Server_id: 1
End_log_pos: 11510
Info: use `zyyshop`; DROP TABLE IF EXISTS `type`

      +----+----------+-----+-----+---------+      | 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    |      +----+----------+-----+-----+---------+      早上时刻又实践了改造数据操作

4.binary log相关变量和参数

      |  1 | yiyi    | w  |  20 | cls1    |

thread_id=11 线程号

      注:每当mysqld服务重启时,会自动实践此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;

  max_binlog_cache_size

        +------------------+------+------------+-----------+-------------+------------------------------------------------------------+

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

      # /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000013        上边截取一个片段解析:

  log_bin

      注: 至此停止当日黎明(英文名:lí míng)(4:00)前的备份数据都复苏了。

+------------------+------+------------+-----------+-------------+------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+------+------------+-----------+-------------+------------------------------------------------------------+
| mysql-bin.000023 | 922 | Xid | 1 | 953 | COMMIT /* xid=3820 */ |
| mysql-bin.000023 | 953 | Query | 1 | 1038 | BEGIN |
| mysql-bin.000023 | 1038 | Query | 1 | 1164 | use `zyyshop`; update zyyshop.tt set name='李四' where id=4|
| mysql-bin.000023 | 1164 | Xid | 1 | 1195 | COMMIT /* xid=3822 */ |
| mysql-bin.000023 | 1195 | Query | 1 | 1280 | BEGIN |
| mysql-bin.000023 | 1280 | Query | 1 | 1406 | use `zyyshop`; update zyyshop.tt set name='小二' where id=2|
| mysql-bin.000023 | 1406 | Xid | 1 | 1437 | COMMIT /* xid=3823 */ |
| mysql-bin.000023 | 1437 | Query | 1 | 1538 | drop database zyyshop |
+------------------+------+------------+-----------+-------------+------------------------------------------------------------+

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

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

        注: server id 1    数据库主机的服务号;

1.行使mysqlbinlog自带查看命令法:
注: binlog是二进制文件,普通文书查看器cat more vi等都力不能支开辟,必得运用自带的 mysqlbinlog 命令查看

    二进制日志包蕴两类公事:二进制日志索引文件(文件名后缀为.index)用于记录全数的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库全体的DDL和DML(除了数据查询语句)语句事件。

必威 8

        mysql> show binlog events in 'mysql-bin.000021'G;

mysql> insert into zyyshop.tt(`name`,`sex`,`age`,`classid`) values('yiyi','w',20,'cls1'),('xiaoer','m',22,'cls3'),('zhangsan','w',21,'cls5'),('lisi','m',20,'cls4'),('wangwu','w',26,'cls6');

      A.完全复苏(本例不可信赖,因为最终那条 drop database zyyshop 也在日记里,必得想方法把那条破坏语句排除掉,做一些复苏)

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

                Log_name: mysql-bin.000021

CREATE TABLE IF NOT EXISTS `tt` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(16) NOT NULL,
`sex` enum('m','w') NOT NULL DEFAULT 'm',
`age` tinyint(3) unsigned NOT NULL,
`classid` char(6) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

              LIMIT [offset,] 偏移量(不点名正是0)

   bin-log因为是二进制文件,无法通过记事本等编辑器直接展开查看,mysql提供二种艺术查看格局,在介绍在此以前,大家先对数据库举办一下增加和删除改的操作,不然log里边数占有一些空。 

二、也可记名mysql服务器,通过mysql的变量配置表,查看二进制日志是或不是已开启 单词:variable[ˈvɛriəbəl] 变量

D.在另一终极登陆查看方今结果(两名称也恢复生机了):

              Server_id: 1            End_log_pos: 11510                    Info:use`zyyshop`; DROP TABLEIF EXISTS `type`

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

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

mysql> show master status;

      苏醒语法格式:

  此参数表示binlog使用的内部存款和储蓄器大小,能够通过情形变量binlog_cache_use和binlog_cache_disk_use来救助测量检验。

        mysql> select * from zyyshop.tt;

4.重置(清空)所有binlog日志

      mysql> show master status;

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

      格局二:登陆服务器,并查看(推荐):

--stop-position=1437 结束pos点

            End_log_pos: 11308 ----------------------------------------------------------> pos结束点:11308(即:下行的pos起始点)

  --max_binlog_size

        #131128 17:50:46 server id 1  end_log_pos 665  Query  thread_id=11    exec_time=0    error_code=0 ---->执行时间:17:50:46;pos点:665

# mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名

        更新 name='小二' 那条数据,日志区间是Pos[1280] --> End_log_pos[1406],按专门的学问区间是:Pos[1195] --> End_log_pos[1437];

  binlog_ignore_db

        大致过了多少分钟,备份达成了,笔者不用忧郁数据错失了,因为本身有备份了,嘎嘎~~~

# /usr/local/mysql/bin/mysqlbinlog --start-datetime="2013-11-29 13:18:54" --stop-datetime="2013-11-29 13:21:53" --database=zyyshop /usr/local/mysql/data/mysql-bin.000021 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop

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

  binlog_do_db

        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

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

                    Info:use`zyyshop`; INSERT INTO `team2` VALUES (0,345,'asdf8er5') ---> 执行的sql语句

  binlog_cache_size

    # /usr/local/mysql/bin/mysqld_safe --user=mysql &

查看数据

        @ --stop-position=953 pos结束点

mysql> show binlog events in 'mysql_bin.000001'G 
...............省略............... 
*************************** 3. row *************************** 
 Log_name: mysql_bin.000001 
  Pos: 174 
Event_type: Intvar 
 Server_id: 1 
End_log_pos: 202 
  Info: INSERT_ID=2 
*************************** 4. row *************************** 
 Log_name: mysql_bin.000001 
  Pos: 202 
Event_type: Query 
 Server_id: 1 
End_log_pos: 304 
  Info: use `test`; insert into bin(name) values ('orange') 
*************************** 5. row *************************** 
...............省略............... 

            thread_id=11    线程号

A.完全苏醒(本例不可相信,因为最终那条 drop database zyyshop 也在日记里,必需想方法把那条破坏语句排除掉,做一些复苏)
# /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000021 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop

      mysql> show binlog events [IN 'log_name'] [FROMpos] [LIMIT [offset,] row_count];

必威 9

            End_log_pos: 11308 ----------------------------------------------------------> pos结束点:11308(即:下行的pos起始点)

那条语句能够将点名的binlog日志文件,分成有效事件行的形式赶回,并可选用limit钦赐pos点的初步偏移,查询条数;

        mysql> select * from zyyshop.tt;

     供给修改mysql的配备文件,本篇的实验意况是win7,配置文件为mysql安装目录MySQL Server 5.1下的my.ini,增多一句log_bin = mysql_bin即可 

三、常用binlog日志操作命令

mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];

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

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

          `name` varchar(16) NOT NULL,

2.地点这种模式读收取binlog日志的全文内容相当多,不便于辨认查看pos点音讯,这里介绍一种尤其便利的询问命令:

    MySQL的二进制日志能够说是MySQL最紧要的日志了,它记录了独具的DDL和DML(除了数据查询语句)语句,以事件方式记录,还蕴阿拉伯语句所实行的损耗的岁月,MySQL的二进制日志是专门的学问安全型的。

MySQL Binary Log也正是常说的bin-log, ,是mysql实行改变产生的二进制日志文件,其利害攸关意义有多个:
* 数据苏醒
* 主从数据库。用于slave端推行增加和删除改,保持与master同步。

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

mysql> reset master;

      A.查询第贰个(最先)的binlog日志:

为了保证职业的完整性,不容许做切换日志的动作,只可以将该事务的具备SQL都记录进超过天记,直到工作甘休。

          也得以按专门的学业区间单独恢复,如下:

注: server id 1 数据库主机的服务号;

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

  --log-bin [=file_name]

           Log_name: mysql-bin.000021  ----------------------------------------------> 查询的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

本文由必威发布于必威-数据,转载请注明出处:如何查看MySQL的日志情况(必威是否开启等),

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。