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

MySQL 日志数据同步的详细教程

以下是 MySQL 日志数据同步的详细教程,主要介绍基于二进制日志(binlog)的主从复制和基于 GTID 的高级同步方案:
一、MySQL 二进制日志(binlog)同步基础
1. 二进制日志原理
binlog 是 MySQL 的事务性日志,记录所有导致数据变更的 SQL 语句(如 INSERT、UPDATE、DELETE)。
主从复制 通过 binlog 实现:主库记录 binlog → 从库复制 binlog → 从库重放 SQL 语句。
2. 配置主库(Master)
修改my.cnf配置文件:
[mysqld]
server-id = 1                 # 唯一ID,范围1-2^32-1
log-bin = /var/log/mysql/binlog   # 启用binlog并指定路径
binlog-do-db = mydatabase     # 指定需要同步的数据库(可选)
expire-logs-days = 7          # binlog过期时间
max-binlog-size = 100M        # 单个binlog文件最大大小
重启 MySQL 后,创建用于复制的用户:
sql
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
获取主库当前 binlog 位置:
sql
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| binlog.000001    | 1234     | mydatabase   |                  |
+------------------+----------+--------------+------------------+
3. 配置从库(Slave)
修改my.cnf配置文件:
[mysqld]
server-id = 2                 # 唯一ID,不能与主库重复
relay-log = /var/log/mysql/relay-bin  # 中继日志路径
log-bin = /var/log/mysql/binlog       # 从库也可作为其他从库的主库
read-only = 1               # 从库设置为只读(可选)
重启 MySQL 后,配置主库连接信息:
CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='binlog.000001',  # 主库SHOW MASTER STATUS的File值
  MASTER_LOG_POS=1234;              # 主库SHOW MASTER STATUS的Position值

START SLAVE;
SHOW SLAVE STATUS\G;  # 检查同步状态
确保以下两个状态均为Yes:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
二、基于 GTID 的高级同步
1. GTID(全局事务标识符)原理
GTID 是全局唯一的事务 ID(格式如UUID:Transaction_ID),每个事务在主库生成后即固定。
优势:自动定位 binlog 位置,简化拓扑结构变更,支持多主复制。
2. 配置主库(GTID 模式)
修改my.cnf配置文件:
[mysqld]
server-id = 1
log-bin = /var/log/mysql/binlog
gtid_mode = ON                # 启用GTID模式
enforce-gtid-consistency = ON # 强制GTID一致性
log-slave-updates = ON        # 从库更新写入binlog
3. 配置从库(GTID 模式)
修改my.cnf配置文件:
[mysqld]
server-id = 2
gtid_mode = ON
enforce-gtid-consistency = ON
log-slave-updates = ON
配置同步(无需指定 binlog 位置):
CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='password',
  MASTER_AUTO_POSITION=1;      # 使用GTID自动定位

START SLAVE;
三、常见同步问题排查
1. 状态检查命令
SHOW SLAVE STATUS\G;          # 查看从库同步状态
SHOW BINARY LOGS;             # 查看主库binlog文件列表
SHOW RELAYLOG EVENTS;         # 查看从库中继日志事件
2. 常见错误及解决
IO 线程错误(Slave_IO_Running: No):
检查主从网络连通性(ping、telnet 3306)
验证复制用户权限
检查主库 binlog 文件是否存在
SQL 线程错误(Slave_SQL_Running: No):
查看Last_SQL_Error定位具体错误
从库与主库数据不一致时,可尝试:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;  # 跳过一个事务
START SLAVE;

四、其他同步方案
1. 半同步复制(Semi-sync Replication)
确保事务在至少一个从库写入中继日志后才返回成功,提高数据安全性。
-- 主库安装插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;

-- 从库安装插件
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
2. 多源复制(Multi-source Replication)
一个从库同时从多个主库复制数据(需 MySQL 5.7+):
-- 配置多个通道
CHANGE MASTER TO
  MASTER_HOST='master1_ip',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='password',
  MASTER_AUTO_POSITION=1
FOR CHANNEL 'channel1';

CHANGE MASTER TO
  MASTER_HOST='master2_ip',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='password',
  MASTER_AUTO_POSITION=1
FOR CHANNEL 'channel2';
五、生产环境注意事项
硬件配置:主库性能不足可能导致 binlog 生成慢,影响同步延迟。
网络优化:主从服务器建议部署在同机房,低延迟网络(RTT < 1ms)。
监控告警:
监控Seconds_Behind_Master(同步延迟时间)
监控 binlog 磁盘空间(避免占满导致主库挂起)
备份策略:定期备份 binlog 文件,防止主库故障时数据丢失。

相关文章:

MySQL 日志数据同步的详细教程

以下是 MySQL 日志数据同步的详细教程&#xff0c;主要介绍基于二进制日志&#xff08;binlog&#xff09;的主从复制和基于 GTID 的高级同步方案&#xff1a; 一、MySQL 二进制日志&#xff08;binlog&#xff09;同步基础 1. 二进制日志原理 binlog 是 MySQL 的事务性日志&am…...

2025 Java面试大全技术文章(面试题1)

数据类型与包装类 问题&#xff1a;Java中基本数据类型与包装类的区别是什么&#xff1f;自动装箱与拆箱的底层原理&#xff1f; 答案&#xff1a; 基本数据类型&#xff08;如int、double&#xff09;直接存储值&#xff0c;包装类&#xff08;如Integer、Double&#xff09;…...

docker 中 什么是「卷」?(Volume)

&#x1f5c3;️ 什么是「卷」&#xff1f;&#xff08;Volume&#xff09; 「卷」就是 Docker 里用来“保存数据”的一块空间&#xff0c;就像是一个外接硬盘&#xff0c;或者一个 USB 闪存。 容器本身是临时的&#xff0c;你一删它&#xff0c;它的数据也跟着没了。但卷是用…...

三维可视化和实时数据处理对前端性能要求以及优化渲染效率

在三维可视化&#xff08;如 Three.js 场景&#xff09;和实时数据处理&#xff08;如每秒数百条设备状态更新&#xff09;场景中&#xff0c;前端性能优化是确保用户体验的核心挑战。以下结合技术原理与行业实践&#xff0c;详细说明Web Workers和虚拟 DOM的优化机制&#xff…...

基于VU37P的高性能采集板卡

基于VU37P的高性能采集板卡是一款最大可提供20路ADC接收通道的高性能采集板卡。每路A/D通道支持1GS/s的采样率&#xff0c;分辨率为14bit&#xff0c;模拟输入带宽可达500MHz&#xff0c;交流耦合&#xff0c;输入阻抗50欧姆。 产品简介 可提供20路ADC接收通道的高性能采集板…...

2025-05-31 Python深度学习10——模型训练流程

文章目录 1 数据准备1.1 下载与预处理1.2 数据加载 2 模型构建2.1 自定义 CNN 模型2.2 GPU加速 3 训练配置3.1 损失函数3.2 优化器3.3 训练参数 4 训练循环4.1 训练模式 (model.train())4.2 评估模式 (model.eval()) 5 模型验证 本文环境&#xff1a; Pycharm 2025.1Python 3.1…...

卷积神经网络(CNN)、YOLO和人脸识别之间的关系

核心关系图解 TEXT 摄像头图像 → [YOLO&#xff1a;人脸检测] → 定位人脸位置 → [CNN&#xff1a;特征提取] → 人脸特征向量 → [人脸识别系统] → 身份匹配 通俗比喻 想象你在一个拥挤的火车站找人&#xff1a; YOLO 是你的"快速扫描眼"&#xff1a; 一眼扫…...

K8S StatefulSet 快速开始

其实这篇文章的梗概已经写了很久了&#xff0c;中间我小孩出生了&#xff0c;从此人间多了一份牵挂。抽出一些时间去办理新生儿相关手续。初为人父确实艰辛&#xff0c;就像学技术一样&#xff0c;都需要有极大的耐心&#xff0c;付出很多的时间。 一、引子 1.1、独立的存储 …...

重新测试deepseek Jakarta EE 10编程能力

听说deepseek做了一个小更新&#xff0c;我重新测试了一下Jakarta EE 10编程能力&#xff1b;有点进步&#xff0c;遗漏的功能比以前少了。 采用Jakarta EE 10 编写员工信息表维护表&#xff0c;包括员工查询与搜索、员工列表、新增员工、删除员工&#xff0c;修改员工&#xf…...

nav2笔记-250603

合作背景&#xff1a; AMD与Open Navigation在过去几个月里进行了合作&#xff0c;旨在向ROS 2社区展示AMD强大的Ryzen AI、Embedded和Kria能力。 演示内容&#xff1a; 帖子提到&#xff0c;他们已经开始展示如何使用Ryzen AI为自主机器人产品提供动力&#xff0c;在各种现实世…...

指纹识别+精准化POC攻击

开发目的 解决漏洞扫描器的痛点 第一就是扫描量太大&#xff0c;对一个站点扫描了大量的无用 POC&#xff0c;浪费时间 指纹识别后还需要根据对应的指纹去进行 payload 扫描&#xff0c;非常的麻烦 开发思路 我们的思路分为大体分为指纹POC扫描 所以思路大概从这几个方面…...

LeetCode[404]左叶子之和

思路&#xff1a; 题目要求求出左叶子的和&#xff0c;左叶子的条件是左右节点为空且是左子树的叶子节点才叫左叶子节点&#xff0c;那么右子树的左叶子节点的和是什么呢&#xff1f;这样想就引出了递归的顺序&#xff0c;后序遍历&#xff0c;求出左右子树的节点和&#xff0c…...

mac环境下的python、pycharm和pip安装使用

Python安装 Mac环境下的python安装 下载地址&#xff1a;https://www.jetbrains.com.cn/pycharm/ 一直点击下一步即可完成 在应用程序中会多了两个图标 IDLE 和 Python launcher IDLE支持在窗口中直接敲python命令并立即执行&#xff0c;双击即可打开 Python launcher双击打…...

C语言多级指针深度解析:从一级到三级的奥秘

资料合集下载链接: ​​https://pan.quark.cn/s/472bbdfcd014​​ 在C语言中,指针是理解内存和进行底层编程的关键。我们知道,一个一级指针存储的是一个变量的内存地址。但C语言的强大之处在于,指针本身也可以有自己的地址,而存储这个指针的地址的变量,就是一个更高层次…...

uni-app学习笔记十九--pages.json全局样式globalStyle设置

pages.json 页面路由 pages.json 文件用来对 uni-app 进行全局配置&#xff0c;决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等。 导航栏高度为 44px (不含状态栏)&#xff0c;tabBar 高度为 50px (不含安全区)。 它类似微信小程序中app.json的页面管理部…...

BUUCTF[极客大挑战 2019]Havefun 1题解

BUUCTF[极客大挑战 2019]Havefun 1题解 题目分析解题理解代码逻辑&#xff1a;构造Payload&#xff1a; 总结 题目分析 生成靶机&#xff0c;进入网址&#xff1a; 首页几乎没有任何信息&#xff0c;公式化F12打开源码&#xff0c;发现一段被注释的源码&#xff1a; 下面我们…...

【基础】Unity中Camera组件知识点

一、投影模式 (Projection) 1. 透视模式 (Perspective) 原理&#xff1a;模拟人眼&#xff0c;近大远小&#xff08;锥形体视锥&#xff09; 核心参数&#xff1a; Field of View (FOV)&#xff1a;垂直视场角 典型值&#xff1a;第一人称 60-90&#xff0c;驾驶舱 30-45 特…...

Tomcat优化篇

目录 一、Tomcat自身配置 1.Tomcat管理页面 2. 禁用AJP服务 3.Executor优化 4.三种运行模式 5.web.xml 6.Host标签 7.Context标签 8.启动速度优化 9.其他方面 二、JMeter测试 笔者推荐 一、Tomcat自身配置 1.Tomcat管理页面 我们可以打开Tomcat的管理页面&#xff…...

Temporal Fusion Transformer(TFT)扩散模型时间序列预测模型

1. TFT 简介 Temporal Fusion Transformer&#xff08;TFT&#xff09;模型是一种专为时间序列预测设计的高级深度学习模型。它结合了神经网络的多种机制处理时间序列数据中的复杂关系。TFT 由 Lim et al. 于 2019年提出&#xff0c;旨在处理时间序列中的不确定性和多尺度的依…...

【LangServe部署流程】5 分钟部署你的 AI 服务

目录 一、LangServe简介 二、环境准备 1. 安装必要依赖 2. 编写一个 LangChain 可运行链&#xff08;Runnable&#xff09; 3. 启动 LangServe 服务 4. 启动服务 5. 使用 API 进行调用 三、可选&#xff1a;访问交互式 Swagger 文档 四、基于 LangServe 的 RAG 应用部…...

攻防世界-unseping

进入环境 在获得的场景中发现PHP代码并进行分析 编写PHP编码 得到 Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJwd2QiO319 将其传入 想执行ls&#xff0c;但是发现被过滤掉了 使用环境变量进行绕过 $a new…...

微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频

2025 年 6 月 2 日&#xff0c;微软正式在自家 Bing 应用中上线了一项名为 “Bing Video Creator” 的新功能&#xff0c;为广大用户带来了全新的创作体验。 Bing Video Creator 背靠 OpenAI 当红的 Sora 视频生成模型&#xff0c;用户只需输入文字描述&#xff0c;就能直接生…...

(13)java+ selenium->元素定位大法之By_partial_link_text

1.简介 在上一篇中我们说了link_text,目前我们接着看partial link text,顾名思义是通过链接定位的(官方说法:超链接文本定位)。我们在上一篇的文章末尾有提到,这种方式的定位属于模糊匹配定位,什么是partial link text呢,看到part这个单词我们就可以知道,当这个文字超…...

Xget 正式发布:您的高性能、安全下载加速工具!

您可以通过 star 我固定的 GitHub 存储库来支持我&#xff0c;谢谢&#xff01;以下是我的一些 GitHub 存储库&#xff0c;很有可能对您有用&#xff1a; tzst Xget Prompt Library 原文 URL&#xff1a;https://blog.xi-xu.me/2025/06/02/xget-launch-high-performance-sec…...

[yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码

【FasterNet介绍】 为了设计快速神经网络&#xff0c;许多工作都集中在减少浮点运算的数量&#xff08;FLOPs&#xff09;上。 然而&#xff0c;我们观察到FLOPs的减少并不一定会导致延迟的类似程度的减少。 这主要源于低效率的每秒浮点运算(FLOPS)。 为了实现更快的网络&#…...

一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 集成了 Matplotlib&#xff0c;提供了简单高效的绘图接口&#xff0c;使数据可视化变得直观便捷。本指南将详…...

企业级安全实践:SSL/TLS 加密与权限管理(一)

引言 ** 在数字化转型的浪潮中&#xff0c;企业对网络的依赖程度与日俱增&#xff0c;从日常办公到核心业务的开展&#xff0c;都离不开网络的支持。与此同时&#xff0c;网络安全问题也日益严峻&#xff0c;成为企业发展过程中不可忽视的重要挑战。 一旦企业遭遇网络安全事…...

2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略

1.VSCode Windows 最新安装指南: 以下是 2025 年 Windows 系统下安装 Visual Studio Code(VSCode)的最新指南,结合官方文档与实际操作经验整理而成: 一、下载官方安装包: 1.访问官网: 打开浏览器,进入 VSCode 官方下载页面https://code.visualstudio.com/Download 2…...

RabbitMQ如何保证消息可靠性

RabbitMQ是一个流行的开源消息代理&#xff0c;它提供了可靠的消息传递机制&#xff0c;广泛应用于分布式系统和微服务架构中。在现代应用中&#xff0c;确保消息的可靠性至关重要&#xff0c;以防止消息丢失和重复处理。本文将详细探讨RabbitMQ如何通过多种机制保证消息的可靠…...

【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码

三点法制导是一种导弹制导策略,主要用于确保导弹能够准确追踪并击中移动目标。该方法通过计算导弹、目标和制导站之间的相对位置关系,实现对目标的有效制导。 本文给出MATLAB下的三点法例程,模拟平面上捕获运动目标的情况订阅专栏后可直接查看源代码,粘贴到MATLAB空脚本中即…...