• mysql的binlog


      binlog是简写,全称Binary Log,中文叫二进制日志。binlog是mysql用来记录DML(Data Manipulation Language)操作的,主要是INSERT、UPDATE、DELETE操作。它类似于oracle的redolog,以及redis的AOF模式下的增量命令。binlog是一件数据修复利器。如果你不小心delete了、drop了,用它可以很轻松的把误操作补救回来。

      可以用命令看下mysql是否开启了binlog:

    mysql> show variables like '%log_bin%';
    +---------------------------------+-----------------------------+
    | Variable_name                   | Value                       |
    +---------------------------------+-----------------------------+
    | log_bin                         | ON                          |
    | log_bin_basename                | /var/lib/mysql/binlog       |
    | log_bin_index                   | /var/lib/mysql/binlog.index |
    | log_bin_trust_function_creators | OFF                         |
    | log_bin_use_v1_row_events       | OFF                         |
    | sql_log_bin                     | ON                          |
    +---------------------------------+-----------------------------+
    6 rows in set (0.00 sec)

      log_bin、sql_log_bin这个说明了binlog现在是打开的。log_bin_basename指定binlog所在目录(/var/lib/mysql)和日志文件前缀(binlog),log_bin_index指定binlog索引文件。如果当前的binlog没有开启,可以去mysql的配置文件(/etc/my.cnf)设置,vi打开后添加:

    log_bin=ON
    log_bin_basename=/var/lib/mysql/mysql-binlog
    log_bin_index=/var/lib/mysql/mysql-binlog.index

      重启mysql即可生效。我是5.7版本,my.cnf没有配置默认就开启了。

      接下来我们可以看下当前的binlog位置(position):

    mysql> show master status;
    +---------------+-----------+--------------+------------------+-------------------+
    | File          | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +---------------+-----------+--------------+------------------+-------------------+
    | binlog.000003 | 104926565 |              |                  |                   |
    +---------------+-----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)

      我这里只有一个主节点,没有从节点,所以只需查master的状态即可。查出来是当前位置在binlog.000003这个日志文件中的104926565这个点。如果想更详细的看下binlog.000003文件里的105398225位置后面的操作:

    mysql> show binlog events in 'binlog.000003' from 105398225;
    +---------------+-----------+----------------+-----------+-------------+--------------------------------------+
    | Log_name      | Pos       | Event_type     | Server_id | End_log_pos | Info                                 |
    +---------------+-----------+----------------+-----------+-------------+--------------------------------------+
    | binlog.000003 | 105398225 | Anonymous_Gtid |         1 |   105398304 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
    | binlog.000003 | 105398304 | Query          |         1 |   105398379 | BEGIN                                |
    | binlog.000003 | 105398379 | Table_map      |         1 |   105398502 | table_id: 149 (test.t_mwsorder)      |
    | binlog.000003 | 105398502 | Write_rows     |         1 |   105398785 | table_id: 149 flags: STMT_END_F      |
    | binlog.000003 | 105398785 | Query          |         1 |   105398861 | COMMIT                               |
    +---------------+-----------+----------------+-----------+-------------+--------------------------------------+
    5 rows in set (0.00 sec)

      这里的Event_type是事件类型,Query事件包含增删改,Table_map告诉我们操作的是哪张表,Write_rows告诉我们现在是insert,此外还有Delete_rows、Update_rows。我们再看后面几行:

    mysql> show binlog events in 'binlog.000003' from 105398225 limit 20;
    +---------------+-----------+----------------+-----------+-------------+--------------------------------------+
    | Log_name      | Pos       | Event_type     | Server_id | End_log_pos | Info                                 |
    +---------------+-----------+----------------+-----------+-------------+--------------------------------------+
    | binlog.000003 | 105398225 | Anonymous_Gtid |         1 |   105398304 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
    | binlog.000003 | 105398304 | Query          |         1 |   105398379 | BEGIN                                |
    | binlog.000003 | 105398379 | Table_map      |         1 |   105398502 | table_id: 149 (test.t_mwsorder)      |
    | binlog.000003 | 105398502 | Write_rows     |         1 |   105398785 | table_id: 149 flags: STMT_END_F      |
    | binlog.000003 | 105398785 | Query          |         1 |   105398861 | COMMIT                               |
    | binlog.000003 | 105398861 | Anonymous_Gtid |         1 |   105398940 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
    | binlog.000003 | 105398940 | Query          |         1 |   105399024 | BEGIN                                |
    | binlog.000003 | 105399024 | Table_map      |         1 |   105399089 | table_id: 151 (test.t_task)          |
    | binlog.000003 | 105399089 | Update_rows    |         1 |   105399211 | table_id: 151 flags: STMT_END_F      |
    | binlog.000003 | 105399211 | Xid            |         1 |   105399242 | COMMIT /* xid=2116067 */             |
    | binlog.000003 | 105399242 | Anonymous_Gtid |         1 |   105399321 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
    | binlog.000003 | 105399321 | Query          |         1 |   105399396 | BEGIN                                |
    | binlog.000003 | 105399396 | Table_map      |         1 |   105399519 | table_id: 149 (test.t_mwsorder)      |
    | binlog.000003 | 105399519 | Write_rows     |         1 |   105399789 | table_id: 149 flags: STMT_END_F      |
    | binlog.000003 | 105399789 | Query          |         1 |   105399865 | COMMIT                               |
    | binlog.000003 | 105399865 | Anonymous_Gtid |         1 |   105399944 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
    | binlog.000003 | 105399944 | Query          |         1 |   105400019 | BEGIN                                |
    | binlog.000003 | 105400019 | Table_map      |         1 |   105400142 | table_id: 149 (test.t_mwsorder)      |
    | binlog.000003 | 105400142 | Write_rows     |         1 |   105400414 | table_id: 149 flags: STMT_END_F      |
    | binlog.000003 | 105400414 | Query          |         1 |   105400490 | COMMIT                               |
    +---------------+-----------+----------------+-----------+-------------+--------------------------------------+
    20 rows in set (0.00 sec)
  • 相关阅读:
    李宏毅机器学习课程笔记-9.3RNN的应用
    李宏毅机器学习课程笔记-9.2如何训练RNN
    李宏毅机器学习课程笔记-9.1循环神经网络RNN入门
    李宏毅机器学习课程笔记-8.2图神经网络(Spatial-based Convolution)
    李宏毅机器学习课程笔记-7.4基于CNN和PyTorch的食物图片分类
    PyTorch入门:基于LeNet5和CIFAR10的图片分类
    PyTorch入门:使用PyTorch搭建神经网络LeNet5
    李宏毅机器学习课程笔记-8.1图神经网络入门
    李宏毅机器学习课程笔记-7.3CNN应用案例
    李宏毅机器学习课程笔记-7.2CNN学到了什么
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/11098559.html
Copyright © 2020-2023  润新知