- 数据库概述
- MySQL源码安装
- 配置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获取软件包
官网地址:
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