一、数据库 概述

什么是数据库?简单来说就是存储数据的仓库、这个仓库它会按照一定的数据结构来对数据进行组织和存储、我们可通过数据库提供的多种方法来管理其中的数据

说比较通俗一点就是计算机中的数据库就是类似于我们存放东西的仓库、它们的区别只是在于存放的东西不同、我们在仓库里面所放的东西为实体物件、而数据库里面所存储的为计算机数据、比如QQ账号与密码、等级、会员


1)数据库种类

在当今的互联网最为常用的数据库模型主要分为两种:关系型数据库(RDBMS)和非关系型数据库(NoSQL)

1、RDBMS

最常见的关系型数据库包括:MySQL、Oracle、SQLServer、Mariadb、Access、PostgreSQL、DB2

关系型数据库可将数据结构归结为二维表格形式、在关系型数据库中、对数据的所有操作均建立在一个或多个表上、通过这些关联的表格进行分类、合并、连接、运算来实现对数据的管理

众所周知、数据的存储方式存在一定的结构、在关系型数据库中、二维表格就是组织数据的基本形式

在每个不同的数据库中包含多个表、而每个表由若干个列组成、一个表有多个列、每个列又存储着不同的信息、数据库中的列(字段)都有相应的数据类型、数据类型定义每个列存储数据的类别、例如为数字、那么可以选择int

2、NoSQL

最常见的非关系型数据库包括:Redis、MemCached、MongoDB、HBase、Cassandra

非关系型数据库也称为NoSQL数据库、它的出现并不是要终结关系型数据库、而是作为传统关系型数据库的一个有效补充

随着Web2.0的兴起、传统的关系型数据库在应对这些高并发网站时已经显得力不从心、暴露出了很多难以克服的问题、比如高并发、高扩展、高可用、I/O瓶颈、性能瓶颈都难以突破

于是针对这些场景NoSQL数据库应用而生、在这些场景下NoSQL数据库可以发挥出难以想象的效率和性能、近几年来NoSQL这个术语得到了广泛认同

NoSQL打破了长久以来关系型数据库的ACID理论、而且NoSQL的数据存储结构无需固定的表结构、在大数据的存取上有着关系型数据库无法比拟的优势、但是NoSQL数据库没有标准的查询语言、通常使用查询API


2)MySQL 概述

MySQL是一个开源的中小型关系型数据库管理系统、由瑞典MySQLAB公司开发、是一个多线程多用户的SQL数据库服务、目前MySQL被广泛应用于大中小型网站

由于它的高性能、速度快、体积小、成本低、源码开放等特点、因此有许多企业选择它来作为网站数据库、以此来降低成本

同时MySQL也是一个C/S架构、由一个服务端守护进程mysqld和不同的客户端程序以及库组成、随着技术的成熟、MySQL支持的功能也越来越多、性能也在不断的提高、对平台的支持也在增多、因此深受广大用户的喜爱

1、为何选择 MySQL

选择MySQL作为后端的数据存储方式既成事实、那MySQL又有哪些优点呢?

(1)源码开放、无版权制约、自主性强、使用成本低

(2)软件体积小、性能稳定、速度快、使用简单、易于维护

(3)跨平台、支持多种操作系统、提供了多种API、支持多种开发语言

2、MySQL 命名介绍

MySQL数据库软件由3个数字和一个后缀组成、例如:mysql-5.7.27.tar.gz、其含义如下:

第一个数字:代表主版本号、描述了文件格式

第二个数字:代表发行级别、主版本号与发行级别组合一起便构成了发行序列号

第三个数字:代表发行系列的版本号、随着每个新分发版而递增

提示:每次更新后、版本字符串的最后一个数字会递增、如果增加了新的功能、那么字符串的第二个数字会递增、如果文件格式改变、那么第一个数字会递增

3、RDBMS 术语

库:      数据库为一些关联表的集合

表:      由一个行和列组成的二维表、具有固定列和任意的行数

行:    为相同属性的对象中的一个

列:    为对应数据库中存储对象的共有的属性

索引: 类似于书籍的目录、我们可以使用索引来快速访问表中的特定信息

主键: 主键是唯一的、一个表中只能包含一个主键、可以使用主键来查询数据

外键: 外键用于关联两个表

冗余: 存储两倍数据、冗余虽然降低了性能、但也提高了数据的安全性

3)MySQL 数据类型

数据类型是数据的一种属性、用于指定对象可保存的数据类型、如整数、字符串、日期和时间等、MySQL支持多种数据类型、其大体上我们可以将其分为三类:数值类型、日期和时间类型、字符串类型

int:     主要数据类型、大多数数值类型都可以使用这种数据类型、占4字节空间

char:    存储固定长度、非Unicode字符数据、该数据类型最多包含8000个字符

varchar:    存储可变长度、非Unicode字符数据、与char的区别为、存储的长度不是列长、而是数据的长度

nchar:     用于存储定长Unicode字符数、使用的字节数在空间上增加了一倍

nvarchar:   用于存储变长Unicode字符数、使用的字节数在空间上增加了一倍

date:     表示日期、占用3字节空间

time:     表示一天中的某个时间、占用5字节空间

datetime:   表示日期和时间、占用8字节空间

bigint:   相当于int的扩展、如果要存储的整数值超过了int即可使用它、占用8字节空间

tinyint:     用于存储有限数值、即0-255之间的整数、占1字节空间

bit:     值只能是0、1或NULL、存储只有两种可能的值、Yes或No、True或False、On或Off

money:   表示钱和货币值、占用8字节空间

text:     用于存储大量非Unicode字符数据


二、MySQL 部署

1)下载软件包

[root@mysql ~]# wget -c https://downloads.mysql.com/archives/get/file/mysql-5.7.27.tar.gz
[root@mysql ~]#	wget -c https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

2)安装相应的依赖包

[root@mysql ~]#	yum -y install ncurses ncurses-devel cmake libaio libaio-devel pcre pcre-devel \
zlib zlib-devel bison bison-devel libverto libverto-devel libstdc++ libstdc++-devel \
dbus dbus-devel libss libss-devel gcc gcc-c++ autoconf m4 libgcc e2fsprogs perl-Data-Dumper

3)为MySQL创建运行用户与组

[root@mysql ~]# groupadd mysql
[root@mysql ~]# useradd -M -s /sbin/nologin mysql -g mysql

4)解压boost工具、并移动到指定位置即可、无需编译安装

[root@mysql ~]# tar xf boost_1_59_0.tar.gz
[root@mysql ~]# mv boost_1_59_0 /usr/local/boost

5)编译安装MySQL

[root@mysql ~]# tar xf mysql-5.7.27.tar.gz -C /usr/src/
[root@mysql ~]# cd /usr/src/mysql-5.7.27/
[root@mysql mysql-5.7.27]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_DEBUG=0 \
-DWITH_BOOST=/usr/local/boost \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock
make -j 8 && make install -j 8 && cd ~

6)编译安装完成以后、创建对应的目录、并调整相应的参数

[root@mysql ~]# mkdir /usr/local/mysql/pid
[root@mysql ~]# mkdir /usr/local/mysql/logs
[root@mysql ~]# mkdir /usr/local/mysql/socket
[root@mysql ~]# mkdir /usr/local/mysql/tmp
[root@mysql ~]# mkdir /usr/local/mysql/ibtmp
[root@mysql ~]# mkdir /usr/local/mysql/binlog
[root@mysql ~]# mkdir /usr/local/mysql/relaylog
[root@mysql ~]# mkdir /usr/local/mysql/outcsv/
[root@mysql ~]# mkdir /usr/local/mysql/ibdata
[root@mysql ~]# mkdir /usr/local/mysql/undolog
[root@mysql ~]# mkdir /usr/local/mysql/redolog
[root@mysql ~]# chown -R mysql:mysql /usr/local/mysql
[root@mysql ~]# chmod -R 750 /usr/local/mysql/outcsv
[root@mysql ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
[root@mysql ~]# source /etc/profile

7)定义MySQL配置文件

[root@mysql ~]#	cat > /etc/my.cnf << EOF
[client]
port = 3635
socket = /usr/local/mysql/socket/mysql.sock

[mysqld]
user = mysql
port = 3635
federated
skip_ssl
bind_address = 0.0.0.0
max_connections = 3600
max_connect_errors = 200
autocommit = ON
skip-name-resolve
symbolic-links = 0
skip-external-locking
log_timestamps = system
explicit_defaults_for_timestamp = ON
transaction_isolation = read-committed
binlog_gtid_simple_recovery = ON
show_compatibility_56 = ON
transaction_write_set_extraction = OFF
socket = /usr/local/mysql/socket/mysql.sock
pid-file = /usr/local/mysql/pid/mysql.pid
log-error = /usr/local/mysql/logs/mysql_error.log
secure-file-priv = /usr/local/mysql/outcsv
innodb_tmpdir = /usr/local/mysql/ibtmp
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
tmpdir = /usr/local/mysql/tmp

character-set-server = utf8
init_connect = SET NAMES utf8
collation-server = utf8_general_ci

slow_query_log = ON
long_query_time = 1
min_examined_row_limit = 960
log_slow_admin_statements = ON
log_slow_slave_statements = ON
log_queries_not_using_indexes = OFF
slow_query_log_file = /usr/local/mysql/logs/mysql_slow.log

back_log = 360
tmp_table_size = 64M
max_allowed_packet = 64M
max_heap_table_size = 64M
sort_buffer_size = 1M
join_buffer_size = 1M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
thread_cache_size = 64
thread_stack = 256K
query_cache_size = 32M
query_cache_limit = 2M
query_cache_min_res_unit = 2K
table_open_cache = 4096
open_files_limit = 65535
connect_timeout = 9
interactive_timeout = 21600
wait_timeout = 21600

innodb_data_file_path = ibdata1:12M;ibdata:12M:autoextend
innodb_autoextend_increment = 12
innodb_data_home_dir = /usr/local/mysql/ibdata

innodb_undo_tablespaces = 4
innodb_undo_logs = 128
innodb_max_undo_log_size = 1G
innodb_undo_log_truncate = ON
innodb_purge_rseg_truncate_frequency = 10
innodb_undo_directory = /usr/local/mysql/undolog

innodb_log_file_size = 128M
innodb_log_buffer_size = 16M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 2
innodb_flush_log_at_timeout = 1
innodb_flush_method = O_DIRECT
innodb_log_group_home_dir = /usr/local/mysql/redolog

innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
innodb_fast_shutdown = 0

default-storage-engine = InnoDB
innodb_buffer_pool_size = 2G
table_open_cache_instances = 8
innodb_buffer_pool_chunk_size = 256MB
innodb_page_size = 16k
innodb_sort_buffer_size = 1MB
innodb_file_per_table = ON
innodb_large_prefix = ON
innodb_purge_threads = 8
innodb_page_cleaners = 8
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_neighbors = 0
innodb_lru_scan_depth = 1024
innodb_lock_wait_timeout = 60
innodb_print_all_deadlocks = ON
innodb_deadlock_detect = ON
innodb_strict_mode = ON
innodb_buffer_pool_load_at_startup = ON
innodb_buffer_pool_dump_at_shutdown = ON
EOF

8)对MySQL进行初始化

[root@mysql ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
[root@mysql ~]# echo $?
0

9)将MySQL添加为系统服务

[root@mysql ~]# cp /usr/local/mysql/support-files/mysql.server /usr/local/mysql/bin/mysql.sh
[root@mysql ~]# chmod +x /usr/local/mysql/bin/mysql.sh
[root@mysql ~]#	cat > /usr/lib/systemd/system/mysql.service << EOF
[Unit]
Description=MySQL
After=network.target

[Service]
User=mysql
Group=mysql
Type=forking
PrivateTmp=false
LimitNOFILE=65535
ExecStart=/usr/local/mysql/bin/mysql.sh start
ExecStop=/usr/local/mysql/bin/mysql.sh stop

[Install]
WantedBy=multi-user.target
EOF

10)启动MySQL并为root用户设置密码

[root@mysql ~]# systemctl start mysql
[root@mysql ~]# systemctl enable mysql
[root@mysql ~]# netstat -anput | grep mysql
tcp        0      0 0.0.0.0:3635            0.0.0.0:*               LISTEN      34411/mysqld
[root@mysql ~]# mysql -e"update mysql.user set authentication_string=password('abc-123') where user='root';flush privileges;"

【只是为了打发时间】  

源码编译安装MySQL5.7的更多相关文章

  1. centos6.5环境源码编译安装mysql5.6.34

    centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...

  2. 源码编译安装mysql5.5.33

    源码编译安装mysql5.5.33 一.安装cmake编译工具 跨平台编译器 # yum install -y gcc* # yum install -y cmake 解决依赖关系 # yum ins ...

  3. CentOS7.5源码编译安装mysql5.7.29

    #查看系统版本 [root@ctos3 ~]# cat /etc/redhat-release CentOS Linux release (Core) #下载源码包,需要注意的是mysql5.7 编译 ...

  4. Linux源码编译安装MySQL5.7

    目录[-] 一.环境准备: 二.升级系统: 三.做一些准备工作(以下Linux命令均在su到root用户操作): 四.开始编译安装mysql-5.7.9: 一.环境准备: 我尝试过以下环境都是能成功的 ...

  5. ubuntu上源码编译安装mysql5.7.27

    一.查看操作系统环境和目录结构,并创建mysql用户和组,以及规划安装mysql所需要的目录. #cat /etc/issue 查看发行版本信息: #cat  /proc/version 查看正在运行 ...

  6. linux上源码编译安装mysql-5.6.28

    在 linux 上编译安装 mysql-.tar.gz http://www.mysql.com/ mysql下载地址: http://www.mysql.com/downloads/mysql/#d ...

  7. 源码编译安装MySQL-5.6/mysql-5.6.39------踩了无数坑,重装了十几次服务器才会的,不容易啊!

    1.切换到src目录 cd /usr/local/src/ 2. 下载mysql免编译二进制包 免编译的mysql二进制包5.6源码包: wget http://mirrors.163.com/mys ...

  8. Centos6.5 源码编译安装 Mysql5.7.11及配置

    安装环境 Linux(CentOS6.5 版).boost_1_59_0.tar.gz.mysql-5.7.11.tar.gzMySQL 5.7主要特性:    更好的性能:对于多核CPU.固态硬盘. ...

  9. 源码编译安装mysql5.6

    1.download the source package and unzip to the destination dir http://mirror.switch.ch/mirror/mysql/ ...

随机推荐

  1. ArcEngine语法笔记(VB)

    1.获取图层字段 Dim pTable As ITable = pLayer Dim pField As IField pField = pTable.Fields.Field(i) Next  2. ...

  2. 七彩线段 - 装压dp (牛客网)

    题目描述听说彩虹有七种颜色?一维坐标轴上n条线段,每条线段左端点l,右端点r,颜色为c,从中选m种颜色的互不接触的线段,每种颜色可选多条,所选线段的总长度最长为多少?输入描述: 第一行2个整数 n, ...

  3. Java 方法重写方法重载

    1,方法的重载和方法的重写 方法名相同形参列表不通 方法名字的重新定义2,面向过程是分步骤解决问题 用方法组织代码 面向对象是以分类的方式解决问题 用类住址代码3 类是对对象的抽象 对象万事万物都是对 ...

  4. Nginx作为负载均衡服务介绍

    ​ GSLB ​ SLB ​ 四层负载均衡 ​ 七层负载均衡 ​ 四层负载均衡 四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP.目标IP以外,还 ...

  5. C# 调用word进程操作文档关闭进程

    C# 调用word进程操作文档关闭进程 作者:Jesai 时间:2018-02-12 20:36:23 前言: office办公软件作为现在主流的一款办公软件,在我们的日常生活和日常工作里面几乎每天都 ...

  6. centos7的新特性

    1.修改主机名方式改变 centos6在/etc/ centos7使用命令hostnamectl set-hostname 主机名2.修改时间方式改变3.查看IP地址ifconfig不再支持改用ip4 ...

  7. Linux上部署web服务器并发布web项目-转

    Linux上部署web服务器并发布web项目   近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以 ...

  8. python接口自动化测试 - configparser配置文件解析器详细使用

    configparser简介 ConfigParser模块已在Python 3中重命名为configparser 该模块定义了ConfigParser类. ConfigParser类实现一种基本的配置 ...

  9. 面试必备!Java核心技术100+面试题

    一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理. 这篇文章梳 ...

  10. Java多线程,对锁机制的进一步分析

    1 可重入锁 可重入锁,也叫递归锁.它有两层含义,第一,当一个线程在外层函数得到可重入锁后,能直接递归地调用该函数,第二,同一线程在外层函数获得可重入锁后,内层函数可以直接获取该锁对应其它代码的控制权 ...