mysql binlog

本贴最后更新于 1708 天前,其中的信息可能已经东海扬尘

介绍

binlog 记录了 MySQL 数据库表结构和表数据变更,比如 update/delete/insert/truncate/create。它不会记录 select(因为这没有对表没有进行变更)

  • 主要有两个作用:复制和恢复数据
    • MySQL 在公司使用的时候往往都是一主多从结构的,从服务器需要与主服务器的数据保持一致,这就是通过 binlog 来实现的,mysql-master 会把 binlog 发送给 mysql-slave
    • 数据库的数据被干掉了,我们可以通过 binlog 来对数据进行恢复

题外话:用 MySQL 的 binlog 可以替代触发器的作用,而且效果会更好。目前的使用方案有两种。
1:在 mysql-server 的机器上运行一个进程用于监听 binlog 的变化
2:编写程序伪装成 mysql-slave,然后由于 MySQL 的主从结构,mysql-server 会把 binlog 发送给 mysql-slave

binlog 格式

  • Statement
    • 每一条会修改数据的 SQL 都会记录在 binlog 中
  • Row
    • 不记录 SQL 语句上下文相关信息,仅保存哪条记录被修改
  • Mixed
    • Statement 与 Row 的结合

开启 binlog

打开 my.cnf 文件,添加如下内容:

log_bin=ON
log_bin=/my_logs/mysql_binlog/mysql-bin
binlog_format=ROW
server-id=123456

server-id 可以随便命名,但是在启用主从功能时,MySQL 服务的 server-id 不能相同

binlog 相关命令

  • 查看是否开启 binlog
    • show variables like 'log_bin'
  • 获取 binlog 文件列表
    • show binary logs
      image.png
  • 查看当前正在写入的 binlog 文件
    • show master status
      image.png
  • 查看指定 binlog 文件的内容
    • show binlog events in 'mysql-bin.000026'
      image.png
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    690 引用 • 535 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...