mysql-binlog
简介:

  1. mysql的二进制日志记录了所有DDL和DML(除select)
  2. 开启binlog日志后会有1%左右的的性能损耗
  3. 二进制日志包括两类
    1. 索引文件 XXXX.index
    2. 日志文件 xxx.0000*

应用场景:

  1. master(主) 和 slavas(从) 主从保持数据同步
  2. 使用mysqlbinlog工具来恢复数据

日志更换策略:

  1. 服务器重启
  2. 服务器被更新
  3. 日志达到最长长度 max_binlog_size 默认为 1G
  4. 日志被刷新 mysql> flush logs

日志格式:

  1. statement level (基于SQL语句的复制)

    • 每一条会修改数据的SQL都会记录到binlog中
    • 优点: 不需要记录SQL与每一行的数据变化,这样binlog日志比较少,减少磁盘IO,提高性能
    • 缺点: 某些情况会导致主从不一致
  2. row level (基于行的复制)
    • 不记录SQL语句上下文,仅记录那些行那些数据被修改了,修改成什么样子了
    • 优点: 不会出现出现某些情况下的存储过程,function,trigger 无法被正确复制的情况
    • 缺点: 会产生大量的日志数据,比如 alter table 会让日志暴涨
  3. mixed (混合模式复制)
    • 以上两种模式的混合使用,一般的复制使用statement模式,对于statement无法复制的操作使用row模式保存,mysql会自动根据SQL语句来现在日志的保存方式
  4. 从官网来看
    • version < 5.1.5 之前只有statement
    • version < 5.1.8 且 > 5.1.5 有 row 和 statement 两种
    • version > 5.1.8 mixed 、 row 、 statement

配置:

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 其他 slaveId 重复
expire_log_days = 7 # 设置binlog清理时间
max_binlog_size = 100m # 设置binlog每个文件大小
binlog_cache_size = 4m # binlog缓存大小
max_binlog_cache_size = 512m # 最大binlog缓存大小

相关命令:

 show variables like "%log_bin%"; 
Variable_name Value
log_bin ON
log_bin_basename /var/lib/mysql/mysql-bin
log_bin_index /var/lib/mysql/mysql-bin.index
log_bin_trust_function_creators OFF
log_bin_use_v1_row_events OFF
sql_log_bin ON

    log_bin -> ON 表示binlog 日志已经开启

 show binlog events; # 只查看第一个binlog文件的内容
show binlog events in 'mysql-bin.000004'; # 查看指定binlog文件的内容
show binary logs; # 获取binlog文件列表
Log_name File_size
mysql-bin.000001 3159
mysql-bin.000002 154
mysql-bin.000003 177
mysql-bin.000004 1609
mysql-bin.000005 201
mysql-bin.000006 154

  show master status; # 查看当前正在写入的binlog文件 
File Position Binlog_Do_DB Binlog_Ignore_DB Executed_Gtid_Set
mysql-bin.000006 154      

使用mysqlbinlog工具 mysqlbinlog是一个查看mysql二进制的工具,可以把mysql上面的所有操作记录从日志导出

 mysqlbinlog /var/lib/mysql/mysql-bin.000004 -r /tmp/outMysql.sql
  reset master; # 清除master上的binlog 
  reset slave; # 清除slave上的binlog 

最新文章

  1. Javascript &gt; Eclipse &gt; Code completion (Content Assist)
  2. 高性能 Windows Socket 组件 HP-Socket v2.2.3 正式发布
  3. wireshake抓包,飞秋发送信息,python
  4. bc#27做题笔记
  5. swift网络编程入门应用:天气预报
  6. 运行测试Caused by: java.lang.UnsatisfiedLinkError: no attach in java.library.path错误解决
  7. poj2135
  8. DevC++ 工程没有调试信息的解决办法
  9. Nagios+pnp4nagios+rrdtool 安装配置nagios被监控端NRPE配置(二)
  10. .Net在线付款---Paydollar在线付款开发过程
  11. 完整的堆栈JavaScript路(十五)HTML5 focus 扩大 (扩展点)
  12. PHP支付第3方接口使用方法。
  13. python新手菜鸟之基础篇
  14. Spring Cloud 2.x-前言
  15. Centos7安装搭建NTP服务器和NTP客户端同步时间
  16. git bash + gitee
  17. 八、Sql Server 基础培训《进度8-查询多种写法》(实际操作)
  18. Linux 子网掩码计算, 二进制十进制互相转换
  19. 解决 在 WINDOWS 下 同时安装 python2 python3 后 pip 错误
  20. WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable(spark加载hadoop本地库的时候出现不能加载的情况要怎么解决呢?)

热门文章

  1. 使用Kafka建立可靠的高性能分布式消息传递基础结构
  2. 创 PHP RSA2 签名算法
  3. 害死人不偿命的(3n+1)猜想-PTA
  4. java笔记----cpu消耗快速定位代码
  5. arcgis api 3.x for js 地图加载多个气泡窗口展示(附源码下载)
  6. iOS UItableview 镶嵌 collectionView ,cell 自适应高度动态布局
  7. JDK10源码分析之HashMap
  8. springboot + shiro + mysql + mybatis 工程快速搭建
  9. MQL语句
  10. git笔录