第一节 日志
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 文件里的事件,这是最方便的方式。
-
先查看当前有哪些 binlog 文件
-- 查看所有 binlog 文件列表
SHOW BINARY LOGS;
你会看到类似 binlog.000023、binlog.000037 这样的文件名,和你截图里的文件对应上。
-
查看某个 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 工具,可以把二进制日志解析成可读文本,还能直接过滤目标表。
- 基础解析命令(查看所有事件)
在 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 事件都会明确写出表名,你可以直接搜索表名,快速定位哪些文件里有它的操作。
- 直接过滤出目标表的所有操作(推荐)
如果你的 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"
)
执行后,终端会直接输出哪些文件里有目标表的操作。
(五)关键注意事项
- binlog 格式限制 :
--table参数只对ROW格式的 binlog 生效,如果你的 binlog 是STATEMENT格式,只能用文本搜索表名。 - 权限问题 :
ProgramData目录是隐藏且受保护的,解析时如果报错权限不足,需要用管理员身份打开终端。 - 文件大小 :大的 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
总结