当前位置: 首页 > news >正文

Mysql之二进制日志

目录

二进制日志  12-37

二进制日志格式

基于行的二进制日志

基于语句的二进制日志

混合格式二进制日志

复制日志 12-42

故障安全 (Crash-Safe) 复制

多源复制


二进制日志  12-37

二进制日志:
包含数据和模式更改及其时间戳
基于语句 基于行 的日志记录
用于从备份的时间点恢复、从备份的完全恢复和复制
在下列情况下轮转:
– MySQL 重新启动
– 其达到 max_binlog_size 设置的最大大小
– 发出 FLUSH LOGS 语句
可以通过各种方式进行检查:
– 元数据:SHOW BINARY LOGS, SHOW MASTER STATUS
– 内容:mysqlbinlog

二进制日志格式

MySQL以三种不同格式之一在二进制日志中记录信息:
– 基于行的日志记录(默认方法)
– 基于语句的日志记录
– 混合记录
通过启动全局或会话 binlog_format 服务器变量来更改二进制日志格式:
SET [GLOBAL|SESSION] BINLOG_FORMAT=[row|statement|mixed|default];
不能在运行时设置 binlog_format 变量:
– 从存储函数或触发器中
– 如果NDB存储引擎已启用
– 如果会话当前正在使用基于行的复制,则临时表会

基于行的二进制日志

基于行的二进制日志:
是默认的二进制日志格式
记录对单个表行的更改
        更新多行时会生成更大的日志
        日志中记录的值与发送到存储引擎的值完全相同
        每个表都需要一个主键来正确标识每一行
        从属服务器上需要的 DML 锁更少
能始终正确重放语句,即使语句是不确定的
        例如:CURRENT_USER() CONNECTION_ID()
主服务器和从属服务器必须使用相同的表结构

基于语句的二进制日志

包含实际的 SQL 语句
– 可用于审计
– 更容易识别用于时间点恢复的语句
包括 DDL (CREATE, DROP, ) DML (UPDATE, DELETE, ) 语句
由于所需的文件大小相对较小,因此节省了磁盘空间和网络带宽
– 当一条 SQL 语句修改多行时
不能保证非确定性语句在远程机器上的正确重放
– 如果 MySQL 不能保证这一点,它就会发出警告:Statement may not be safe to log in
statement format

混合格式二进制日志

默认情况下使用基于语句的日志记录
当语句不确定时会使用基于行的日志记录:
– 调用 UUID(), USER(), FOUND_ROWS(), ROWS_COUNT(), 或任何用户定义的函数
– 当一个或多个具有 AUTO_INCREMENT 列的表被更新并调用触发器或存储函数时
– 当语句引用系统变量时
– 某些涉及视图或临时表的情况

复制日志 12-42

从属服务器维护有关复制事件的信息
中继日志集:
– 包括中继日志和中继日志索引文件
– 包含来自主服务器的二进制日志事件的副本
从属服务器状态日志:
– 包含执行复制所需的信息
        主服务器连接详细信息和日志坐标
        中继日志坐标
– 存储在表(默认)或文件中
        在 mysql 数据库的 slave_master_info slave_relay_log_info
        默认文件名称:master.info relay-log.info

故障安全 (Crash-Safe) 复制

二进制日志记录是故障安全的:
– MySQL 仅记录完成的事件或事务
– 使用 sync-binlog 提高安全性
        默认值是 1,最安全的,操作系统在每次事务后写入文件
        将 sync-binlog 设置为 0,当操作系统根据其内部规则写入文件的同时服务器崩溃时,
性能最好但事务丢失的可能性最大
        将该值设置为大于 1 的任何数字以在该数量的事务之后写入
将从属服务器状态日志存储在表中以进行故障安全复制。
– 选项:master-info-repository 和 relay-log-info-repository
        可能值为 FILE(默认值)和 TABLE
        TABLE 是故障安全的

多源复制

使复制从属服务器能够同时从多个主服务器接收事务
– 至少需要两个主服务器和一个从属服务器设备
– 从属服务器为每个主服务器创建一个 复制通道
– 从属服务器必须使用 基于表 的资料档案库
        多源复制与 基于文件 的资料档案库不兼容
不尝试检测或解决冲突
– 如果需要此功能,则由应用程序负责
Enables:
– 将多台服务器备份到一台服务器
– 将多台服务器的数据整合到一台服务器
– 合并表的分片
http://www.lryc.cn/news/5978.html

相关文章:

  • kail工具的使用--- cewl
  • 【蓝桥杯集训1】前缀和专题(2 / 5)
  • 基于模块联邦的微前端实现方案
  • 【单目标优化算法】食肉植物优化算法(Matlab代码实现)
  • ANTLR4入门学习(四)
  • Android okhttp3中发送websocket消息,并通过mockwebserver将一个安卓设备模拟成服务器接发消息
  • MySQL系统变量和自定义变量
  • 基于Python来爬取某音动态壁纸,桌面更香了!
  • [数据库]表的约束
  • VisualGDB 5.6R9 FOR WINDOWS
  • Yolov8的多目标跟踪实现
  • 28--Django-后端开发-drf之自定义全局异常、接口文档生成以及三大认证源码分析
  • 【MyBatis】动态SQL
  • LeetCode(剑指offer) Day1
  • 1、MyBatis框架——JDBC代码回顾与分析、lombok插件的安装与使用
  • 笔记-GPS设备定位方式
  • 2023秋招携程SRE算法岗面试经验分享
  • 4.9 内部类
  • ncnn模型精度验证
  • IB-PYP幼儿十大素质培养目标
  • 02.13:监督学习中的分类问题
  • leetcode刷题 | 关于二叉树的题型总结3
  • 设计模式-结构型
  • 【新】华为OD机试 - 预订酒店(Python)| 运气好 会考到原题
  • 【编程基础之Python】4、安装Python开发工具
  • 5. 最长回文子串
  • 内网渗透(二十四)之Windows协议认证和密码抓取-Mimikatz读取sam和lsass获取密码
  • 【THREE.JS】网页中的炫酷3D
  • Go语言之 下载安装go以及vscode配置go环境
  • RBAC权限 API声明四种kubernetes对象