MySQL运维篇

第一节 日志

P02 错误日志

windows系统常见的日志路径:

复制代码
C:\ProgramData\MySQL\MySQL Server X.X\Data\主机名.err

比如自己电脑中错误日志的路径为:

复制代码
C:\ProgramData\MySQL\MySQL Server 9.6\Data\LAPTOP-TQ4U85RH.err

自己补充:

不管是 cmd 里执行的 SQL,还是 Python 程序执行的 SQL,只要是 MySQL 服务器出错,都会统一记录在同一个错误日志里!

如果看不懂日志,可以找AI帮分析。

mysql自带的错误日志,没办法代替程序自身开发的错误日志系统,因为程序自身的错误日志,可以定位到错误日志是哪个源码产生的,什么时间产生的,哪个用户产生的,同样的错误出现了多少次,这些都是可以定位的。

P03 二进制日志

一、课堂内容

个人感悟:

二进制日志的路径是:

复制代码
C:\ProgramData\MySQL\MySQL Server 9.6\Data

二进制日志默认保存的时候单位为秒,默认保存时间是30天。

个人感悟:

这一切的核心是弄明白,二进制查看的命令。

二、自己补充:mysql中的二进制日志,我怎么知道哪个表的日志在哪个文件中

(一)先理解核心前提

Binlog 是按时间顺序写入的,每个文件记录了一段时间内所有库表的操作,并不是 "按表分文件" 的。所以你需要通过解析 binlog 文件内容,反向找出哪些文件包含了目标表的操作。


(二)方法 1:用 SQL 命令直接查(不用导出文件)

在 MySQL 命令行里,直接查看 binlog 文件里的事件,这是最方便的方式。

  1. 先查看当前有哪些 binlog 文件

    -- 查看所有 binlog 文件列表
    SHOW BINARY LOGS;

你会看到类似 binlog.000023、binlog.000037 这样的文件名,和你截图里的文件对应上。

  1. 查看某个 binlog 文件里的事件(含表信息)

    -- 替换成你要查的 binlog 文件名
    SHOW BINLOG EVENTS IN 'binlog.000037';

输出里的 Table_map 事件,会直接告诉你:

  • 哪个数据库(库名)
  • 哪个表(表名)
  • 被映射成了什么 table_id
  • 后续的 Write_rows/Update_rows/Delete_rows 事件,都是针对这个 table_id 的操作

比如你会看到类似这样的行:

plaintext

复制代码
| binlog.000037 | 1234 | Table_map | 1 | 456 | table_id: 789 (bai_study.test_table) |

这就说明 bai_study.test_table 这张表的操作,记录在 binlog.000037 这个文件里。


(三)方法 2:用 mysqlbinlog 工具解析(适合批量 / 导出分析)

MySQL 自带 mysqlbinlog 工具,可以把二进制日志解析成可读文本,还能直接过滤目标表。

  1. 基础解析命令(查看所有事件)

在 Windows 上,打开 CMD / 终端,进入你的 MySQL Server 9.6 的 bin 目录(比如 C:\Program Files\MySQL\MySQL Server 9.6\bin),执行:

复制代码
# 解析单个 binlog 文件
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 9.6\Data\binlog.000037" > binlog_000037.txt

生成的 binlog_000037.txt 文件里,所有 Table_map 事件都会明确写出表名,你可以直接搜索表名,快速定位哪些文件里有它的操作。

  1. 直接过滤出目标表的所有操作(推荐)

如果你的 binlog 是 ROW 格式(生产环境默认推荐),可以直接用 --database 和 --table 参数过滤:

复制代码
# 只解析 bai_study 库中 test_table 表的操作
mysqlbinlog --database=bai_study --table=test_table "C:\ProgramData\MySQL\MySQL Server 9.6\Data\binlog.000037" > test_table_operations.txt

如果文件里没有这个表的任何操作,生成的文件就会是空的,这样你就能快速判断这个 binlog 文件是否包含目标表的日志。


(四)补充:怎么批量检查所有 binlog 文件?

如果你的 binlog 文件很多,想一次性找出所有包含目标表的文件,可以用 for 循环批量处理(Windows 终端):

复制代码
# 进入 binlog 目录
cd "C:\ProgramData\MySQL\MySQL Server 9.6\Data"

# 遍历所有 binlog 文件,筛选包含目标表的文件
for %f in (binlog.*) do @(
    mysqlbinlog "%f" | findstr "bai_study.test_table" > nul && echo "%f contains test_table operations"
)

执行后,终端会直接输出哪些文件里有目标表的操作。


(五)关键注意事项
  1. binlog 格式限制 :--table 参数只对 ROW 格式的 binlog 生效,如果你的 binlog 是 STATEMENT 格式,只能用文本搜索表名。
  2. 权限问题 :ProgramData 目录是隐藏且受保护的,解析时如果报错权限不足,需要用管理员身份打开终端。
  3. 文件大小 :大的 binlog 文件解析会很慢,建议优先用 SHOW BINLOG EVENTS 快速查看关键文件。

P04 查询日志

如果平时用不到查询日志,可以把这个文件关掉,因为这个文件在运行过程中,是很大的。

P05 慢查询日志

第二节 主从复制

P06 概述

P07 原理

P08 主库配置

P09 从库配置

P10 测试

第三节分库分表

P11 介绍

P12介绍-拆分方式

P13 MyCat概述-安装

MyCat概述-核心概念

MyCat入门

MyCat入门-测试

MyCat配置1

MyCat配置2

Mycat分片-垂直分库

Mycat分片-垂直分库-测试

Mycat分片-水平分表

分片规则-范围分片

分片规则-取模分片

分片规则-一致性hash算法

分片规则-枚举分片

分片规则-应用指定算法

分片规则-固定hash算法

分片规则-字符串has解析

分片规则-按天分片

分片规则-按自然月分片

Mycat管理与监控-原理

Mycat管理工具

MyCat监控1

MyCat监控2

总结

第四节 读写分离

相关推荐
我的愿望是成为富婆几秒前
2027校招准备:普通本科数据相关专业,如何把考证、SQL与项目能力衔接起来?
大数据
重生之高冷汉堡包4 分钟前
JavaScript 网络爬虫教程(2026)
大数据·网络·爬虫·安全
for_ever_love__6 分钟前
LangGraph Checkpointer:持久化、断点续跑与多轮记忆
服务器·数据库·学习·持久化·langgraph·checkpointer·断点续跑
Data analyse4567 分钟前
用户路径SQL按会话起止时间聚合的方法
大数据·服务器·前端·数据库·人工智能·sql·数据分析
Lhan.zzZ9 分钟前
Linux + Qt/QML:解决 QtQuick.VirtualKeyboard.Plugins 模块加载失败与环境变量配置
linux·数据库·qt
程序员清风9 分钟前
文本字段清洗:字符串、分类值与格式标准化
大数据·人工智能·分类
大圣编蚕9 分钟前
Redis 为什么快?现在还是单线程吗?
数据库·redis·缓存
智慧物业老杨10 分钟前
物业费催收难?数智化系统如何用技术重构“服务-收费“闭环
大数据·人工智能
Raas10011 分钟前
AI网关怎么选?MAI Gateway(魔芋企业级AI网关)入选2026年企业级AI网关推荐清单
大数据·网络·人工智能·gateway·mai gateway
逸A16 分钟前
携程app逆向那些事(ai agent能力偏弱时)
人工智能·python·安全