数据库概述、mysql源码安装----线下

  1. 数据库概述
  2. MySQL源码安装
  3. 配置mysqld服务的管理工具

1.数据库概述

1.1数据库种类

最常用的数据库模式主要有两种,即关系型数据库非关系型数据库

生产环境主流的关系型数据库有 Oracle、Microsoft SQL Server、MySQL/MariaDB等。
-生产环境主流的非关系型数据库有 MongoDB         Memcached         Redis 

1.2 关系型数据库特点

关系型数据库在存储数据时实际就是采用的一张二维表(和 Word 和 Excell 里表格几乎一样)。
市场占有量较大的是 MySQL 和 Oracle 数据库,而互联网场景最常用的是 MySQL 数据库。
通过 SQL 结构化查询语言来存取、管理关系型数据库的数据。
关系型数据库在保持数据安全和数据一致性方面很强,遵循 ACID 理论 ACID指的的事务的4大特性

1.3非关系型数据库特点

NoSQL 数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。
NoSQL 数据库为了灵活及高性能、高并发而生,忽略影响高性能、高并发的功能。
在NoSQL 数据库领域,当今的最典型产品为 Redis(持久化缓存)、MongoDB、Memcached(纯内存)等。
NoSQL 数据库没有标准的查询语言(SQL),通常使用数据接口或者查询API。

1.4非关系与关系型数据库比较

关系型数据库:

优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

非关系型数据库:

优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:
1、不提供sql支持;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。

1.5非关系型数据库redis的特点

支持内存缓存,这个功能相当于 Memcached。
支持持久化存储,这个功能相当于 MemcacheDB。
数据类型更丰富。比其他 Key-Value 库功能更强。
支持主从集群,分布式。

2.MySQL源码安装

2.1获取软件包

官网地址:

                nginx: download

2.2编译前工作

清理安装环境:(干净环境不需要做如下操作):

# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
# userdel -r mysql
# rm -rf /etc/my*
# rm -rf /var/lib/mysql
# rm -rf /var/log/mysqld.log

创建mysql用户:

# useradd -r mysql -M -s /bin/false

安装编译工具:

# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake

创建mysql目录:

# mkdir -p /usr/local/mysql/{data,log}

解压:

# tar xzvf mysql-boost-5.7.27.tar.gz -C /usr/local/

2.3编译安装

cd 解压的mysql目录:

# cd /usr/local/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也可以使用如下指令自动下载,如果不下载bost压缩包,把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST=1/

参数详解:

-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 \  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  默认的存储引擎,支持外键

编译编译安装:

# make -j2  && make install                        【大约半小时 】

        -j 指定cpu
        如果安装出错,想重新安装:
         不用重新解压,只需要删除安装目录中的缓存文件CMakeCache.txt

2.4初始化

# cd /usr/local/mysql

# chown -R mysql.mysql .

# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql

--datadir=/usr/local/mysql/data

注:初始化完成之后,一定要记住提示最后的密码用于登陆或者修改密码 

        初始化,只需要初始化一次

2.5编辑MySQL配置文件

# vim /etc/my.cnf                            【将文件中所有内容注释掉在添加如下内容】

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
user = mysql
basedir = /usr/local/mysql  #指定安装目录
datadir = /usr/local/mysql/data  #指定数据存放目录
socket = /tmp/mysql.sock
character_set_server = utf8

参数详解:

[client]
# 默认连接端口
port = 3306
# 用于本地连接的socket套接字
socket = /tmp/mysql.sock
# 编码
default-character-set = utf8

[mysqld]
# 服务端口号,默认3306
port = 3306
# mysql启动用户
user = mysql
# mysql安装根目录
basedir = /usr/local/mysql
# mysql数据文件所在位置
datadir = /usr/local/mysql/data
# 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
socket = /tmp/mysql.sock
# 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character_set_server = utf8

2.6启动、修改密码并登录MySQL

启动:

# cd /usr/local/mysql

# ./bin/mysqld_safe --user=mysql &

修改密码:

# /usr/local/mysql/bin/mysqladmin -u root -p'2720C+Xa:E+j'  password 'Xxx@123'

登录:

# /usr/local/mysql/bin/mysql -uroot -p'Xxx@123'

2.7添加环境变量(可以直接使用mysql -u xx  -p xx  登录)

添加变量:

# vim /etc/profile                            【在最后一行添加如下】

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

加载文件:

# source /etc/profile

3.配置mysqld服务的管理工具

3.1  centos5、6的服务管理方法

注:先将原来的进程杀掉

# cd /usr/local/mysql/support-files/

# cp mysql.server /etc/init.d/mysqld

# chkconfig --add mysqld

# chkconfig mysqld on

这时候就可以用如下的方式启动:

# /etc/init.d/mysqld start 

3.2  centos7的服务管理方法

3.2.1概述:

在centos7中服务不在是用service这个命令来启动与停止,也不再用chkconfig来设置开机启动与否!

在centos7中所有对服务的管理都集中到了systemctl当中;systemctl不再是合之前一样依赖/etc/init.d/下

的脚本,它是通过配置文件来完成对服务的管理的;

3.2.2 创建systemctl管理mysql的配置文件:

创建配置文件:

vim /usr/lib/systemd/system/mysql.service                【输入一下内容】

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

载一下配置文件:

# systemctl daemon-reload

之后就可以以systemctl start mysql  的方式启动服务

3.2.3 了解配置文件:

systemd的配置文件主要放在/usr/lib/systemd/system目录,也可能在/etc/systemd/system目录。

解析sshd的配置文件:

     [Unit]
    Description=OpenSSH server daemon
    Documentation=man:sshd(8) man:sshd_config(5)
    After=network.target sshd-keygen.service
    Wants=sshd-keygen.service
    [Service]
    Type=forking
    PIDFile=/var/run/sshd.pid
    EnvironmentFile=/etc/sysconfig/sshd
    ExecStart=/usr/sbin/sshd $OPTIONS
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    [Install]
    WantedBy=multi-user.target
 

[Unit]                                 区块:启动顺序与依赖关系。
    Description:                        当前配置文件的描述信息。
    Documentation:                帮助信息。
    After:        表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动
    Wants:                        表示sshd.service与sshd-keygen.service之间存在”弱依赖”关系,即如果”sshd-keygen.service”启动失败或停止运行,不影响sshd.service继续执行。
[Service]                 区块:启动行为
    Type:                        定义启动类型。
    PIDFile:                        服务的pid文件路径。
    EnvironmentFile:        指定当前服务依赖的环境参数文件。
    ExecStart:                定义启动进程时执行的命令。
    ExecReload:                重启服务时执行的命令
    KillMode:                定义 Systemd 如何停止 sshd 服务。
    Restart:                定义了 sshd 退出后,Systemd 的重启方式。
    RestartSec:表示Systemd重启服务之前,需要等待的秒数。上面的例子设为等待42秒。
[Install] 区块:定义如何安装这个配置文件,即怎样做到开机启动。
    WantedBy:表示该服务所在的 Target。multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

检视和控制systemd的主要命令是systemctl。该命令可用于查看系统状态和管理系统及服务。如配置好一个service文件后
先重载服务文件

systemctl daemon-reload

3.2.4  systemd日志系统:

systemd提供了自己日志系统(logging system),称为 journal. 使用 systemd 日志,无需额外安装日志服务(syslog)。

journalctl                查看所有日志(默认显示本次启动的所有日志)

journalctl -b                        查看本次启动的所有日志也可以使用

journalctl -k                        查看内核日志

journalctl -u sshd                根据服务筛选

journalctl _PID=1                根据进程ID查询

journalctl --disk-usage        查看日志占用的磁盘空间

journalctl --vacuum-size=500M        设置日志占用的空间

原文链接:https://blog.csdn.net/qq_41537323/article/details/106858015


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值