数据库安装

2021-03-05  本文已影响0人  慕知

一,数据库简介

数据库管理系统(Database Management System),操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS

数据库系统(Database System),是由数据库及其管理软件组成的系统




常用的数据库分为两大类

1,关系数据库:这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)


PS:在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上。在大型系统中通常有多个表,且表之间有各种关系。实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。



2,非关系数据库  
        --Redis、MongoDB最常见

Redis通常最为普通关系型数据库的缓存层,用于降低数据库的访问压力,提升系统性能。

MongoDB 非关系型数据库(nosql ),属于文档型数据库,可以存放xml、json、bson类型系的数据,据结构由键值(key=>value)对组成。
其最大的特点是分布式部署,可以随着负载的增大动态扩容,从而满足企业业务增长的需求。





MySQL与Redis区别:

1,MySQL是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。

Redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。


2,
mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;第二:反复的访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。

缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会对在缓存中进行查找,如果存在,就获取;否则就访问数据库。缓存的好处就是读取速度快。
redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。



3,mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢。

redis用于存储使用较为频繁的数据到缓存中,读取速度快。

二,yum源安装mysql

1,准备yum源
[root@stars ~]# vim /etc/yum.repos.d/mysql-community.repo
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=0



2,测试mysql相关软件包
[root@stars ~]# yum repolist enabled | grep mysql
mysql56-community/x86_64            MySQL 5.6 Community Server  


3,安装
[root@stars ~]# yum install -y mysql-community-server


4,启动服务
[root@stars ~]# systemctl start mysqld


5,查看是否启动成功
[root@stars ~]# ps -ef | grep mysqld
root       7801      1  0 14:13 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql      8005   7801  5 14:13 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root       8033   7526  0 14:13 pts/0    00:00:00 grep --color=auto mysqld

PS:
有两个进程  守护进程是root用户  另一个为工作进程(可查看相关路径)







[root@stars ~]# ls /var/lib/mysql/mysql/
columns_priv.frm   innodb_index_stats.frm    slave_worker_info.ibd
columns_priv.MYD   innodb_index_stats.ibd    slow_log.CSM
columns_priv.MYI   innodb_table_stats.frm    slow_log.CSV
db.frm             innodb_table_stats.ibd    slow_log.frm
db.MYD             ndb_binlog_index.frm      tables_priv.frm
db.MYI             ndb_binlog_index.MYD      tables_priv.MYD
event.frm          ndb_binlog_index.MYI      tables_priv.MYI
event.MYD          plugin.frm                time_zone.frm
event.MYI          plugin.MYD              
... ...
.frm后缀,记录表结构
.MYD后缀,实时存储的数据
.MYI后缀,mysql表相关索引文件

三,源码安装mysql

image.png
1,下载软件包
https://downloads.mysql.com/archives/community/



2,上传
[root@stars ~]# ll
-rw-r--r--  1 root root 32395002 Mar  2 10:10 mysql-5.6.46.tar.gz




3,安装依赖包
[root@stars ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel




4,解压到指定目录下
[root@stars ~]# tar -xf mysql-5.6.46.tar.gz 


  PS:
      如果要加压到指定目录下,可加选项-C,
      比如-C /usr/local/,指定解压到比如 /usr/local/下




5,创建目录
[root@stars ~]# mkdir /service




6,准备编译环境
[root@stars ~]# cd /mysql-5.6.46/

[root@stars mysql-5.6.46]# 
cmake . -DCMAKE_INSTALL_PREFIX=/service/mysql-5.6.46 \
-DMYSQL_DATADIR=/service/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/service/mysql-5.6.46/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0



cmake . - DCMAKE_INSTALL_PREFIX=/service/mysql-5.6.46 \    程序存放的位置

-DMYSQL_DATADIR=/service/mysql-5.6.46/data \    数据的存放位置

-DMYSQL_UNIX_ADDR=/service/mysql-5.6.46/tmp/mysql.sock \    socket文件存放位置(多实例中用来开启服务)



7,编译 make
[root@stars mysql-5.6.46]# make



8,编译安装
[root@stars mysql-5.6.46]# make install



9,做软连接
[root@stars ~]# ln -s /service/mysql-5.6.46 /service/mysql



10,创建用户及用户组
[root@stars ~]# useradd mysql -s /bin/bash -M 



11,复制配置文件(如果/etc/my.cnfC本身存在,删除即可)
[root@stars ~]# cd /service/mysql/support-files/
[root@stars support-files]# cp my-default.cnf /etc/my.cnf



12,配置system管理MySQL服务(可用systemctl开启关闭mysql服务)
[root@stars ~]# vim /usr/lib/systemd/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://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=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000



重新加载启动文件配置
[root@stars ~]# systemctl daemon-reload 




13,初始化数据库
[root@stars ~]# cd /service/mysql/scripts/

[root@stars scripts]# ./mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data






14,建立socket文件目录
[root@stars ~]# mkdir /service/mysql/tmp




15,授权
[root@stars ~]# chown -R mysql.mysql /service/



16,配置环境变量直接使用mysql
[root@stars ~]# vim /etc/profile.d/mysql.sh
#!/bin/bash
export PATH=/service/mysql/bin:$PATH


[root@stars ~]# source /etc/profile
                              



17,连接数据库

[root@stars scripts]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.46 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


四,mysql自带连接命令及更改密码

mysql自带连接命令:
mysql -h --host;  mysql -h 172.16.1.51
mysql -P --port;  mysql -h 172.16.1.51 -P 3306
mysql -u --user;  mysql -h 172.16.1.51 -P 3306 -u root
mysql -p --password;  mysql -h 172.16.1.51  -P 3306 -u root -p123
mysql -S --socket;


更改mysql的三种方式:
1,
mysql> set password=password('123456');
Query OK, 0 rows affected (0.00 sec)



2,
mysql> grant all privileges on *.* to root@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)



3,
[root@stars bin]# ./mysqladmin -uroot -p123 password 111


五,mysql服务构成

1,连接层


2,sql层

1)接收连接层传来的SQL语句
2)验证语法
3)解析器:解析你的SQL语句,生成多种执行计划
4)优化器:接收解析器传来的多种执行计划,选择最优的一种
5)执行器:将优化器选择出的最优的SQL,执行
    5.1 建立一个与存储引擎层 交互的线程
    5.2 将执行语句交给存储引擎层,取数据 接收存储引擎层,结构化成表的数据结果
6)如果你的前端有缓存,写缓存
7)记录日志(binlog)




3,存储引擎层

1)接收到SQL层传来的SQL语句
2)与磁盘交互,取数据,结构化成表的形式,返回给SQL层
3)建立一个与SQL层交互的线程




PS:
DBA主要职责在于第二部
mysql的结构类似计算机,硬件 -> 操作系统 -> 软件

六,多实例 部署流程

1,创建多个目录

[root@stars ~]# mkdir /data/{3307,3308,3309} -p







2,准备配置文件
[root@stars ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/service/mysql
datadir=/data/3307/data
port=3307
socket=/data/3307/mysql.sock
log-error=/data/3307/data/mysql.err
log-bin=/data/3307/data/mysql-bin
server_id=7


[root@stars ~]# vim /data/3308/my.cnf
[mysqld]
basedir=/service/mysql
datadir=/data/3308/data
port=3308
socket=/data/3308/mysql.sock
log-error=/data/3308/data/mysql.err
log-bin=/data/3308/data/mysql-bin
server_id=8


[root@stars ~]# vim /data/3309/my.cnf
[mysqld]
basedir=/service/mysql
datadir=/data/3309/data
port=3309
socket=/data/3309/mysql.sock
log-error=/data/3309/data/mysql.err
log-bin=/data/3309/data/mysql-bin
server_id=9







3,初始化多个实例

[root@stars ~]# cd /service/mysql/scripts/
[root@stars scripts]#  ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/service/mysql --datadir=/data/3307/data

[root@stars scripts]#  ./mysql_install_db --defaults-file=/data/3308/my.cnf --user=mysql --basedir=/service/mysql --datadir=/data/3308/data

[root@stars scripts]#  ./mysql_install_db --defaults-file=/data/3309/my.cnf --user=mysql --basedir=/service/mysql --datadir=/data/3309/data




4,修改目录的属主属组

[root@stars ~]# chown -R mysql.mysql /data
[root@stars ~]# ll /service
lrwxrwxrwx  1 mysql mysql  21 Mar  1 12:44 mysql -> /service/mysql-5.6.46
drwxr-xr-x  3 mysql mysql  18 Mar  3 15:33 mysql3307
drwxr-xr-x  3 mysql mysql  18 Mar  3 15:33 mysql3308
drwxr-xr-x  3 mysql mysql  18 Mar  3 15:33 mysql3309
drwxr-xr-x 13 mysql mysql 223 Mar  1 16:19 mysql-5.6.



5,启动数据库
[root@stars scripts]# mysqld_safe --defaults-file=/data/3307/my.cnf &

[root@stars scripts]# mysqld_safe --defaults-file=/data/3308/my.cnf &

[root@stars scripts]# mysqld_safe --defaults-file=/data/3309/my.cnf &


注意:开启服务可能会有报错如下
[root@stars scripts]# mysqld_safe --defaults-file=/data/3309/my.cnf &
[1] 26597
[root@stars scripts]# 210304 11:09:08 mysqld_safe Logging to '/data/3309/data/mysql.err'.
210304 11:09:08 mysqld_safe Starting mysqld daemon with databases from /data/3309/data
210304 11:09:08 mysqld_safe mysqld from pid file /data/3309/data/stars.z.pid ended

可能是内存不足导致,增加内存再次尝试启动服务



6,都已成功开启服务
[root@stars scripts]# ps -ef | grep 330
root      24622  24318  0 12:50 pts/1    00:00:00 /bin/sh /service/mysql/bin/mysqld_safe --defaults-file=/data/3309/my.cnf
mysql     24772  24622  0 12:51 pts/1    00:00:01 /service/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf --basedir=/service/mysql --datadir=/data/3309/data --plugin-dir=/service/mysql/lib/plugin --user=mysql --log-error=/data/3309/data/mysql.err --pid-file=stars.z.pid --socket=/data/3309/mysql.sock --port=3309
root      24794  24318  0 12:51 pts/1    00:00:00 /bin/sh /service/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnf
mysql     24944  24794  0 12:51 pts/1    00:00:00 /service/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf --basedir=/service/mysql --datadir=/data/3308/data --plugin-dir=/service/mysql/lib/plugin --user=mysql --log-error=/data/3308/data/mysql.err --pid-file=stars.z.pid --socket=/data/3308/mysql.sock --port=3308
root      25243  24318  0 12:56 pts/1    00:00:00 /bin/sh /service/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf
mysql     25393  25243 19 12:56 pts/1    00:00:01 /service/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf --basedir=/service/mysql --datadir=/data/3307/data --plugin-dir=/service/mysql/lib/plugin --user=mysql --log-error=/data/3307/data/mysql.err --pid-file=stars.z.pid --socket=/data/3307/mysql.sock --port=3307
root      25416  24318  0 12:56 pts/1    00:00:00 grep --color=auto 330




7,多实例密码设置
[root@stars scripts]# mysqladmin -uroot -S /data/3307/mysql.sock password '3307'
Warning: Using a password on the command line interface can be insecure.
[root@stars scripts]# mysqladmin -uroot -S /data/3308/mysql.sock password '3308'
Warning: Using a password on the command line interface can be insecure.
[root@stars scripts]# mysqladmin -uroot -S /data/3309/mysql.sock password '3309'
Warning: Using a password on the command line interface can be insecure.



8,验证
[root@stars scripts]# mysql -uroot -p3307 -S /data/3307/mysql.sock -e "show variables like 'server_id';"
Warning: Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 7     |
+---------------+-------+


9,多实例连接脚本
[root@stars scripts]# vim /usr/bin/mysql3307
mysql -uroot -p3307 -S /data/3307/mysql.sock

授执行权限
[root@stars scripts]# chmod +x /usr/bin/m



10,连接数据库
[root@stars scripts]# /usr/bin/mysql3307 
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.46-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 




11,断开多实例数据库(已设置数据库密码)
[root@stars scripts]# mysqladmin -uroot -p123 -S /data/3307/mysql.sock shutdown


上一篇下一篇

猜你喜欢

热点阅读