分类目录归档:云计算

MySQL存储引擎


MySQL存储引擎

1.存储引擎

存储引擎就是存储数据、建立索引、更新、查询数据等技术的实现方式。

1.1 MySQL 体系结构

MySQL体系结构

image-20240829092301203

连接层

主要完成一些类似于连接处理、授权认证、及相关的安全方案。

服务层

主要完成大多数的核心服务功能,如 SQL 接口,并完成缓存的查询,SQL 的分析和优化,是否使用索引,部分内置函数的执行。

引擎层

存储引擎真正的负责了 MySQL 中数据的存储和提取,服务器通过 API 和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。数据库中的索引是在存储引擎层实现的

存储层

主要是将数据 (如...

Read more

MySQL事务


MySQL事务

事务简介

事务是一组操作集合,他是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

图片

图片

图片

图片

注意:

MySQL的事务默认自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐式提交事务。

事务操作

数据准备

drop table if exists account;
create table account(
    id int primary key AUTO_INCREMENT comment 'ID',
    name varchar(10) comment &...

Read more

MySQL高可用架构


MySQL高可用架构

图片

前言

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

一、方案选择

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

图片

MySQL 数据库的主主模式

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

Read more

使用ProxySql实现MySQL的读写分离


ProxySQL简介

1、ProxySQL是一款开源的使用C++编写的MySQL集群代理中间件;

2、用于在MySQL数据库和客户端之间进行负载均衡、查询缓存、故障转移和查询分发;

3、它可以作为中间层插入到应用程序和数据库之间;

4、特点是高效灵活,使用简单,并且性能是所有中间件中比较优秀的。

5、在搭建好mysql的主从复制后,可以利用ProxySQL实现mysql数据库的读写分离;

主要功能

ProxySQL主要支持MySQL的主从集群和组复制集群,其主要功能有以下几个:

1、代理服务:代理后端MySQL服务,进行相关指标的监控

2、负载均衡:后端多节点的访问进行负载均衡

3、高可...

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={,,,,,,}。

2.那MySQL 的内连接...

Read more

什么是分库分表?


1.什么是分库分表?

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

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

图片

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

图片

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

2.1为什么需要分库呢?

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

磁盘存储

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

并发连接支撑

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

Read more

MySQL 锁


1 锁的概述

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

image-20240905151233838

查看锁

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from
performance_schema.data_locks;

要其他手动开启的...

Read more

Ubuntu 安装 NFS


Ubuntu 安装 NFS 共享目录详细步骤

NFS (Network File System) 是一种允许不同主机之间通过网络共享文件系统的协议。以下是详细的在 Ubuntu 上安装和配置 NFS 共享目录的方法,并附带示例。

1. 安装 NFS 服务

首先,在你的 Ubuntu 服务器上安装 NFS 服务器软件包。

sudo apt update
sudo apt install -y nfs-kernel-server

2. 配置 NFS 服务

创建一个目录作为共享目录。例如,我们使用 /mnt/nfs_share 作为共享目录。

sudo mkdir -p /mnt/nfs_...

Read more

使用Nginx+uWSGI部署Django项目


使用Nginx+uWSGI部署Django项目

Django是一个开源的Web应用框架,使用Python语言编写,主要用于搭建Web项目。本教程介绍如何在Linux服务器中使用Nginx+uWSGI部署Django项目。

步骤一:安装或核对Python版本

which python3 
ll /usr/bin/python*

回显信息类似如下所示。

user@localhost:~$ which python3 
/usr/bin/python3
user@localhost:~$ ll /usr/bin/python*
-rwxr-xr-x 1 root root 366203...

Read more

Ubuntu22.04部署-LNMP


步骤一:关闭防火墙

1.运行以下命令,检查防火墙当前状态。

sudo ufw status
  • 如果防火墙状态为Status: inactive,则表示防火墙为关闭状态。
  • 如果防火墙状态为Status: active,则表示防火墙为开启状态。

2.可选:关闭防火墙。

如果您的防火墙为开启状态,需要运行以下命令,关闭防火墙并关闭开机自启动防火墙。

sudo ufw disable

说明

如果您想重新开启防火墙并开启开机自启动防火墙,请运行sudo ufw enable命令。

步骤二:安装Nginx

1.运行以下命令,更新Ubuntu系统内的软件包。

sudo apt update
...

Read more