前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql 5.7开启binlog日志

Mysql 5.7开启binlog日志

作者头像
IT小马哥
发布2023-09-03 08:10:04
4490
发布2023-09-03 08:10:04
举报
文章被收录于专栏:Java TaleJava Tale

前言

binlog是MySQL的二进制日志,并且是MySQL中最重要的日志。binlog记录了对MySQL数据库执行更改的所有操作,包括对数据库表结构的变更,对数据的变更,例如CREATE、ALTER TABLE、INSERT、UPDATE、DELETE…,但是不会记录查询语句select。需要注意的是,如果是update操作,即使是没有数据更新,也会记录在binlog日志中,binlog日志是以事件形式记录,并且还包含语句所执行的消耗时间。

查看binlog是否开启

代码语言:javascript
复制
show variables like 'log_bin';

开启binlog

修改mysql配置文件
代码语言:javascript
复制
[mysqld]
log-bin=mysql-bin
server_id=1

注意: serverd一定要设置,否则会导致mysql无法启动

重新启动mysql
代码语言:javascript
复制
# 停止mysql服务
service mysql stop 
# 启动mysql服务
service mysql start 
# 重启mysql服务
service mysql restart   

扩展

应用
  1. 主从复制 master端开启binlog,master把二进制日志传递给slaves来达到master-slave数据保持一致。
  2. 数据恢复 可以通过mysqlbinlog工具解析binlog来恢复数据。
binlog日志常用命令

查看所有的binlog日志列表

代码语言:javascript
复制
show master logs;

查看master状态,即最后一个binlog日志的编号名称,及其最后一个操作时间pos结束点值

代码语言:javascript
复制
show master status;

flush刷新binlog日志,此刻之后会产生一个新编号的binlog日志文件

代码语言:javascript
复制
flush logs;
bin-log日志存放地址

binlog存放在/var/lib/mysql里面的,如果是docker,则在相应的映射目录

配置存放位置、过期时间

在MySQL配置文件my.cnf或者my.ini中[mysqld]标签内修改

代码语言:javascript
复制
# 配置定时清理
expire_logs_days = 5
# 配置修改后的日志路径
log-bin=/home/logs/mysql-bin
配置每个日志文件的大小

在MySQL配置文件my.cnf或者my.ini中[mysqld]标签内修改

代码语言:javascript
复制
# binlog每个日志文件大小
max_binlog_size = 100m
binlog格式
代码语言:javascript
复制
# binlog日志格式,MySQL默认采用的是STATEMENT,建议使用MIXED
binlog_format = MIXED

复制模式

优点

缺点

原理

STATEMENT模式

- 减少binlog日志量,节约IO,提高性能- 适用于简单的SQL语句

- 某些情况会导致master-slave中的数据不一致,例如sleep(),last_insert_id()等

基于SQL语句的复制(statement-based replication),每一条会修改数据的sql语句都会记录到binlog中

ROW模式

- 任何情况都可以复制,并且不会出现特定情况下存储过程、function等调用或者触发无法被正确复制的问题

- binlog日志文件会非常大- master上执行update语句时,所有变化都会写到binlog里面,SBR只会写一次,所以会导致频繁发生binlog的并发写问题

基于行的复制(row-based replication),不记录每条sql语句的上下文信息,仅记录哪条数据被修改了,修改成什么样。

MIXED模式

一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式

- 实现较为复杂

两种模式的混合使用

本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2023/09/01 14:40

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 查看binlog是否开启
  • 开启binlog
    • 修改mysql配置文件
      • 重新启动mysql
      • 扩展
        • 应用
          • binlog日志常用命令
            • bin-log日志存放地址
              • 配置存放位置、过期时间
                • 配置每个日志文件的大小
                  • binlog格式
                  相关产品与服务
                  云数据库 MySQL
                  腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档