mysql_day03总结

目录

1运维篇-课程介绍

2日志-错误日志

3二进制日志

4查询日志

5慢查询日志

问题:

各日志的作用?

6主从复制-概述

7主从复制-原理

问题:

这主从复制原理第三步是什么意思?

8主从复制-主库配置

9主从复制-从库配置

问题:

从库配置中的只读是什么意思?

​编辑

10主从复制-测试

11分库分表-介绍

12介绍-拆分方式

问题:

1垂直分库和垂直分表的区别?

2那水平分库和水平分表呢?

13MyCat概述-安装

14MyCat概述-核心概念

15MyCat入门

问题:

这些.xml放在哪里?

16MyCat入门-测试

17MyCat配置1

问题:

1没有记住?

2什么是分片节点?

18MyCat配置2

问题:

1什么是分片算法?

19MyCat分片-垂直分库

20垂直分库-测试

问题:如何设置全局表?

21MyCat分片-水平分表

22分片规则-范围分片

23分片规则-取模分片

问题:

1上面两种名字及原理?

2上面两种算法都是针对数值的,那字符串数据呢?

24一致性hash算法

25枚举分片

问题:枚举分片和一致性hash算法有什么区别?

26应用指定算法

27固定hash算法

28字符串hash解析

问题

1一致性hash算法和固定hash算法和字符串hash解析区别?

29按天分片

30按自然月分片

问题:

上图的数量一致是什么意思?

31Mycat管理与监控-原理

问题:

分片分析是什么意思?

32Mycat管理工具

33Mycat监控1

关键:

需要安装zookeeper

34Mycat监控2

35分库分表总结

36读写分离-介绍

问题:

主从复制的原理?

37一主一从准备

38一主一从分离

关键:

39双主从介绍

问题:

双主双从比一主一从好在哪里?

40双主从搭建

​编辑

问题:

两台主库相互复制是干什么的?

41双主从读写分离

问题:

这个自动切换是什么意思?

42读写分离总结

43运维篇总结


1运维篇-课程介绍

2日志-错误日志

3二进制日志

4查询日志

5慢查询日志

问题:

各日志的作用?

错误日志->定位错误

二进制日志->数据恢复

查询日志->所有客户端操作语句(默认没有开启)

慢查询日志->记录执行效率比较低的SQL语句(从而可以精确优化)

6主从复制-概述

7主从复制-原理

问题:

这主从复制原理第三步是什么意思?

8主从复制-主库配置

9主从复制-从库配置

问题:

从库配置中的只读是什么意思?

他这个只读不影响主从之间的读写

10主从复制-测试

11分库分表-介绍

12介绍-拆分方式

问题:

1垂直分库和垂直分表的区别?

2那水平分库和水平分表呢?

13MyCat概述-安装

13. 运维-分库分表-MyCat概述-安装_哔哩哔哩_bilibili

14MyCat概述-核心概念

15MyCat入门

问题:

这些.xml放在哪里?

Mycat其实就是中间件

16MyCat入门-测试

17MyCat配置1

问题:

1没有记住?

2什么是分片节点?

18MyCat配置2

问题:

1什么是分片算法?

垂直分库不需要rule

19MyCat分片-垂直分库

20垂直分库-测试

问题:

如何设置全局表?

设置<table>标签里面的type="global"

21MyCat分片-水平分表

22分片规则-范围分片

23分片规则-取模分片

问题:

1上面两种名字及原理?

2上面两种算法都是针对数值的,那字符串数据呢?

24一致性hash算法

25枚举分片

问题:

枚举分片和一致性hash算法有什么区别?

26应用指定算法

27固定hash算法

28字符串hash解析

问题

1一致性hash算法和固定hash算法和字符串hash解析区别?

29按天分片

30按自然月分片

问题:

上图的数量一致是什么意思?

31Mycat管理与监控-原理

问题:

分片分析是什么意思?

32Mycat管理工具

33Mycat监控1

关键:

需要安装zookeeper

33. 运维-分库分表-MyCat监控1_哔哩哔哩_bilibili

34Mycat监控2

35分库分表总结

36读写分离-介绍

问题:

主从复制的原理?

基于mysql的二进制文件binlog实现的

37一主一从准备

38一主一从分离

关键:

想要实现读写分离需要将负载均衡的值(balance)设置为1或者3

39双主从介绍

问题:

双主双从比一主一从好在哪里?

40双主从搭建

问题:

两台主库相互复制是干什么的?

41双主从读写分离

问题:

这个自动切换是什么意思?

就是当writeHost1挂掉之后,会不会自动切换到writeHost2

42读写分离总结

43运维篇总结

【MySQL 运维 + MyCat 分片】从入门到上手:新手也能看懂的核心知识点总结

大家好,最近在学 MySQL 运维和 MyCat 分片的内容,整理了一份 "人话版" 笔记 ------ 把复杂的技术概念拆成大白话,从日志、主从复制到 MyCat 分库分表,全是新手最容易卡壳的点。

一、MySQL 运维篇:先搞懂 "日志"------ 数据库的 "黑匣子"

学 MySQL 运维,第一步得先搞懂日志:它是数据库的 "操作记录",出问题了全靠它查原因。

  1. 错误日志:数据库的 "故障报警本"

作用:记录 MySQL 启动、关闭、运行过程中出现的错误(比如启动失败、连接异常)。

新手场景:如果 MySQL 突然连不上,先去看错误日志 ------ 比如日志里写 "端口 3306 被占用",那就是端口冲突了;写 "权限不足",就是账号密码错了。

  1. 二进制日志(binlog):数据库的 "操作录像机"

作用:记录所有对数据库的 "写操作"(增删改),是主从复制、数据恢复的核心。

通俗理解:你在数据库里执行insert加了条数据,binlog 就会记下来 "几点几分,哪个用户,往哪个表插了什么数据";要是数据库崩了,能通过 binlog 把数据恢复到崩溃前的状态。

新手注意:binlog 默认是关闭的,要手动开启(配置文件里加log_bin=mysql-bin),否则主从复制用不了。

  1. 查询日志:数据库的 "访问记录表"

作用:记录所有发送到 MySQL 的 SQL 语句(不管执行成功还是失败)。

适用场景:想知道 "谁在什么时间执行了什么 SQL",就看查询日志;但它会占很多磁盘空间,生产环境别开(测试环境可以临时开)。

  1. 慢查询日志:数据库的 "性能体检报告"

作用:记录 "执行时间超过指定阈值" 的 SQL(默认是 1 秒),是优化 SQL 性能的关键。

新手场景:如果网站突然变卡,先查慢查询日志 ------ 比如里面有个select * from user where age>20执行了 5 秒,那就是这条 SQL 没加索引,得优化。

二、主从复制:让数据库 "分身",解决 "读写卡" 问题

主从复制是 MySQL 高可用的基础 ------ 简单说就是 "让一个数据库(主库)的数据,自动同步到其他数据库(从库)"。

  1. 主从复制的核心作用

读写分离:主库负责 "写操作"(增删改),从库负责 "读操作"(查数据),解决单库 "读写冲突" 的问题;

数据备份:从库是主库的备份,主库崩了能从从库恢复;

负载均衡:多个从库可以分摊读请求,比如电商网站的 "商品列表查询" 全走从库,主库只处理下单。

  1. 主从复制的原理(新手版三步拆解)

很多教程把主从复制讲得很复杂,其实核心就 3 步:

第一步:主库写 binlog

主库执行写操作后,会把操作记录到自己的 binlog 里;

第二步:从库 "读" 主库的 binlog

从库启动一个 "IO 线程",去主库那里把 binlog 复制到自己的 "中继日志(relay log)" 里;

第三步:从库 "执行" 中继日志

从库再启动一个 "SQL 线程",把中继日志里的操作在自己身上执行一遍 ------ 这样从库的数据就和主库同步了。

  1. 主从复制的配置(新手必看细节)

(1)主库配置:打开 "数据同步开关"

开启 binlog(配置文件加log_bin=mysql-bin);

给从库创建一个 "同步账号"(比如账号repl,密码123456,权限是REPLICATION SLAVE);

重启主库,记录主库的 binlog 文件名和位置(用show master status;查看)。

(2)从库配置:"绑定" 主库,开启同步

配置文件里加read_only=1(从库只读):这是为了防止从库被误写,保证从库数据和主库一致;

执行CHANGE MASTER TO命令,把主库的 IP、同步账号、binlog 文件名 / 位置填进去;

启动从库同步(start slave;),用show slave status\G;查看状态 ------ 如果Slave_IO_Running和Slave_SQL_Running都是Yes,就成功了。

三、MyCat:让 MySQL "变大"------ 分库分表的 "中间件工具"

当数据量超过 1000 万,单库单表会越来越卡,这时候就得用 MyCat 做分库分表------ 把一个大表拆成多个小表,分散到不同数据库里。

  1. MyCat 的核心概念(先搞懂这几个词)

xml 配置文件:MyCat 的 "规则手册",都放在 MyCat 的conf目录下:

schema.xml:定义数据库、表的结构;

rule.xml:定义分库分表的规则;

server.xml:定义用户、权限;

分片节点(dataNode):就是 "拆分后的数据存储位置"------ 比如把user表拆成 2 个分片,每个分片对应一个dataNode(可以理解为 "一个分片 = 一个小数据库");

分片算法:决定 "数据该分到哪个分片" 的规则 ------ 比如按用户 ID 取模(ID 是偶数分到分片 1,奇数分到分片 2)、按时间分片(1 月的数据分到分片 1,2 月分到分片 2)。

  1. 分库分表的两种方式

(1)垂直分库:按 "业务模块" 拆

把不同业务的表放到不同数据库里 ------ 比如电商系统,把 "用户表" 放一个库,"订单表" 放另一个库,"商品表" 放第三个库。

作用:解决 "单库压力大" 的问题,比如订单表数据多,不会影响用户表的查询。

(2)水平分表:把 "大表拆成小表"

把一个大表拆成多个结构一样的小表 ------ 比如把 1 亿条数据的user表,按 ID 取模拆成 10 个小表(user_1到user_10),每个表存 1000 万条数据。

作用:解决 "单表数据太多" 的问题,比如查user表时,不用扫 1 亿条,只扫 1000 万条。

  1. 常见的分片算法(新手必知 3 种)

(1)范围分片:按 "数值区间" 分

比如把 ID 在 1-100 万的分到分片 1,101 万 - 200 万的分到分片 2;

适用场景:数据按顺序增长(比如 ID 自增),但要注意 "后期分片会越来越大"(比如分片 1 存满 100 万后,新数据全部分到分片 2)。

(2)取模分片:按 "余数" 分

比如 ID 对 2 取模,余数 0 分到分片 1,余数 1 分到分片 2;

适用场景:数据分布均匀,不会出现某个分片数据特别多的情况,但扩容时要迁移数据(比如从 2 个分片扩到 3 个,所有数据的分片规则都变了)。

(3)枚举分片:按 "固定值" 分

比如按status字段分:status=1分到分片 1,status=2分到分片 2;

适用场景:字段值是固定枚举(比如状态、地区),但字段值不能太多(否则要建很多分片)。

  1. 特殊分片场景:字符串、时间怎么分?

字符串分片:把字符串转成哈希值,再用 "取模分片"------ 比如用户昵称转成哈希值,对分片数取模;

时间分片:按天 / 月 / 年分 ------ 比如把 2025-01-01 的订单分到分片 1,2025-01-02 的分到分片 2,适合 "按时间查询" 的场景(比如查某天的订单)。

  1. MyCat 的 "全局表":解决 "跨分片查公共数据" 的问题

比如 "地区表"(存全国省份、城市),每个分片都需要用 ------ 如果每个分片都存一份,改数据要改多个分片,很麻烦。

全局表:就是在所有分片都存一份的表,MyCat 会自动同步所有分片的全局表数据 ------ 改一次数据,所有分片都更新,适合存 "不常改的公共数据"。

四、双主双从:比 "一主一从" 更稳的高可用架构

一主一从的问题是 "主库崩了业务就停",双主双从就是 "两个主库互备",解决单点故障问题。

  1. 双主双从的核心:两台主库 "相互复制"

主库 1 和主库 2 互相同步数据(主 1 的 binlog 同步到主 2,主 2 的 binlog 同步到主 1);

平时用主 1 承接写请求,主 2 是备用;主 1 崩了,直接切到主 2,业务无感知;

两个从库分别同步主 1 和主 2 的数据,分摊读请求。

  1. 双主双从的 "自动切换":不用手动改配置

MyCat 支持 "主库自动切换"------ 当主 1 宕机,MyCat 会自动把写请求转到主 2,从库也会自动切换到同步主 2 的数据,全程不用人工操作,这就是 "高可用" 的核心。

五、MyCat 监控:得知道 "分片有没有出问题"

MyCat 的监控需要依赖 ZooKeeper(分布式协调工具),作用是:

看每个分片的 "运行状态"(有没有崩);

看 SQL 的 "执行情况"(有没有慢 SQL);

看数据的 "同步情况"(分片数据有没有不一致)。

最后:新手学习的 "避坑提醒"

日志别乱开:查询日志和慢查询日志,生产环境尽量别开(占磁盘),出问题再临时开;

主从复制先看状态:show slave status\G;里的两个Yes是关键,不是Yes就重新配置;

分片算法别瞎选:按业务场景选 ------ID 自增用范围,均匀分布用取模,固定值用枚举;

双主双从别忘互复制:两台主库一定要互相同步,否则主库崩了数据会丢。

相关推荐
qq_229058012 小时前
Django学习笔记
数据库·sqlite
TAEHENGV2 小时前
目标列表模块 Cordova 与 OpenHarmony 混合开发实战
服务器·数据库
思成不止于此2 小时前
【MySQL 零基础入门】事务精讲(三):隔离级别与实战总结
数据库·笔记·学习·mysql
找不到、了2 小时前
MySQL的FEDERATED存储引擎详解
数据库·mysql
小希smallxi2 小时前
Windows平台一键启动Redis脚本
数据库·windows·redis
写代码的小阿帆2 小时前
MySQL索引原理与性能优化
数据库·mysql·性能优化
小蒜学长2 小时前
python基于Python的医疗机构药品及耗材信息管理系统(代码+数据库+LW)
数据库·spring boot·后端·python
星光一影2 小时前
同城搭子活动组局H5系统源码-伴伴搭子系统源码
vue.js·mysql·php·uniapp
千寻技术帮2 小时前
10363_基于SSM的农机租赁管理系统
mysql·毕业设计·ssm·源码·农机租赁