数据库管理与高可用-MySQL数据库初体验
目录
#1.1数据库简介
1.1.1使用数据库的必要性
1.1.2数据库的基本概念
1.1.3数据库发展史
1.1.4关系数据库的基本概念
#2.1MySQL服务基础
2.1.1MySQL的二进制安装
1.1数据库简介
1.1.1使用数据库的必要性
数据库作为数据管理的核心工具,在各类场景中发挥着不可替代的作用。
数据库具有以下特点:
结构化存储,提升数据组织效率
保证数据完整性与一致性
支持高效查询与检索
1.1.2数据库的基本概念
1.数据
数据是对客观事物的符号表示,是信息的载体和表现形式,可被记录、存储、处理和传输。
2.数据库和数据库表
数据库(Database)是按照特定规则组织、存储和管理数据的电子仓库,本质是数据结构化存储与高效访问的工具。
数据库表(Table) 是数据库中数据存储的基本单元,类似 Excel 表格,但结构更严格、功能更强大。
3.数据库管理系统和数据库系统
数据库管理系统(Database Management System,DBMS) 是一种用于管理数据库的软件系统,它位于用户与操作系统之间,负责对数据库进行统一的管理和控制,是数据库系统的核心组成部分。
数据库管理是指对数据库系统的全生命周期进行规划、设计、维护和优化的过程,旨在确保数据库高效、安全、可靠地支持业务需求。
1.1.3数据库的发展史
1.数据库系统的发展史
(1)初级阶段--第一代数据库
第一代数据库主要指20 世纪 60 年代末至 70 年代中期出现的数据库系统,是数据库技术的奠基阶段,它们是层次模型和网状模型,为统一管理和共享数据提供了有力的支撑。
(2)中级阶段--第二代数据库
第二代数据库指20 世纪 70 年代中期至 90 年代以关系模型为核心的数据库系统,是数据库发展史上的革命性阶段。其诞生源于对第一代数据库(层次 / 网状模型),关系型数据库在 80 年代进入商用成熟期,成为企业级数据管理的主流。
(3)高级阶段--第三代数据库
第三代数据库是20 世纪 90 年代末至今,为应对互联网、大数据、物联网等新兴场景挑战而发展的数据库技术体系。其核心目标是突破第二代数据库(关系型数据库)在非结构化数据处理、高并发扩展、灵活性等方面的局限。
2.经典数据模型
(1)网状模型
网状模型是数据库发展史上的一种重要数据模型,诞生于 20 世纪 60 年代末,由数据库任务组(DBTG)提出,是层次模型的扩展。它采用图结构(有向图)来表示实体及实体间的联系,允许实体间存在多对多(M:N)的复杂关系,突破了层次模型中 “只能有一个父节点” 的限制,更贴近现实世界中事物的复杂关联。
(2)层次模型
层次模型是数据库发展史上最早的数据模型之一,诞生于 20 世纪 60 年代,由 IBM 的IMS(Information Management System)数据库系统率先实现。它以树状结构(有向树)来组织数据,体现实体间的一对多(1:N)关系,是一种结构化数据模型,核心思想是通过 “层级” 描述现实世界的简单从属关系。
(3)关系模型
关系模型是现代数据库的核心理论基础,它以数学中的关系理论为基础,将数据组织为二维表格(关系表) 的形式,通过 “表 - 行 - 列” 结构描述实体及实体间的联系,彻底改变了数据库的设计和操作方式,是当前主流数据库(如 MySQL、Oracle、SQL Server)的底层模型。
3.当今主流数据库介绍
(1)关系数据库
关系数据库是基于关系模型构建的数据库系统,它将数据组织成二维表格(关系表)的形式,通过表与表之间的关联关系来表达和处理数据。
SQL Server简介
SQL Server 是由 微软(Microsoft) 开发的 关系型数据库管理系统(RDBMS),基于 关系模型 构建,支持结构化查询语言(SQL),主要用于企业级数据管理、业务系统开发和数据分析。它集成了数据存储、查询、分析、集成和报告等功能,是微软生态体系的核心组件之一。
Oracle简介
Oracle(甲骨文) 是全球领先的 企业级关系型数据库管理系统(RDBMS),由 Oracle 公司(原名 SDL,1977 年成立) 开发。作为业界标杆,它以高性能、高可靠性和强扩展性著称,主要用于支撑大型企业核心业务系统、数据仓库及云计算平台,是金融、电信、政府等关键领域的首选数据库解决方案。
DB2简介
DB2 是 IBM 公司 开发的 企业级关系型数据库管理系统(RDBMS),始于 1970 年代的 System R 项目,是数据库领域历史最悠久的产品之一。它以高可靠性、稳定性和强大的企业级功能著称,主要面向金融、政府、制造业等对数据处理要求严苛的行业,尤其擅长支撑大型事务处理系统和数据仓库。
MySQL简介
MySQL 是 Oracle 公司旗下 的 开源关系型数据库管理系统(RDBMS),基于 Client-Server 架构 设计,它以轻量级、高性价比、易扩展性著称,是全球使用最广泛的开源数据库之一,尤其适合 Web 应用、互联网服务和中小型企业场景。
(2)非关系数据库
非关系型数据库(NoSQL,Not Only SQL) 是不依赖传统关系模型(如二维表、行 / 列结构)的数据库管理系统,旨在解决海量数据存储、高并发读写、灵活数据模型等场景下的性能瓶颈。其核心思想是弱化数据一致性,强调可用性和分区容错性,通过分布式架构、非结构化数据模型实现水平扩展。
1.1.4关系数据库的基本概念
1.关系数据库的基本结构
关系数据库基于 关系模型(Relational Model) 构建,核心是将数据组织成 二维表格(关系表),通过表与表之间的 关系 实现数据关联和查询。
2.主键与外键
主键:主键(Primary Key) 是关系数据库中用于唯一标识表中每条记录的字段或字段组合,是关系模型的核心约束之一。其设计目标是确保数据的唯一性、完整性和可访问性,在数据库设计和操作中具有关键作用。
外键:外键(Foreign Key) 是关系数据库中用于建立表间关联的字段或字段组合,是实现关系模型(如一对一、一对多、多对多关系)的核心机制。其本质是通过引用其他表的主键(或候选键),确保数据的一致性和完整性,并反映业务逻辑中的关联关系。
3.数据完整性规则
(1) 实体完整性规则:实体完整性规则(Entity Integrity Rule) 是关系数据库中确保表中 “实体(记录)唯一性” 的核心约束,属于关系模型的三大完整性规则之一(另外两个为参照完整性和用户定义的完整性)。其本质是通过约束主键字段的取值,保证表中每个实体(行)都是可唯一标识且无冗余的 “有效个体”。
(2)域完整性规则:域完整性规则(Domain Integrity Rule) 是关系数据库中确保表中字段(列)取值合法有效的约束,属于关系模型的三大完整性规则之一(另外两个为实体完整性和参照完整性)。其核心是限定表中每个字段的 “取值范围”(域),确保数据符合业务逻辑和数据类型要求,避免 “无效数据” 写入数据库。
(3)引用完整性规则:引用完整性规则(Referential Integrity Rule) 是关系数据库中确保表间关联字段数据一致性的约束,属于关系模型的三大完整性规则之一(另外两个为实体完整性和域完整性)。其核心是通过外键(Foreign Key)建立表间关联,并保证关联字段的取值符合 “引用关系”—— 即外键值必须对应主键(或唯一键)的现有值。
(4)用户定义的完整性规则:用户定义的完整性规则(User-Defined Integrity Rule) 是关系数据库中由用户(或开发者)根据具体业务需求自定义的数据约束规则,用于补充关系模型默认约束(如实体完整性、域完整性、引用完整性)无法覆盖的特殊业务逻辑。
2.1MySQL服务基础
MySQL 是 Oracle 公司旗下的开源关系型数据库管理系统(RDBMS),基于 C/S 架构(客户端 / 服务器模式) 运行,主要用于存储、管理和查询结构化数据。
核心功能包括:
数据存储:通过表格形式(行、列结构)存储数据,支持事务(ACID 特性)、外键约束等关系型数据库特性。
数据管理:提供用户权限管理、数据备份 / 恢复、性能优化等工具(如 mysqldump
、MySQL Workbench
)。
数据查询:支持标准 SQL 语言(如 SELECT
、INSERT
、UPDATE
、DELETE
),可通过索引优化查询效率。
2.1.1MySQL的二进制安装
-
[client]
部分-
socket=/usr/local/mysql/data/mysql.sock
:指定客户端连接 MySQL 服务器时使用的套接字文件路径 。在本地连接时,使用套接字比 TCP/IP 更高效。
-
-
[mysqld]
部分-
socket=/usr/local/mysql/data/mysql.sock
:MySQL 服务器端使用的套接字文件路径,与客户端对应,方便本地连接。 -
bind-address = 0.0.0.0
:设置 MySQL 服务器监听的 IP 地址,0.0.0.0
表示监听服务器上的所有 IP 地址,允许来自任何网络的连接。 -
skip-name - resolve
:禁止 MySQL 对连接的客户端 IP 进行反向 DNS 解析,可提高连接速度,避免因 DNS 解析失败导致连接问题。 -
port = 3306
:MySQL 服务器监听的端口号,默认是 3306。 -
basedir=/usr/local/mysql
:MySQL 的安装目录。 -
datadir=/usr/local/mysql/data
:MySQL 的数据存储目录,数据库文件、表文件等数据都存放在这里。 -
max_connections=2048
:设置 MySQL 允许的最大连接数,可根据服务器性能和业务需求调整。 -
character-set-server=utf8
:设置服务器默认字符集为 UTF - 8,能支持多种语言字符存储。 -
default-storage-engine=INNODB
:设置默认的存储引擎为 InnoDB ,InnoDB 支持事务、行级锁等特性,是常用的存储引擎。 -
max_allowed_packet=16M
:设置单个数据包的最大大小,限制客户端与服务器之间传输数据的大小,可防止过大数据包导致的性能问题或内存溢出。
-
-
[mysqld_safe]
部分-
log-error=/usr/local/mysql/data/error.log
:指定 MySQL 服务器错误日志文件的路径,用于记录服务器运行过程中的错误信息,方便排查问题。
-