【MySQL】第一章 MySQL 5.7的安装与卸载

系列文章目录

《【MySQL】第一章 MySQL 5.7的安装与卸载》
《【MySQL】第二章 初识数据库》
《【MySQL】第三章 库的操作》
《【MySQL】第四章 表的操作》
《【MySQL】第五章 数据类型》



Ubuntu-20.04

卸载MySQL 5.7

停止服务进程

sudo systemctl stop mariadb
sudo systemctl stop mysql

查找已安装软件包

dpkg -l | grep mariadb 	# 查找与 mariadb 相关的软件包
dpkg -l | grep mysql		# 查找与 mysql 相关的软件包

拓展:命令解析

  • dpkg:全称“Debian Packager”,它是一个专门为“Debian”系统开发的包管理工具。
  • dpkg -l:列出系统中安装的所有软件包。
  • | grep mariadb:筛选出包含关键字 mariadb 的软件包信息。
  • | grep mysql:筛选出包含关键字 mysql 的软件包信息。

拓展:卸载 MySQL 为何涉及到 MariaDB ?

MySQL 和 MariaDB 是关系数据库管理系统,MariaDB 是 MySQL 的一个分支(fork)。

两者有高度的兼容性,因此可能在以下情况下导致两者关联:

  1. 库和工具的共享:
    1. MariaDB 和 MySQL 使用了许多相同的库(如 libmysqlclient)。
    2. 卸载 MySQL 的过程中会检查依赖关系,当发现某些库或工具也被 MariaDB 使用时会导致卸载失败。
  2. 包管理的冲突或替代关系:
    1. 在一些发行版中,MariaDB 包被标记为替代 MySQL 的默认实现
    2. 例如,安装 mysql-server 时,系统可能实际安装的是 mariadb-server
    3. 因此,卸载 MySQL 时可能会影响与之相关的 MariaDB 包。
  3. 配置文件和服务的重叠:
    1. 两者可能会使用相同的配置目录(如 /etc/mysql)。
    2. 卸载 MySQL 时可能会尝试清理这些目录,导致与 MariaDB 的交集。

删除相关软件包

dpkg -l | grep mariadb | awk '{print $2}' | sudo xargs dpkg -P # 删除 mariadb 相关的软件包
dpkg -l | grep mysql | awk '{print $2}' | sudo xargs dpkg -P # 删除 mysql 相关的软件包

拓展:命令解析

  • awk '{print $2}'
    • awk:一个根据指定规则提取和处理文本内容的处理工具。
    • '{print $2}'**:**截取输出信息的第二列,因为第二列是软件包名称。
  • sudo xargs dpkg -P
    • xargs:读取标准输入的每一行,将其作为参数传递给后面的命令。
    • dpkg -P-P 参数,用于完全删除指定的软件包及其所有配置文件(purge)。
    • sudo:卸载系统软件包通常需要管理员权限。

命令执行过程中有弹窗提示是否【删除数据目录】,如果没有重要的数据的话可以选择【Yes】。

有时候可以会因为依赖问题导致一些软件包无法被删除,举个例子,像下面的代码块,发现还有残留。

LJH@iZ7xvhuhaslv4h5dm1d1svZ:~$ dpkg -l | grep mysql # 查找与 mysql 相关的软件包
pi  libmysqlclient21:amd64                 8.0.28-0ubuntu0.20.04.3           amd64        MySQL database client library
pi  mysql-common                           5.8+1.0.5ubuntu2                  all          MySQL database common files, e.g. /etc/mysql/my.cnf

** 这时候可以使用 apt-getautoremove 命令来手动强制清除依赖包。**

# sudo apt-get autoremove --purge <软件包名称>
sudo apt-get autoremove --purge mysql-common libmysqlclient21

删除相关文件

  1. 删除数据文件
sudo find /var -name '*mysql*' | sudo xargs rm  -rf

拓展:命令解析

  • MySQL 默认将 /var 目录作为库表数据存储目录。
  • sudo find /var -name '*mysql*':这句命令是使用 find 工具搜索 /var 目录下所有名字包含 "mysql" 的文件并罗列出来。
  • sudo xargs rm -rf:将所有名字含 mysql 的文件逐一删除。
  1. 删除配置文件
# 1. 查看配置文件是否存在
ls /etc/my.cnf
ls /etc/mysql

# 2. 使用 rm 将找到的配置文件删除

安装

下载 MySQL 的 APT 源

wget http://repo.mysql.com/mysql-apt-config_0.8.12-1_all.deb

拓展:命令解析

  1. wget
    1. wget 是一个非交互式命令行工具,用于从网络上下载文件。
    2. 它支持 HTTP、HTTPS 和 FTP 等协议。
    3. 在此处,wget 被用来从 MySQL 的官方镜像站点下载一个 .deb 文件。
  2. http://repo.mysql.com/mysql-apt-config_0.8.12-1_all.deb
    这是文件的下载链接,包含以下信息:
    1. 协议http:// 表示使用 HTTP 协议。
    2. 主机名repo.mysql.com 是 MySQL 官方的包管理仓库。
    3. 路径/mysql-apt-config_0.8.12-1_all.deb 是指定文件的路径。
    4. 文件名mysql-apt-config_0.8.12-1_all.deb 是下载的文件名。
  3. mysql-apt-config_0.8.12-1_all.deb
    1. 文件名称mysql-apt-config_0.8.12-1_all.deb
    2. 文件类型.deb 是 Debian 系列 Linux 发行版的安装包格式(如 Ubuntu)。
    3. 用途mysql-apt-config 是一个 MySQL 官方提供的配置包,这个文件会配置系统中的 MySQL APT 源,从而让用户可以通过 apt-get 安装和更新 MySQL 软件。
  4. 命令作用
    1. 从 MySQL 官方仓库下载 mysql-apt-config 配置文件。
    2. 准备为系统配置 MySQL 的 APT 软件源。

配置 MySQL 的 APT 源

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

选择【ubuntu bionic】

选择【MySQL Server & Cluster (Currently selected: mysql-8.0)】

选择【mysql-5.7】

选择【OK】

更新软件包索引

sudo apt-get update

拓展:为什么要更新包索引?

  1. .deb包安装后发生了什么?
    安装 mysql-apt-config_0.8.12-1_all.deb 包时,dpkg 的主要作用是:
    1. 解压 .deb 文件,将相关文件(比如 APT 仓库的配置文件)拷贝到系统指定位置。
    2. 配置文件通常会被写入 /etc/apt/sources.list.d/,比如 mysql.list 文件,其中包含 MySQL 的 APT 仓库地址及其下载方法。
    3. .deb 包只是在系统中注册了新的仓库地址,本身不会直接触发系统下载新的包索引。
  2. 为什么需要更新包索引?
    APT 使用的包索引是本地的一个缓存数据库,记录了所有可用的软件包信息,包括:
    • 每个包的名称、版本号、依赖关系。
    • 它们在远程仓库中的位置(URL)。

安装 .deb 本地的包索引数据库还没有包含来自这个新仓库的信息。

运行 sudo apt update,这会:

  1. 读取所有配置的仓库地址(包括新添加的 MySQL 仓库)。
  2. 下载每个仓库的最新包索引,更新本地的包信息。

更细过程中如果遇到如下报错是因为缺少用于验证 MySQL 仓库的 GPG 公钥。

$ sudo apt-get update
Hit:1 http://mirrors.ustc.edu.cn/ubuntu focal InRelease
Hit:2 http://mirrors.ustc.edu.cn/ubuntu focal-updates InRelease
Hit:3 http://mirrors.ustc.edu.cn/ubuntu focal-backports InRelease
Hit:4 http://mirrors.ustc.edu.cn/ubuntu focal-security InRelease
Get:5 http://repo.mysql.com/apt/ubuntu bionic InRelease [20.0 kB]
Err:5 http://repo.mysql.com/apt/ubuntu bionic InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7B3B788A8D3785C
Reading package lists... Done
W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7B3B788A8D3785C
E: The repository 'http://repo.mysql.com/apt/ubuntu bionic InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

要解决这个问题,可以按照以下步骤添加缺失的公钥。

wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
sudo apt-key add RPM-GPG-KEY-mysql-2023

然后重新更新软件包列表。

sudo apt-get update

查看 MySQL 可用版本

sudo apt-cache policy mysql-server

安装 MySQL 服务器和客户端

sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7* libmysqlclient-dev=5.7*

安装过程中会提示需要消耗多少存储空间,输入【Y】确认即可

MySQL 会自动创建 root 用户,然后让你输入 root 用户的密码,输入即可。

配置

MySQL 的相关配置文件都在 /etc/mysql 目录下存放,其中

  • /etc/mysql/conf.d/mysql.cnf 是 MySQL 客户端对应的配置文件。
  • /etc/mysql/mysql.conf.d/mysqld.cnf 是 MySQL 服务端对应的配置文件。

本次编辑主要是设置一些诸如编码集、校验集、端口、存储引擎等常用配置,可按需求添加。

【客户端】

sudo vim /etc/mysql/conf.d/mysql.cnf # 编辑
# 粘贴以下内容
[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

【服务端】

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 编辑
# 粘贴以下内容
[mysqld]
port                    = 3306
character-set-server    = utf8
default-storage-engine  = innodb
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
# By default we only accept connections from localhost
bind-address    = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

Centos-7.9

卸载

停止服务进程

sudo systemctl stop mariadb
sudo systemctl stop mysql

删除相关软件包

rpm -qa | grep mysql | sudo xargs yum -y remove

拓展:命令解析

  1. rpm -qa
    1. rpm 全称“Red Hat Package Manager”,是 “Red Hat” 系统的软件包管理工具。
    2. -q 参数:表示查询模式(query)。
    3. -a 参数:表示查询所有已安装的包。
  2. grep mysql
    1. rpm -qa 的输出中筛选出包含关键字 "mysql" 的行。
  3. sudo xargs yum -y remove
    1. xargs 的功能:
      1. 从标准输入读取数据(即从 grep 的结果中获取包名)。
      2. 将这些数据作为参数传递给后面的命令。
    2. yum -y remove 的功能:
      1. 使用 yum 命令卸载指定的 RPM 包。
      2. -y 表示自动回答 “yes”,无需用户交互。

执行完毕之后要再执行一次 rpm -qa | grep mysql,确保没有软件包残留。

删除相关文件

  1. 配置文件
[LJH@iZ7xvhuhaslv4h5dm1d1svZ ~]$ ls /etc/mysql
ls: cannot access /etc/mysql: No such file or directory
[LJH@iZ7xvhuhaslv4h5dm1d1svZ ~]$ ls /etc/my.cnf
ls: cannot access /etc/my.cnf: No such file or directory
  1. 数据文件
sudo rm -rf /var/lib/mysql

安装

下载 MySQL 的 yum 源

wget https://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm

拓展:命令解析

  1. wget
    1. wget 是一个非交互式命令行工具,用于从网络上下载文件。
    2. 它支持 HTTP、HTTPS 和 FTP 等协议。
    3. 在此处,wget 被用来从 MySQL 的官方镜像站点下载一个 .deb 文件。
  2. mysql57-community-release-el7-9.noarch.rpm
    MySQL 官方提供的一个仓库配置包的下载链接:
    1. mysql57-community-release:表示这是为 MySQL 5.7 社区版提供的仓库配置包。
    2. el7:表示该包适用于基于 CentOS/RHEL 7 的 Linux 系统。
    3. noarch:表示这个 RPM 包不依赖于特定的硬件架构(例如 x86 或 ARM),可以在任何架构上使用。
    4. .rpm:RPM 包文件的扩展名,表示这是一个软件包管理文件,常用于 Red Hat 系列系统(如 CentOS 和 Fedora)。
  3. 命令作用
    1. 从 MySQL 官方网站下载一个 RPM 包。
    2. RPM 包本身并不是 MySQL 本身,而是用于配置 MySQL 的 YUM 源。
    3. 下载完成后,安装这个 RPM 包会自动在系统中添加 MySQL 5.7 的软件仓库信息。
    4. 添加仓库后可以使用 yum installdnf install 命令安装 MySQL 相关的软件包。

安装 MySQL 的 yum 源

sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm

【warning】表示缺少 RPM 包的数字签名。

解决问题的方法是执行以下命令导入 MySQL 的官方 GPG 密钥,然后重新安装。

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 # 导入公钥
sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm # 重新安装

安装 MySQL

sudo yum install -y mysql-community-server

验证是否安装成功

  1. 配置文件
ls /etc/my*
# 输出以下信息说明配置文件存在
/etc/my.cnf

/etc/my.cnf.d:
  1. MySQL 服务端
which mysqld
# 输出以下信息说明 MySQL 服务端存在
/usr/sbin/mysqld
  1. 客户端
which mysql
# 输出以下信息说明 MySQL 客户端存在
/usr/sbin/mysql

MySQL 服务端的启动、关闭

  1. 启动:sudo systemctl start mysqld
  2. 重启:sudo systemctl restart mysqld
  3. 关闭:sudo systemctl stop mysqld
  4. 状态查看:sudo systemctl status mysqld

配置免密码登录 MySQL

在 Centos-7.9 安装 MySQL-5.7 时,系统会自动为 root 用户自动生成一个临时密码。

登录 MySQL 时,我们要输入这个临时密码,但是比较尴尬的是我们有不知道这个临时密码是什么。

为了解决这个尴尬的问题,接下来修改配置文件,进行免密码处理。

sudo vim /etc/my.cnf # 编辑 MySQL 的配置文件

在图示位置加上【skip-grant-tables】

sudo systemctl restart mysqld # 重启 MySQL 服务端
mysql -u root -p # 登录 MySQL 客户端

配置

编辑 MySQL 的配置文件。

sudo vim /etc/my.cnf

按照图示新增内容即可。

保存退出后,重启 MySQL 服务端使配置生效。

sudo systemctl restart mysqld # 重启 MySQL
<think>好的,用户想了解Kubernetes Event-Driven Autoscaling (KEDA)的概述和用法。我需要先回忆KEDA的基本概念,确保信息准确。首先,KEDA是一个基于事件驱动的自动扩缩容工具,HPA不同,它支持多种事件源,比如消息队列、监控系统等。需要说明它如何Kubernetes集成,特别是通过ScaledObject和ScaledJob来管理扩缩容。 接下来,用户可能需要具体的使用步骤,包括安装和配置。要提到通过Helm安装,然后给出示例,比如使用Azure Service Bus队列触发自动扩缩容。需要确保示例中的YAML语法正确,并解释每个部分的作用,比如Triggers和pollingInterval。 另外,用户可能关心KEDA的优势,比如HPA的对比,支持的事件源类型,以及适用的场景,如Serverless应用、批处理任务等。还要注意引用用户提供的参考信息,虽然内容看起来不相关,但可能在总结测试代码时提到KEDA的应用场景,所以需要自然添加引用标识。 最后生成相关问题,要覆盖核心概念、组件、安装步骤、适用场景和监控机制,确保问题对用户有进一步帮助。需要检查是否所有数学公式和独立公式都正确使用$和$$格式,但在这个回答中可能涉及较少,主要集中在代码块和术语上。保持回答结构清晰,分点说明,便于用户理解。</think>### Kubernetes Event-Driven Autoscaling (KEDA) 概述 Kubernetes Event-Driven Autoscaling (KEDA) 是一个开源的Kubernetes扩展组件,用于根据事件源的指标动态调整应用实例数量(扩缩容)。它通过监听外部事件系统(如消息队列、数据库、监控系统等)的指标,将事件驱动的架构Kubernetes的自动扩缩能力结合[^1]。 #### 核心特性 1. **事件驱动**:支持多种事件源(如RabbitMQ、Apache Kafka、AWS SQS等),根据事件队列长度或延迟触发扩缩。 2. **无缝集成HPA**:基于Kubernetes原生Horizontal Pod Autoscaler (HPA) 实现,扩展其能力以支持自定义指标。 3. **零副本到多副本**:当无事件时,可以将副本数缩容到0,节省资源;事件到达时快速扩容。 4. **轻量级**:通过自定义资源定义(CRD)配置,无需复杂架构改动。 --- ### 使用方式 #### 1. 安装KEDA 通过Helm快速安装: ```bash helm repo add kedacore https://kedacore.github.io/charts helm install keda kedacore/keda --namespace keda --create-namespace ``` #### 2. 定义ScaledObject 通过`ScaledObject`资源关联Deployment事件源。以Azure Service Bus队列为例: ```yaml apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: servicebus-scaledobject spec: scaleTargetRef: name: my-consumer-deployment # 目标Deployment名称 triggers: - type: azure-servicebus metadata: queueName: "my-queue" connectionFromEnv: "SERVICEBUS_CONNECTION_STRING" # 从环境变量获取连接字符串 messageCount: "5" # 每个Pod处理5条消息时触发扩容 authenticationRef: name: servicebus-trigger-auth # 引用认证信息 ``` #### 3. 配置认证 使用`TriggerAuthentication`存储敏感信息: ```yaml apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: servicebus-trigger-auth spec: secretTargetRef: - parameter: connection name: servicebus-secret # Kubernetes Secret名称 key: connectionString ``` --- ### 核心组件 1. **Metrics Adapter**:将外部事件系统的指标转换为Kubernetes可识别的自定义指标。 2. **ScaledObject Controller**:监听事件源状态,触发HPA调整副本数。 3. **Scalers**:针对不同事件源的插件(如Redis、Prometheus等)。 --- ### 适用场景 - **Serverless应用**:处理突发流量时快速扩容,空闲时缩容至0[^1]。 - **批处理任务**:根据任务队列长度自动扩展工作节点。 - **混合云环境**:跨云事件源(如AWS SQSAzure Functions)的统一扩缩容。 --- ### 性能优化建议 - **调整扩缩阈值**:通过`messageCount`或`activationThreshold`避免频繁扩缩。 - **设置冷却时间**:利用`cooldownPeriod`防止抖动。 - **监控指标**:集成Prometheus监控扩缩延迟和资源利用率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值