mysql---二进制日志

记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件

二进制日志的开启

#是否启用了日志

mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin | OFF |

+---------------+-------+

[mysqld]

log-bin [=DIR \ [filename]]

log_bin=mysql-bin 名字可以随便起(mysql-bin)

格式

binlog_format={STATEMENT|ROW|MIXED}

语句(statement):默认的记录格式,基于段

行(row):定义的并非数据本身而是这一行的数据是什么

混合模式(mixed):交替使用行和语句、由mysql服务器自行判断

基于段的日志格式

优点

日志记录量相对较小,节约磁盘及网络IO

只对一条记录修改或者插入,row格式所产生的日志量小于段产生的日志量

缺点

必须要记录上下文信息,保证语句在从服务器上执行结果与主服务器相同

特定函数如UUID(),user()这样非确定性函数还是无法复制;可能造成MySQL复制的主备服务器数据不一致

操作

mysql> show variables like 'binlog_format';

mysql> set session binlog_format=statement;

mysql> show binary logs;

mysql> flush logs;

行日志格式

5.7版本的默认格式

Row格式可以避免Mysql复制中出现的主从不一致问题

同一SQL语句修改了10000条数据的情况下

基于段的日志格式只会记录这个SQL语句

基于行的日志会有10000条记录分别记录每一行的数据修改

优点

使MySQL主从复制更加安全

对每一行数据的修改比基于段的复制高效

误操作而修改了数据库中的数据,同时又没有备份可以恢复时,我们就可以通过分析二进制日志,对日志中记录的数据修改操作做反向处理的方式来达到恢复数据的目的

缺点

记录日志量较大;binlog_row_image=[FULL|MINIMAL|NOBLOB]

混合日志格式

binlog_format=MIXED

特点

根据SQL语句由系统决定基于段和基于行的日志格式中进行选择

数据量的大小由所执行的SQL语句决定

二进制日志格式对复制的影响

基于SQL语句(statement)复制(SBR)

优点

生成的日志量少,节约网络传输IO

并不强制要求主从数据库的表定义完全相同

相比于基于行的复制方式更为灵活

缺点

对于非确定性事件,无法保证主从复制数据的一致性

对于存储过程,触发器,自定义函数进行的修改也可能造成数据不一致

相比于基于行的复制方式在从上执行时需要更多的行锁

基于行的复制(PBR)

优点

可以应用于任何SQL的复制包括非确定函数,存储过程等

可以减少数据库锁的使用

对主从数据的一致性更加有保证

缺点

要求主从数据库的表结构相同,否则可能会中断复制

无法在从上单独执行触发器

查看二进制日志

数据库会话查看

#显示当前服务器使用的二进制文件及大小

mysql> show binary logs

#显示主服务器使用的二进制文件及大小

mysql> show master logs;

#当前使用的二进制文件及所处位置

mysql> show master status

#lush logs一般只会滚动中继日志和二进制日志

mysql> flush logs;

#二进制日志的记录位置,通常为上一个事件执行结束时间的位置

mysql> showmaster status;

#...数据库的增删改查

#观察二进制位置的变化

mysql> show master status;

#查看所有的二进制信息

mysql> show binlog events\G;

#查看指定日志的二进制信息

mysql> show binlog events in 'mysql-bin.000011';

#从指定的事件位置开始

mysql> show binlog events in 'mysql-bin.000011' from 190;

#指定偏移量(不是语句,是事件)

mysql> showbinlog events in 'mysql-bin.000011' from 190 limit 3;

命令行mysqlbinlog

#必须在数据目录下

mysqlbinlog mysql-bin.000017

#导出此数据库的信息

mysqlbinlog mysql-bin.000017 > /tmp/a.sql

#导入此数据库的信息

mysql < a.sql

mysqlbinlog -vv 日志名

二进制日志删除

长时间不清理会浪费很多的磁盘空间,但是删除后可能导致数据库崩溃无法进行恢复.

若要删除二进制日志首先将其和数据库备份一份

#删除所有的二进制日志(不可效仿)

mysql> reset master;

#根据文件或时间点来删除二进制日志

# TO 'log_name' 删除文件之前的所有文件

mysql> PURGE { BINARY | MASTER } LOGS {TO 'log_name' | BEFORE datetime_expr }

#使用时间来删除二进制日志

mysql> PURGEBINARY LOGS BEFORE '13-10-19 10:26:36';

mysql 二进制日志变化_mysql-二进制日志相关推荐

  1. mysql 二进制日志变化_MySQL运维之二进制日志

    MySQL二进制日志里保存会造成或可能造成数据变化的SQL语句.通过二进制日志可以完成如实时异地容灾备份.读写分离.数据恢复等功能.下面,我们一起来看看Mysql二进制日志. 开启bin-log日志 ...

  2. mysql二进制日志特点_MySQL二进制日志分析-概述篇

    MySQL从3.23版本开始引入了二进制日志,用于的数据复制, 二进制日志根据MySQL的版本不同,目前有4个版本: https://dev.mysql.com/doc/internals/en/bi ...

  3. mysql切换二进制日志命令_Mysql二进制日志binlog命令

    第一节: binlog配置: 注意:MySQL默认是没有开启二进制日志的. 基础参数查看: 开关: [(none)]>select @@log_bin; 日志路径及名字 [(none)]> ...

  4. mysql二进制日志管理_MYSQL二进制日志管理脚本

    MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...

  5. mysql二进制日志重置_MySQL二进制日志备份和恢复详解

    原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...

  6. linux中mysql数据库启用日志记录_MYSQL启用日志,和查看日志

    mysql有以下几种日志: 错误日志:     -log-err 查询日志:     -log 慢查询日志:   -log-slow-queries 更新日志:     -log-update 二进制 ...

  7. 开启mysql日志记录_Mysql开启日志记录

    vim /etc/my.conf.d/server.cnf: #lower_case_tables_name = 1 #错误日志 log_error = /var/log/mysql_error.lo ...

  8. wdcp mysql日志文_mysql的日志简单总结

    事务日志 redo log mysql的innodb引擎在开启事务后,中间的操作都会先在内存中进行.然后将这些数据先写入到redo log中--"日志先行"(Write-Ahead ...

  9. mysql 重做日志 镜像_MySQL重做日志

    MySQL重做日志 故障的类型 事物内部故障 系统故障 介质故障 计算机病毒 日志类型 redo log(重做日志) 处理系统故障 undo log 处理事务故障 (回滚) 重做日志 用来实现事物的持 ...

  10. mysql重做日志文件_MySQL 重做日志文件

    一.innodb log的基础知识 · innodb log顾名思义:即innodb存储引擎产生的日志,也可以称为重做日志文件,默认在innodb_data_home_dir下面有两个文件ib_log ...

最新文章

  1. 中国安防为何世界最强?中科院AI+安防报告,解密8大趋势和8大限制【附下载】| 智东西内参...
  2. 如何将读书与自己的生活工作结合起来?
  3. spring InitializingBean接口
  4. C++大小写字母互转
  5. 基于SkyEye的覆盖率测试
  6. listctrl 优化_上海SEO整站优化公司_新站整站快速排名优化
  7. python里w_python vs pythonw | 学步园
  8. 用OpenStack构建南方电网广东公司能源云
  9. 软件测试常见的用例设计方法
  10. android 主流应用,android应用推广系列(一):国内几个google主流应用市场介绍
  11. 【STM32】【HAL库】【实用制作】数控收音机(软件设计)
  12. Golang + Gin + cytocsape.js + neo4j
  13. linux如何给手机刷recovery,给安卓手机刷Recovery的方法
  14. SAP中利润中心清单输出请求处理实例
  15. php 全文搜索引擎-讯搜使用
  16. 论文阅读——Image Inpainting for Irregular Holes Using Partial Convolutions
  17. ffmpeg-比特率,帧率和文件大小
  18. SQL注入上传一句话木马
  19. 我的安全之路——Web安全篇
  20. Invictus 不可征服

热门文章

  1. 深度学习数据集定义与加载
  2. TensorFlow简单线性回归
  3. CUDA统一内存分析
  4. CEVA引入新的可配置传感器集线器DSP架
  5. python Django 管理站点1.3
  6. Android ListView 删除 item
  7. popWindow 出现点击上下空白区域消失点击左右空白区域不消失弹框的处理方法
  8. Android SDK 路径修改
  9. Android 项目版本的修改
  10. 中国互联网+果汁行业商业模式创新与投资机会深度研究报告