• 简谈mysql的binlog


    查看是否开启binlog

    mysql> show variables like '%bin%';
    +-----------------------------------------+----------------------+
    | Variable_name                           | Value                |
    +-----------------------------------------+----------------------+
    | binlog_cache_size                       | 32768                |
    | binlog_direct_non_transactional_updates | OFF                  |
    | binlog_format                           | MIXED                |
    | binlog_stmt_cache_size                  | 32768                |
    | innodb_locks_unsafe_for_binlog          | OFF                  |
    | log_bin                                 | ON ##开了                   |
    | log_bin_trust_function_creators         | OFF                  |
    | max_binlog_cache_size                   | 18446744073709547520 |
    | max_binlog_size                         | 1073741824           |
    | max_binlog_stmt_cache_size              | 18446744073709547520 |
    | sql_log_bin                             | ON                   |
    | sync_binlog                             | 0                    |
    +-----------------------------------------+----------------------+
    12 rows in set (0.00 sec)

    开启binlog

    #在my.cnf
    
    [mysqld]
    log-bin=mysql-bin
    binlog_format=mixed
    expire_logs_days = 30 #设置过期自动回收时间

    #以下可选
    log_bin_basename=/var/lib/mysql/mysql-bin  
    log_bin_index=/var/lib/mysql/mysql-bin.index 
    #log日志默认会在数据目录里

    删除binlog文件

    #删除5天前的binlog日志
    mysql> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 5 DAY);
    Query OK, 0 rows affected (0.01 sec)
    
    #重置日志
    mysql> reset master;
    Query OK, 0 rows affected (0.02 sec)
    
    #注意:手动清理的时候注意一些,如果有主从同步,还没来得及同步的日志被清理后,主动同步会造成数据 不一致
    可以通过

      show slave statusG;   #检查从服务器正在读取哪个日志,有多个从服务器,选择时间最早的一个做为目标日志。

    
    

    mysqlbinlog命令使用

    1.查看binlog文件里的内容

    mysqlbinlog  mysql-bin.000004
    #
    [xxx@dbhost log]$ mysqlbinlog mysql-bin.000004
    mysqlbinlog: unknown variable 'default-character-set=utf8'
    出现以上错误 解决方法如下:
    mysqlbinlog --no-defaults mysql-bin.000004

    2.将binlog转换为可用的sql

    1> 常规的将binlog日志里的所有内容转换为sql文件

    mysqlbinlog mysql-bin.000005 > bin.sql

    2> 将指定库对应的binlog内容提取出来

    # -d 指定数据库
    Mysqlbinlog –d test mysql-bin.000005 > bin.sql

    3> 指定位置点 提取内容

    Mysqlbinlog mysql-bin.000020 –start-position=365 –stop-position=456 > bin.sql

    4> 指定时间点 提取内容

    Mysqlbinlog mysql-bin.000020 –start-datetime=2017-01-01 17:18:00’ –stop-datetime=2017-01-01 18:45:00> bin.sql
  • 相关阅读:
    C# 安装包中添加卸载
    如何提取json里面的数据
    JSON写入
    在Net下处理Json
    Linq To Json
    衡量视频序列特性的TI(时间信息)和SI(空间信息)
    DotCMS安装步骤
    【12c OCP】最新CUUG OCP071考试题库(52题)
    【ocp12c】最新Oracle OCP071考试题库(44题)
    【Oracle 12c】最新CUUG OCP071考试题库(53题)
  • 原文地址:https://www.cnblogs.com/lazyball/p/8665231.html
Copyright © 2020-2023  润新知