• 简谈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
  • 相关阅读:
    [Codevs 1230]元素查找(手写哈希表)
    bat+sqlcmd 批量执行脚本
    为Redmine的项目加上起止时间
    SDUT 1068-Number Steps(数学:直线)
    对象间的联动--观察者模式
    《千与千寻》给读者带来了什么?
    二叉树中和为某一值的路径
    关于Win8 用不了USB转串口驱动
    Android Socket编程学习笔记
    java中的正则操作总结
  • 原文地址:https://www.cnblogs.com/lazyball/p/8665231.html
Copyright © 2020-2023  润新知