数据库主从复制学习笔记

目录

一、Binlog(Binary Log)

核心特性

核心用途

Binlog 格式(3种类型)

二、主从复制

核心原理

主库(Master)

从库(Slave)

配置步骤(以 MySQL 为例)

1. 主库配置

2. 创建复制账号

3. 从库配置

4. 启动复制

三、GTID

GTID 核心组成

GTID 核心优势

GTID 启用配置

修改 my.cnf

重启 MySQL 生效


一、Binlog(Binary Log)

Binlog(Binary Log)是 MySQL 数据库的核心日志之一,用于记录数据库的逻辑操作。简单来说,它像一台摄像机,忠实记录所有对数据库进行修改的 SQL 语句(如 INSERT/UPDATE/DELETE)或表结构变更(如 CREATE/ALTER)等操作。

核心特性
  1. 逻辑日志

记录的是 SQL 语句的原始逻辑(例如:UPDATE users SET age=20 WHERE id=1;),而非底层数据页的物理修改细节(这是 redo log 的特性)。

  1. 持久化存储

Binlog 以文件形式存储在磁盘中,不会随数据库重启而丢失,生命周期由配置决定(可长期保存)。

  1. 可追溯性

通过解析 binlog 文件,可以精确还原数据库的历史变更过程。

核心用途
  1. 主从复制(Replication)

主库将 binlog 发送给从库,从库重放这些日志以实现数据同步,是 MySQL 高可用架构的基础。

  1. 数据恢复

当误删数据或数据库故障时,可通过 binlog + 定期备份实现时间点恢复(Point-in-Time Recovery)。

Binlog 格式(3种类型)

格式

特点

示例

STATEMENT

记录原始 SQL 语句

UPDATE orders SET create_time = NOW() WHERE status = 'unpaid';

ROW

记录每行数据的变化细节(如修改前后的整行数据

记录每行数据修改前后的完整值(例如:id=1 的用户 balance 从 500 → 400)

MIXED

混合模式,根据 SQL 语句自动选择 STATEMENT 或 ROW 格式

对于 INSERT INTO payments VALUES (UUID(), 100); MIXED 模式会自动切到 ROW 格式,避免主键冲突。

二、主从复制

是数据库系统中实现数据高可用、读写分离、负载均衡的核心技术。其核心思想是通过将主库(Master)的数据变更异步/同步复制到从库(Slave),使从库与主库保持数据一致。

核心原理
主库(Master)
  • 记录所有数据变更到 Binlog(二进制日志)
  • 通过 Binlog Dump 线程 向从库发送日志事件
从库(Slave)
  • I/O 线程:连接主库,接收 Binlog 并写入本地 Relay Log(中继日志)
  • SQL 线程:读取 Relay Log,重放 SQL 事件,实现数据同步
配置步骤(以 MySQL 为例)
1. 主库配置

# my.cnf
[mysqld]
server_id = 1               # 唯一ID
log_bin = mysql-bin         # 开启Binlog
binlog_format = ROW         # 推荐ROW模式
2. 创建复制账号
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
3. 从库配置
# my.cnf
[mysqld]
server_id = 2               # 唯一ID,不能与主库冲突
relay_log = mysql-relay-bin # 开启Relay Log
read_only = ON              # 从库设为只读(防误操作)
4. 启动复制
-- 从库执行
CHANGE MASTER TOMASTER_HOST = '主库IP',MASTER_USER = 'repl',MASTER_PASSWORD = 'your_password',MASTER_LOG_FILE = 'mysql-bin.000001', -- 主库当前Binlog文件名MASTER_LOG_POS = 154;                 -- 主库当前Binlog位置START SLAVE;  -- 启动复制

三、GTID

GTID(全局事务标识符)是 MySQL 主从复制中用于唯一标识事务的机制,它解决了传统复制依赖 binlog 文件名和位置的痛点。

GTID 核心组成

每个 GTID 格式为: GTID = source_id:transaction_id

    • source_id:产生事务的服务器唯一标识(通常是 server_uuid)
    • transaction_id:事务序列号,单调递增(如 1-100 表示第1到第100个事务)

示例: 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5 表示该事务来自 server_uuid 为 3E11FA47... 的服务器,事务序列号为1到5。

GTID 核心优势

传统复制痛点

GTID 解决方案

主从切换需手动指定 binlog 位置

自动追踪事务,无需关心文件位置

难以确定事务是否在所有从库执行

通过 GTID 集合全局唯一标识事务状态

级联复制拓扑管理复杂

事务路径清晰,支持任意拓扑结构

GTID 启用配置
修改 my.cnf
   [mysqld]gtid_mode = ON                 # 启用 GTIDenforce_gtid_consistency = ON  # 强制 GTID 一致性log_bin = mysql-bin            # 必须开启 binlogserver_id = 1                  # 服务器唯一 ID
重启 MySQL 生效
   systemctl restart mysqld

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宁德时代25年春招笔试演绎数字推理SHL测评题库

宁德时代校招测评包含演绎推理数字推理两部分,请单击以下链接进行测评,详细操作指引请参见如下指引,请在测试前了解,大约用时60分钟。正式测评有两个部分:数字推理18分钟演绎推理18分钟,数字推理共10题,演绎…

Ubuntu24.04 编译 Qt 源码

一:Ubuntu 把 Qt 拆成了多个源码包: 1. 基础包 2. 可选包 二:编译 qtbase-opensource-src 1. 配置源(修改 /etc/apt/sources.list.d/ubuntu.sources) 2. 下载代码 apt source qtbase-opensource-src3. 安装依赖 sudo a…

4-10记录(

就算有两个49也要按照先后顺序放,即把比下划线的49大的数字往后移 temp是防止覆盖 带哨兵的作用,把0的位置空出来,49>38,就先把38放到哨兵位然后把49放进原先38的格子里,然后把哨兵位的38后移一位

电脑死机/锁屏后死机无法唤醒

电脑死机/锁屏后死机无法唤醒 导航 文章目录 电脑死机/锁屏后死机无法唤醒导航一、系统日志分析二、电源管理与睡眠模式问题1、禁用快速启动2、调整电源计划(开启高性能模式&关闭硬盘休眠)若是没有禁用睡眠和关闭显示器方法一:方法二&am…

.htaccess文件的组成、用法及作用详解

.htaccess(Hypertext Access)是 Apache 服务器的一个分布式配置文件,可以覆盖主配置文件的设置,无需重启服务器即可生效(需要管理员级别权限修改的httpd.conf文件修改后需要重启Apach服务器)它主要用于目录…

10A 大电流 DCDC 降流芯片 WD5030

10A 大电流 DCDC 降压芯片 WD5030 在电子设备的电源管理领域,高效稳定的 DCDC 芯片至关重要。今天我们来深入探讨一款性能卓越的 10A 大电流 DCDC 降流芯片 ——WD5030。它在众多电子应用场景中展现出了强大的优势,为各类设备的稳定供电提供了可靠保障。…

HCIP【路由过滤技术(详解)】

目录 1 简介 2 路由过滤方法 3 路由过滤工具 3.1 静默接口 3.2 ACL 3.3 地址前缀列表 3.4 filter-policy 3.4.1 filter-policy过滤接收路由(以RIP为例) 3.4.2 filter-policy过滤接收路由(以OSPF为例) 1 简介 路由过滤技术…

Cursor Agent 模式实现复杂工作流的编排与执行

引言 在 Dify Workflows MCP Server (TypeScript)设计与实战 文章中提到过通过 MCP 调用编排好的 Dify 工作流,那在 Cursor 中是否可以 自行实现 对应的工作流编排效果,这样可以充分的利用 Cursor 中的代码上下文,从而保证生成的代码可以更符合项目的需求,进一步降低手工…

ShopXO v2.2.4开源商城手动部署(保姆级)+异常处理

ShopXO v2.2.4开源商城手动部署(保姆级) 1.项目了解 1.1项目简洁 ShopXO国内领先企业级免费开源电商系统! 求实进取、创新专注、自主研发、国内领先企业级电商系统解决方案。遵循MIT开源协议发布,无需授权、可商用、可二次开发、满足99%的电商运营需…

蓝桥杯 分解质因数(唯一分解定理)

分解质因数 题目描述 给定一个区间 [a,b][a,b],请你求出区间 [a,b][a,b] 中所有整数的质因数分解。 输入描述 输入共一行,包含两个整数 a,ba,b。 2≤a≤b≤1032≤a≤b≤103。 输出描述 每行输出一个数的分解,形如 ka1a2a3⋯(a1≤a2≤a…

【C++算法】53.链表_重排链表

文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 143. 重排链表 题目描述: 解法 模拟 找到链表的中间节点 快慢双指针 把后面的部分逆序 双指针,三指针,头插法 合并两个链表 合并两个有…

【Java设计模式】第7章 建造者模式讲解

7-1 建造者模式讲解 1. 定义与类型 定义: 将复杂对象的构建与表示分离,使相同构建过程可创建不同表示。类型: 创建型模式。通俗解释: 分步构建含多组件的对象,流程固定但顺序灵活(如做菜时放盐顺序可变)。2. 适用场景 对象内部结构复杂(多属性或多步骤)。需将对象创建与…

本地laravel项目【dcat-admin】部署到liunx服务器

文章目录 前言一、部署流程1、数据库搬迁2、宝塔创建网站,配置php3、修改nginx配置4、在public目录设置软连接5、修改env配置、刷新缓存 二、其他问题1.后台登陆失败问题2.完美解决接口跨域问题 总结 前言 laravel新手记录 差不多一个月,总算用laravel…

医院导航系统方案:多模态三维导航引擎赋能医院智慧升级(二)

本文面向智慧医院建设方与算法研发工程师,聚焦解决多楼层复杂场景下的精准导航难题,提供从数学建模到工程落地的技术实战方案。 如需获取智慧医院导航导诊系统解决方案请前往文章最下方获取,如有项目合作及技术交流欢迎私信作者。 一、技术聚…

NO.84十六届蓝桥杯备战|动态规划-路径类DP|矩阵的最小路径和|迷雾森林|过河卒|方格取数(C++)

路径类dp是线性dp的⼀种,它是在⼀个nm的矩阵中设置⼀个⾏⾛规则,研究从起点⾛到终点的⽅案数、最⼩路径和或者最⼤路径和等等的问题 矩阵的最小路径和_牛客题霸_牛客网 状态表⽰: dp[i][j]表⽰:到达[i, j]位置处,最⼩…

openlayers入门01 -- 环境配置和初始化地图

openlayers入门 openlayers开发环境配置 1.下载VSCode 官网地址:https://code.visualstudio.com/ 点击Download for Windows 2.安装汉化插件和openlayers插件 搜索chinese,下载Chinese (Simplified) (简体中文) Language Pack 更改语言并重启 搜…

最新版DataGrip超详细图文安装教程,带补丁包(2025最新版保姆级教程)

目录 前言 一、DataGrip最新版下载 二、DataGrip安装 三、DataGrip补丁 四、运行DataGrip 前言 DataGrip 是由 JetBrains 公司开发的一款专业的跨平台数据库管理工具,主要用于连接、管理和操作多种主流关系型数据库及部分 NoSQL 数据库。它支持 MySQL、Postgre…

25年时代电服社招入职Verify测评SHL题库语言理解数字推理考什么?

宁德时代语言理解 语言理解部分主要考察应聘者的语言表达和逻辑思维能力,题型包括阅读理解、逻辑填空和语句排序。阅读理解要求应聘者快速捕捉文章的主旨和细节信息,能够迅速把握文章的核心观点;逻辑填空需要在给定的语句中填入最合适的词汇…

QML 弹窗控件:Popup的基本用法与样式

目录 引言相关阅读Popup基本属性工程结构示例实现Main.qml - 主界面SimplePopup.qml - 简单弹窗ModalPopup.qml - 模态弹窗CustomPopup.qml - 自定义样式弹窗AnimatedPopup.qml - 带动画的弹窗 总结工程下载 引言 在现代图形用户界面(GUI)开发中,弹窗(Popup)是一种…

SkyWalking + ELK 全链路监控系统整合指南

一、架构设计图 二、核心组件部署 1. SkyWalking 集群部署 yaml: # docker-compose-skywalking.yml version: 3.8services:oap:image: apache/skywalking-oap-server:9.7.0ports:- "11800:11800" # gRPC- "12800:12800" # HTTPenvironment:SW_STORAGE: …