Day.6 留个纪录好办事 - Mysql Log (日志纪录)-下

上一篇介绍的日志纪录主要用来找错误与优化改善问题方面,而今天的日志内容会跟MYSQL数据恢复&同步机制有关。

1.二进制日志- binlog

  • 相关配置: my.cnf设定档(/etc/mysql/my.cnf)
[mysqld]

#服务ID,启用二进制日志必须指定 (*** 没指定会无法启动服务!)
server-id = 1

#binlog(ON)&设定档名以mysql-bin开头
log-bin = mysql-bin
#binlog的格式(模式:row/statement/mixed)
binlog-format = row
#保留x天binlog (default:0,表示不自动删除)
expire_logs_days = 1
#写缓冲x次,刷一次磁碟(0:预设系统每隔一段时间重整快取资料到磁碟,1:每次事务提交就会写入磁碟,N:每N个事务提交...)
sync-binlog = 1
#档案大小达到设定值後会以指定名称&自增数新建切换纪录档EX: mysql-bin.00000x
#max_binlog_size = 1G
  • 由於二进制档用一般 vim/cat 的方式开起来会像乱码无法检视内容,所以要使用mysqlbinlog 开启。
 #看详细参数使用
 root@mysql-master:/mnt/mysql_data/mysql# mysqlbinlog
 #检视mysql-bin.000001档案内容
 root@mysql-master:/mnt/mysql_data/mysql# mysqlbinlog -v mysql-bin.000001 
 
 #正式环境上由於资料是一直写入的状态binlog量很多直接打开会有画面跑不完的状况... 所以通常会加入指定时间去开启或过滤binlog内容!!
 EX:  mysqlbinlog -v --database="user" --start-datetime="2020-08-10 07:10:00" --stop-datetime="2020-08-10 07:30:00"  mysql-bin.000003
  • 内容: 以事件的形式纪录(DDL和DML)语句有修改到资料库内容or结构的二进制档纪录档。(所以像SELECT只是单纯查询没做到异动就不会纪录到!!

    • DML (Data Manipulation Language):
      操作表资料内容。 语法: INSERT / UPDATE / DELETE
    • DDL (Data Definition Language):
      定义资料库相关物件,像建立更改(table,index,procedure...)。语法: CREATE / ALTER / DROP

    开启binlog後,可以看到MYSQL目录下多了2个档案分别为:

    1. mysql-bin.000001 : 记录DDL和DML语句内容。

      • 纪录模式 EX:在资料表member中一次插入多笔资料 (看图比较就会了解差异!!)

        • statement - 只会记录修改的SQL语句,不会记录每一行的变化。
          https://ithelp.ithome.com.tw/upload/images/20210804/20130880jry4oZ0WLq.png

        • row - 纪录每一句SQL具体被修改的详细资讯。
          https://ithelp.ithome.com.tw/upload/images/20210804/20130880vztiHTDjoQ.png

        • mixed -综合以上2种,根据执行的sql语句,选择合适的日志格式纪录。
          << 普通的SQL使用statement模式储存,遇到会影响资料准确性的操作(ex.复杂语句or函数操作)则使用row模式储存 >>

    2. mysql-bin.index : 记录所有binlog档案清单。

  • 主要用途:

    1.资料恢复:当资料库资料发生变更错误状况时,通过binlog日志纪录将数据还原到某个状态。

    << 必备机制~ 平时固定备份资料库数据的重要性 >>/images/emoticon/emoticon34.gif

    2.主从复制:当有资料更新後,主写库(Master)透过binlog记录传递给从库(Slave)进行更新,达到主从(Master-Slave)资料库资料的同步一致。


了解binlog的用途该如何使用,下一篇带大家实作使用 binlog & 恢复流程 /images/emoticon/emoticon41.gif


<<:  Rust-资料型别-整数、浮点数

>>:  用题目找参数的困难 | ML#Day6

DAY10:验证码辨识(三)

今天要用昨天训练好的模型来试试看能否顺利从我们的目标网站取得资讯! 我们要先用selenium来处理...

Day24 - 将台湾证券交易所的除权除息计算结果表存入 DB

前言 前面已经知道如何抓「台湾证券交易所」的除权除息计算结果表 CSV 档,接下来要处理资料,并存入...

[D19] DL 深度学习(2)

可能经过一些介绍後,大家还是多多少少会觉得"深度学习"听起来是深奥难懂的概念,不过台大电机系教授李宏...

Day 22 : 插件篇 01 — 如何在 Obsidian 中快速拆分笔记?使用 Note Refactor 让你弹指之间完成

前言 这是 Obsidian 使用教学 — 插件篇的第 1 篇文章,从这个章节开始要进入到进阶的主题...

卡夫卡的藏书阁【Book9】- Kafka Partition Reassign

“The meaning of life is that it stops.” ― Franz K...