> 技术文档 > Linux云计算SRE-第十周_sre基本知识

Linux云计算SRE-第十周_sre基本知识


1. 总结关系型数据库相关概念,关系,行,列,主键,唯一键。

关系型数据库(Relational Database)是一种基于关系模型的数据库,它由多个表(table)组成,每个表代表一个实体(entity),如顾客、订单等。下面是关系型数据库中的一些关键概念:

1、关系 (Relation)
在关系型数据库中,\"关系\"通常指的是表(Table)。一个关系是一个由行和列组成的二维表格,每一行代表一个记录(record),每一列代表该实体的一个属性(attribute)。
2、行 (Row)
也称为元组(Tuple),是关系中的一个实例或一条记录。每一行包含了一个实体的完整信息集合。例如,在一个学生表中,每一行可以表示一个学生的全部信息,比如姓名、年龄、年级等。
3、列 (Column)
列定义了表中存储的数据类型,以及每个实体的特定属性。列也有自己的名称,这有助于识别它们所代表的信息。例如,在学生表中,可能有“学号”、“姓名”、“性别”等列。
4、主键 (Primary Key)
主键是用于唯一标识表中每一行记录的一列或多列组合。一个表只能有一个主键,并且主键不允许有NULL值。主键确保了每条记录的唯一性,便于快速查找和排序。
5、唯一键 (Unique Key)
唯一键与主键类似,它也用来保证一列或多列的值的唯一性。但是,一个表可以有多个唯一键,并且唯一键允许存在一个NULL值。这意味着如果某列被设为唯一键,那么该列中的所有非NULL值都必须是唯一的。
除了上述概念,关系型数据库还有其他重要的元素,如外键(Foreign Key),它用于建立和强化两个表之间的链接;索引(Index),它提高了查询速度;视图(View),它是根据SQL语句的结果集创建的虚拟表;触发器(Trigger),它是在满足某些条件时自动执行的一组动作;存储过程(Stored Procedure),它是一组为了完成特定功能的SQL语句集合,以一个名称存储以便之后调用。
关系型数据库设计时应遵循一定的规范化原则,以避免数据冗余和不一致。这些原则包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等,随着范式的提升,数据库的设计更加复杂,但同时也更有效率和灵活性。

2. 总结关联类型,1对1,1对多,多对多关系。可以自行设计表进行解释。

1. 1对1 (One-to-One) 关联

1对1关联意味着一个表中的每一行最多与另一个表中的一行相关联,反之亦然。这种关系通常用于将信息拆分到多个表中,以提高性能或安全性。

表结构示例:
用户 (users)

用户ID (user_id, PK) 用户名 (username) 邮箱 (email) 1 小明 ming@domain.com 2 小红 hong@domain.com

用户详情 (user_details)

详情ID (detail_id, PK, FK) 地址 (address) 电话号码 (phone_number) 1 北京市朝阳区 138-0000-1234 2 上海市浦东新区 138-0000-5678

用户ID是用户表的主键(Primary Key, PK),同时也是用户详情表的外键(Foreign Key, FK)。每个用户只有一条详细信息记录,且每个详细信息记录只能属于一个用户。

2. 1对多 (One-to-Many) 关联

1对多关联是最常见的一种关系,表示一个表中的某一行可以与另一个表中的多行相关联,但反过来不行。例如,一个部门可以有多个员工,但每个员工只能属于一个部门。

表结构示例:
部门 (departments)

部门ID (dept_id, PK) 部门名称 (dept_name) 1 技术部 2 市场部

员工 (employees)

员工ID (emp_id, PK) 姓名 (name) 部门ID (dept_id, FK) 1 张三 1 2 李四 1 3 王五 2

部门ID是部门表的主键,并且是员工表的外键。每个部门可以有多个员工,但是每个员工只能属于一个部门。

3. 多对多 (Many-to-Many) 关联

多对多关联表示两个表中的行可以相互之间有多条关联。为了实现这种关系,我们通常需要创建一个中间表(也称为连接表或桥梁表),该表包含两个表的主键作为外键。

表结构示例:
学生 (students)

学生ID (student_id, PK) 姓名 (name) 1 小华 2 小强

课程 (courses)

课程ID (course_id, PK) 课程名称 (title) 101 数学 102 科学

学生课程 (student_courses) (连接表)

学生ID (student_id, FK) 课程ID (course_id, FK) 1 101 1 102 2 101

3. 总结Mysql多种安装方式,及安全加固,并总结mysql配置文件。

在Linux系统上安装MySQL,可以选择以下几种常见的方式:

通过包管理器安装:
大多数Linux发行版(如Ubuntu、Debian、CentOS等)都提供了MySQL的包,可以直接使用系统的包管理器(如apt、yum等)进行安装。这种方式最为简单,且会自动处理依赖关系。
通过二进制包安装:
可以从MySQL官方网站下载适用于Linux系统的二进制包(如tar.gz格式)。下载后,解压到指定目录,并配置环境变量和启动服务。这种方式需要手动配置,但灵活性较高。
通过源码编译安装:
从MySQL官方网站下载源码包,然后在Linux系统上编译安装。这种方式需要用户具备一定的编译和配置能力,但可以获得最新版本的MySQL,并可以根据需要进行自定义配置。
通过Docker容器安装:
如果系统上已经安装了Docker,可以通过Docker Hub查找并下载MySQL的Docker镜像,然后创建并运行MySQL容器。这种方式可以实现MySQL的隔离部署和快速迁移。

#rocky系统上mysql二进制安装 #1、编写shel脚本,实现rocky系统上的mysql二进制包安装 vim install_mysql.sh #!/bin/bash# 脚本配置SRC_DIR=$(pwd)MYSQL_PACKAGE=\'mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz\'MYSQL_VERSION=$(echo $MYSQL_PACKAGE | sed -nr \'s/^(mysql-[0-9]+\\.[0-9]+)\\..*/\\1/p\')DATA_DIR=\'/data/mysql\'# 颜色输出函数color_output() { local color=$1 shift echo -e \"\\033[01;${color}m$*\\033[0m\"}# 检查是否为root用户check_root() { if [ \"$EUID\" -ne 0 ]; then color_output 31 \"当前用户不是root,安装失败\" exit 1 fi}# 检查必要的文件和环境check_environment() { if [ ! -f \"$SRC_DIR/$MYSQL_PACKAGE\" ]; then color_output 31 \"缺少$MYSQL_PACKAGE文件,请将相关软件放在$SRC_DIR目录下\" exit 1 elif [ -d \"/usr/local/mysql\" ]; then color_output 31 \"数据库已存在,安装失败\" exit 1 fi}# 安装依赖包install_dependencies() { yum -y -q install libaio numactl-libs ncurses-compat-libs}# 创建mysql用户create_mysql_user() { id mysql &> /dev/null || { useradd -r -s /sbin/nologin mysql; color_output 32 \"创建mysql用户\"; }}# 解压并设置MySQLextract_and_setup_mysql() { tar xf \"$SRC_DIR/$MYSQL_PACKAGE\" -C /usr/local/ ln -s \"/usr/local/$MYSQL_VERSION\" /usr/local/mysql chown -R root:root /usr/local/mysql}# 设置环境变量set_environment_variables() { echo \'export PATH=/usr/local/mysql-8.0.28-linux-glibc2.12-x86_64/bin/:$PATH\' > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh ln -s /usr/loc