美文网首页
数据库安装

数据库安装

作者: 慕知 | 来源:发表于2021-03-05 11:04 被阅读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
    
    
    

    相关文章

      网友评论

          本文标题:数据库安装

          本文链接:https://www.haomeiwen.com/subject/byxgfltx.html