分类目录归档:数据库

MySQL高可用架构


MySQL高可用架构

图片

前言

对于 MySQL 数据库作为各个业务系统的存储介质,在系统中承担着非常重要的职责,如果数据库崩了,那么对于读和写数据库的操作都会受到影响。如果不能迅速恢复,对业务的影响是非常大的。这次我们来学习MySQL 双主 + Keepalived 的高可用落地和踩坑之路。

一、方案选择

对于 MySQL 的高可用,主要分为两步,配置 MySQL 主主模式和 keepalived 软件。拓扑图如下所示:

图片

MySQL 数据库的主主模式

两个数据库分别部署在两台服务器上,相互同步数据,但是只有一个提供给外部访问,当一个宕机后,另外一个可以继续提供服务,在没有 keepal...

Read more

MySQL的读写分离


MySQL的读写分离

MySQL读写分离是一种数据库架构优化方案,核心思想是将数据库的写操作(INSERT/UPDATE/DELETE)读操作(SELECT) 分配到不同的数据库实例上处理,以提高系统性能和稳定性。

一、为什么需要读写分离?

在多数业务场景中,读操作的频率远高于写操作(例如电商商品浏览、新闻查看等)。如果读写操作都依赖单一数据库,会导致:

  • 写操作(如订单提交)占用数据库资源,影响读操作响应速度;
  • 单库负载过高,难以应对高并发请求;
  • 单点故障风险高,一旦数据库宕机,整个系统不可用。

读写分离通过"主库处理写,从库处理读"的方式,解决上述问题:

  • 分担主库压力,提...

Read more

MySQL六十六问


MySQL六十六问

1.什么是内连接、外连接、交叉连接、笛卡尔积呢?

  • 内连接(inner join):取得两张表中满足存在连接匹配关系的记录。
  • 外连接(outer join):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足匹配关系的记录。
  • 交叉连接(cross join):显示两张表所有记录一一对应,没有匹配关系进行筛选,它是笛卡尔积在SQL中的实现,如果A表有m行,B表有n行,那么A和B交叉连接的结果就有m*n行。
  • 笛卡尔积:是数学中的一个概念,例如集合A={a,b},集合B={1,2,3},那么A✖️B={<a,o>,<a,1>...

Read more

什么是分库分表?


1.什么是分库分表?

简单的说就是,通过某种特定的条件,将我们存放在共一个数据库中的数据分散存放到多个数据库(主机)上,以达到分散单台设备负载的效果。

分库:就是一个数据库分成多个数据库,部署到不同机器。

图片

分表:就是一个数据库表分成多个表。

图片

2.为什么需要分库分表?

2.1为什么需要分库呢?

如果业务量剧增,数据库可能会出现性能瓶颈,这时候我们就需要考虑拆分数据库。从这几方面来看:

磁盘存储

  • 业务量剧增,MySQL单机磁盘容量会撑爆,拆成多个数据库,磁盘使用率大大降低。

并发连接支撑

  • 我们知道数据库连接是有限的。在高并发的场景下,大量请求访问数据库,MySQL单机是扛不住的...

Read more

MySQL 锁


一、锁的核心作用:解决并发冲突

锁是计算机协调多个进程或线程并发访问某一资源的机制。

在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

MySQL 的锁机制是保障数据一致性和并发性能的核心工具。它通过不同粒度、不同模式的锁,协调多个事务对数据的访问,避免脏读、幻读、丢失更新等问题。

数据库是多用户共享的资源,当多个事务(用户操作)同时访问同一数据时,可能引发:

    ...

Read more

MySQL函数


MySQL函数,是一种控制流程函数,属于数据库用语言。

MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。

一、数学函数

1.1、函数概述

MySQL函数是MySQL数据库提供的内部函数。这些内部函数可以帮助用户更加方便的处理表中的数据。

1.2、数学函数概述

数学函数是MySQL中常用的一类函数。主要用于处理数字,包括整型、浮点数等。

1.3、常用数学函数

1.3.1、abs()

abs(X):返回X的绝对值

mysql> select abs(-32...

Read more

MySQL二进制安装脚本


MySQL二进制安装脚本

安装版本:MySQL8.0.20

#!/bin/bash

# 设置安装版本
MYSQL_VERSION=mysql-8.0.20-linux-glibc2.12-x86_64

# 设置下载地址
DOWNLOAD_URL=https://downloads.mysql.com/archives/get/p/23/file
# DOWNLOAD_URL=http://192.168.57.200/Software

# 设置MySQL的root密码
MYSQL_PASSWORD=root123

# 设置安装路径
MYSQL_PATH=/usr/local/...

Read more

SQL练习题(二)


多表查询练习

练习题:

创建两张,一个是商品表 products,另一个是订单表 orders。请按照以下要求进行操作:

1.创建商品表(products)和订单表(orders),其中商品表包含字段:id(自动增长主键)、name(商品名称)、price(商品价格);

2.订单表包含字段:id(自动增长主键)、product_id(关联商品表的商品ID)、quantity(商品数量)、total_price(订单总价)。

3.将订单表中的 product_id 与商品表的 id 建立外键关联。

参考答案:

创建商品表和订单表:

-- 创建商品表
CREATE TABLE product...

Read more

SQL练习题(一)


SQL基础练习题

  1. 创建一个名为 “products” 的表,包含 id(自增主键)、name、price 和 quantity 字段。
  2. 插入一条 id 为 1,name 为 “Apple”,price 为 2.5,quantity 为 10 的记录到 “products” 表中。
  3. 查询 “products” 表中所有的记录。
  4. 更新 id 为 1 的记录,将 price 改为 2.75。
  5. 删除 id 为 1 的记录。
  6. 插入三条新的产品记录,要求至少包含两个不同的产品名称,并确保至少有一个产品的价格小于 10,至少一个以 “A” 开头的产品。
  7. 查询 “products” 表中所有价格大于等...

Read more

MySQL日志


MySQL日志完全指南:从原理到实战优化

前言

在MySQL数据库的日常运维中,日志是排查问题、优化性能、保障数据安全的"核心利器"。无论是服务启动失败、SQL执行缓慢,还是主从同步异常,几乎所有问题都能通过日志找到线索。本文将系统讲解MySQL各类日志的作用、配置方法、实战操作及优化策略,帮助运维人员和开发人员掌握日志管理的核心技能。

一、MySQL日志体系概述

MySQL的日志体系可分为服务器层日志(适用于所有存储引擎)和存储引擎层日志(如InnoDB特有),不同日志承担不同职责:

日志类型 所属层级 核心作用 适用场景
错误日志(Error Log) 服务器层 记录服...

Read more