• 使用mysqlbinlog查看二进制日志


    (一)mysqlbinlog工具介绍

    binlog类型是二进制的,也就意味着我们没法直接打开看,MySQL提供了mysqlbinlog来查看二进制日志,该工具类似于Oracle的logminer。mysqlbinlog用法为

    [root@masterdb binlog]# mysqlbinlog
    
    Usage: mysqlbinlog [options] log-files

    其中,常用的option选项如下:

    option作用
    -d , --database=name只列出指定数据库的操作
    -o , --offset = n忽略日志前n行
    -r , --result-file=name将输出的文本格式日志保存到文件
    -v
    -vv
    -v  :从binlog中重建sql语句
    -vv:显示的SQL语句增加了注释,可以理解为-v的增强
    --start-datetime=datetime
    --stop-datetime=datetime
    指定日期间隔内的所有日志
    --start-position=position
    --stop-position=position
    指定位置间隔内的所有日志


    (二)mysqlbinlog使用例子

    (1)提取指定的binlog日志

    mysqlbinlog /home/mysql/data/ins3308/binlog.000018

    (2)提取指定position位置的binlog日志
    mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018

    (3)提取指定position位置的binlog日志并输出到压缩文件
    mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018 |gzip >extra_01.sql.gz

    (4)提取指定position位置的binlog日志导入数据库
    mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018 | mysql -uroot -p

    (5)提取指定开始时间的binlog并输出到日志文件
    mysqlbinlog --start-datetime="2017-08-14 10:00:00" /home/mysql/data/ins3308/binlog.000018 --result-file=extra02.sql

    (6)提取指定位置的多个binlog日志文件
    mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018 /home/mysql/data/ins3308/binlog.000019|more

    (7)提取指定数据库binlog并转换字符集到UTF8
    mysqlbinlog --database=test --set-charset=utf8 /home/mysql/data/ins3308/binlog.000018 /home/mysql/data/ins3308/binlog.000019 >test.sql

    (8)远程提取日志,指定结束时间
    mysqlbinlog -uroot -p -h192.168.10.11 -P3308 --stop-datetime="2017-08-14 10:00:00" --read-from-remote-server binlog.000018 |more


    (9)远程提取使用row格式的binlog日志并输出到本地文件

    mysqlbinlog -uroot -p -P3308 -h192.168.10.11 --read-from-remote-server -vv binlog.000018 >row.sql


    (三)mysqlbinlog提取日志样例

    例子1:使用--start-datetime和--stop-datetime显示2020年2月12日23:30到2020年2月12日23:50的日志

    [root@masterdb binlog]# mysqlbinlog master-bin.000025 --start-datetime='2020-02-12 23:30:00' --stop-datetime='2020-02-12:23:50:00'
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
    DELIMITER /*!*/;
    # at 4
    #200212 23:40:10 server id 1  end_log_pos 123 CRC32 0xfc4fd0fc     Start: binlog v 4, server v 5.7.24-log created 200212 23:40:10 at startup
    # Warning: this binlog is either in use or was not closed properly.
    ROLLBACK/*!*/;
    BINLOG '
    WhxEXg8BAAAAdwAAAHsAAAABAAQANS43LjI0LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAABaHEReEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
    AfzQT/w=
    '/*!*/;
    # at 123
    #200212 23:40:10 server id 1  end_log_pos 154 CRC32 0x3dc8c184     Previous-GTIDs
    # [empty]
    # at 154
    #200212 23:40:46 server id 1  end_log_pos 219 CRC32 0x12bba458     Anonymous_GTID    last_committed=0    sequence_number=1    rbr_only=no
    SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
    # at 219
    #200212 23:40:46 server id 1  end_log_pos 315 CRC32 0x5ed83729     Query    thread_id=3    exec_time=0    error_code=0
    use `db1`/*!*/;
    SET TIMESTAMP=1581522046/*!*/;
    SET @@session.pseudo_thread_id=3/*!*/;
    SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    SET @@session.sql_mode=1436549152/*!*/;
    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/*!*/;
    create table t1(id int )
    /*!*/;
    SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
    DELIMITER ;
    # End of log file
    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;




    相关文档集合:

    1.MySQL日志--二进制日志(binlog)                  
    2.使用mysqlbinlog查看二进制日志                  
    3.MySQL使用mysqldump+binlog完整恢复被删除的数据库
    4.使用binlog2sql工具来恢复数据库                 
    5.MySQL闪回工具—MyFlash                          

  • 相关阅读:
    Java多线程在JavaWeb中的应用
    hibernate,spring,struts的流程以及使用理由
    hibernate如何实现持久化
    ibatis与hibernate有什么区别
    关于导出pdf的例子
    BusyBox
    Android中如何查看内存
    使用PopupWindow实现Menu功能
    ScrollView原理
    eclipse 代码提示时闪退问题
  • 原文地址:https://www.cnblogs.com/lijiaman/p/12763691.html
Copyright © 2020-2023  润新知