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.000023binlog.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

总结

第四节 读写分离

相关推荐
DianSan_ERP1 小时前
抖店订单接口中消费者信息加密解密机制与安全履约全解析
前端·网络·数据库·后端·安全·团队开发·运维开发
wang3zc1 小时前
HTML函数能否用外接显卡坞提升性能_eGPU对HTML函数帮助【汇总】
jvm·数据库·python
難釋懷2 小时前
Redis网络模型-Redis是单线程的吗?为什么使用单线程
网络·数据库·redis
2301_781571422 小时前
mysql如何配置自增ID预留_mysql innodb_autoinc_lock_mode参数
jvm·数据库·python
解决问题no解决代码问题2 小时前
Quartz 1.6.5
数据库·servlet·oracle
桂花很香,旭很美2 小时前
Redis-智能体开发中的大杀器
数据库·redis·缓存
子午2 小时前
校园课堂异常行为检测系统~Python+YOLOV8算法+深度学习+模型训练+人工智能
人工智能·python·yolo
dinglu1030DL2 小时前
CSS如何实现背景颜色的棋盘格分布_利用repeating-gradient
jvm·数据库·python
2zcode2 小时前
滚压表面强化过程中变形诱导位错演化与梯度晶粒细化机理的数值模拟研究
人工智能·python·算法