数据库之Mysql
一、数据库介绍
1、什么是数据库
数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其中的数据。
2、数据库的种类
最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。
3、生产环境常用数据库
- 生产环境主流的关系型数据库有 Oracle、SQL Server、MySQL/MariaDB等。 - 生产环境主流的非关系型数据库有 MongoDB、Memcached、Redis
4、关系型数据库
1、关系型数据库介绍
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、选取等来实现数据的管理。
数据的存储形式:
2、关系型数据库小结
- 关系型数据库在存储数据时实际就是采用的一张二维表(和 Word 和 Excell 里表格几乎一样)。 - 市场占有量较大的是 MySQL 和 Oracle 数据库,而互联网场景最常用的是 MySQL 数据库。 - 通过 SQL 结构化查询语言来存取、管理关系型数据库的数据。 - 关系型数据库在保持数据安全和数据一致性方面很强,遵循 ACID 理论
5、非关系型数据库
1、非关系数据库诞生的背景
非关系型数据库也被称为 NoSQL 数据库,NoSQL 的本意是 “Not Only SQL”,指的是非关系型数据库,主要是对于规模很大的海量数据,和高并发SNS(Social Networking Services,即社交网络服务。例如:数据库的并发负载非常高,一般会达到10000次/s以上的读写请求。关系型数据库对于上万次的查询请求还是可以勉强支撑的。当出现上万次的写数据请求时,硬盘I/O就已经无法承受了。传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是开始出现了针对特定场景,以高性能、高并发和使用便利为目的数据库产品。NoSQL(非关系型)类的数据库。
非关系型数据库小结
- NoSQL 格式灵活:存储数据的格式可以是key-value形式、文档形式、图片形式等等使用灵活,应用场景广泛。 - NoSQL 数据库为了灵活及高性能、高并发、速度快而产生。 - NoSQL 数据库领域,当今的最典型产品为 Redis(持久化缓存)、MongoDB、Memcached(纯内存)等。 - NoSQL 数据库没有标准的查询语言(SQL)。 - NoSQL 成本低:nosql数据库部署简单,基本都是开源软件。
6、常用关系型数据库管理系统
1、Oracle 数据库
Oracle 前身叫 SDL,由 Larry Ellison 和另两个编程人员在1977创办,1979年,Oracle 公司引入了第一个商用 SQL关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前 Oracle 关系数据库产品的市场占有率数一数二。
Oracle 公司是目前全球最大的数据库软件公司。
主要应用范围:传统大企业,大公司,政府,金融,证券等等。
2、MySQL 数据库
MySQL 数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典 MySQL AB 公司。在2008年1月16号被 Sun 公司收购,后 Sun 公司又被 Oracle 公司收购。目前MySQL 被广泛地应用在 Internet 上的大中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。
MySQL 数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。
3、MariaDB 数据库
MariaDB 数据库管理系统是 MySQL 数据库的一个分支,主要由开源社区维护。
开发 MariaDB 数据库的目的是完全兼容 MySQL 数据库,包括 API 和命令行,使之能轻松的成为 MySQL 的代替品。由 MySQL 的创始人 Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以 10 亿美元的价格,将自己创建的公司MySQL AB卖给了 SUN,此后,随着 SUN 被甲骨文收购,MySQL 的所有权也落入Oracle 的手中,MariaDB 数据库的名称来自 MySQL 的创始人Michael Widenius 的女儿 Maria 的名字。
4、SQL Server 数据库
Microsoft SQL Server是微软公司开发的大型关系型数据库系统。1989年,微软发布了 SQLServer1.0 版。
SQL Server 可以与 Windows 操作系统紧密集成。SQL Server 的缺点是只能在 Windows 系统下运行。
主要应用范围:部分企业电商,使用windows服务器平台的企业。
7、常用非关系型数据库管理系统
1、Memcached(Key-Value)
Memcached 是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的 Web 应用,注意:Memcache 是这个项目的名称,而Memcached 是服务器端的主程序文件名。
缓存一般用来保存一些经常被存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来一样),通过缓存来存取对象或数据要比在磁盘上存取快很多,Memcached 是一种纯内存缓存系统,把经常存取的对象或数据缓存在 Memcached 的内存中,数据以 Key-Value 的方式存储。Memcached 通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度.官方:memcached - a distributed memory object caching system/
由于Memcached 为纯内存缓存软件,一旦重启所有数据都会丢失。所以最近几年逐渐被其他的持久化产品替代例如Redis。
2、Redis(Key-Value)
Redis 是一个Key-Value 型存储系统。但Redis支持的存储value 类型相对更多,包括 string(字符串)、list(链表)等。Redis 的数据都是缓存在内存中,区别是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 Master-Slave(主从)同步。
Redis 是一个高性能的 Key-Value 数据库。它提供了 Python,Ruby,Erlang,PHP 客户端,使用很方便。
官方:Docs
Redis 特点:
1. 支持内存缓存,同时也支持持久化存储。 3. 数据类型更丰富。比其他 Key-Value 库功能更强。 4. 支持主从同步、cluster分布式集群。
应用:缓存从存取 Memcached 更改存取 Redis。
3、MongoDB (Document-Web)
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB 最大的特点是他支持查询语言非常强大,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。
MongoDB 服务端可运行在 Linux、Windows 或 OS X 平台,支持32位和64位应用,默认端口为 27017。推荐运行在64位平台。
MongoDB 把数据存储在文件中(默认路径为:/data/db)。
二、前言
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
RDBMS即关系数据库管理系统(Relational Database Management System)
MySQL 类型
#### 1、MySQL Community Server - MySQL Community Server是社区版本,开源免费,但不提供官方技术支持。MySQL Community Server也是我们通常用的MySQL的版本。根据不同的操作系统平台细分为多个版本。 #### 2、MySQL Enterprise Edition - MySQL Enterprise Edition企业版本,需付费,可以试用30天。 #### 3、MySQL Cluster - MySQL Cluster集群版,开源免费。可将几个MySQL Server封装成一个Server。MySQL Cluster CGE 高级集群版,需付费。
MySQL 安装方式
1、yum 安装
优点:操作简单易用。不用单独下载,服务器可以联网且yum源没有问题即可(可以选择国内的163/阿里源)
2、编译安装
- 5.1.X 及之前的版本是通过下载tar包以后解压后进入软件包解压路径。然后./configure、make、make install - 5.4.X 到 5.7.X 通过下载tar包以后解压后进入软件包解压路径。然后 cmake、make、make install(cmake需要提前安装) 优点:可以定制功能特性。
3、二进制安装
官方下载二进制包,解压初始化即可直接使用不用安装。
4、rpm 安装
- 需要提前下载 rpm 软件包上传到服务器系统本地。 - 使用 rpm 或者 yum 命令直接安装
MySQL 版本号
以 MySQL 5.7.27 这个版本的版本号为例说明每个数字含义。 - 第一个数字(5)主版本号:文件格式改动时,将作为新的版本发布; - 第二个数字(7)发行版本号:新增特性或者改动不兼容时,发行版本号需要更改; - 第三个数字(27)发行序列号:主要是小的改动,如bug的修复、函数添加或更改、配置参数的更改等。
关系型数据库与非关系型数据库的区别:
1.关系型数据库: 优点: 1、易于维护:都是使用表结构,格式一致; 2、使用方便:SQL语言通用,可用于复杂查询; 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点: 1、固定的表结构,灵活度稍欠; 2、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。 ============================================================================= 2.非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。 优点: 1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛。 2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 3、高扩展性; 4、成本低:nosql数据库部署简单,基本都是开源软件。 缺点: 不提供sql支持;
MySQL的官方网址: MySQL/ ,MySQL的社区版本下载地址为: MySQL :: Download MySQL Community Server/ ,在写本文时,当前的MySQL最新版本是:8.0 。
什么是sql?
SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。
SQL包含三个部分:
数据定义语言包含定义数据库及其对象的语句,例如表,视图,触发器,存储过程等。 数据操作语言包含允许您更新和查询数据的语句。 数据控制语言允许授予用户权限访问数据库中特定数据的权限。
mysql安装
关闭防火墙和selinux
1、编译安装mysql5.7
1、清理安装环境:
# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
# userdel -r mysql
# rm -rf /etc/my*
# rm -rf /var/lib/mysql
2、创建mysql用户
[root@mysql-server ~]# useradd -r mysql -M -s /bin/false
3、从官网下载tar包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz
4、安装编译工具
# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
# yum -y install cmake
5、创建mysql目录
[root@mysql-server ~]# mkdir -p /usr/local/{data,mysql,log}
6、解压
[root@mysql-server ~]# tar xzvf mysql-boost-5.7.27.tar.gz -C /usr/local/
注:如果安装的MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需
要boots库的安装才可以正常运行。否则会报CMake Error at cmake/boost.cmake:81错误
安装包里面自带boost包
7、编译安装
cd 解压的mysql目录
[root@mysql-server ~]# cd /usr/local/mysql-5.7.27/
[root@mysql-server mysql-5.7.27]#cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
提示:boost也可以使用如下指令自动下载,如果不