美文网首页
数据库-day02

数据库-day02

作者: 流云若雨 | 来源:发表于2019-11-12 15:07 被阅读0次

    一.课程回顾

    1.数据库的产品介绍
        RDBMS:oracle,mysql,PG,mssql
        NOSQL:Redis,MongoDB,es,memcached
    2.MySQL分支
        oracle
        mariadb
        percona
        rds,polardb,OB
    3.MySQL版本选择
        GA 6-12月
        5.6:5.6.38    2017-9-13
        5.7:5.7.20    2017-9-13
    4.安装-初始化
        5.6:/usr/local/mysql/scripts/mysql_install_db
        5.7:mysqld --initialize-insecure
    5.c/s
        tcp/ip:mysql -uroot -p123 -h10.0.0.51 -p3306
        socket:mysql -uroot -p123 -S /tmp/mysql.sock
    6.MySQLD的程序结构
        连接层:提供链接协议,用户验证,提供链接线程
        sql层:语法,语义,权限,解析,优化,执行
        存储引擎层:从磁盘上提取数据
    7.逻辑结构
        库:库名字,库属性
        表:表名,列,行,属性
    8.物理结构
        宏观:
            库:目录
            表:  myisam:frm,myi,myd
                innodb:frm ibd
        微观:
            段
            区
            页
    9.用户权限
        create user 添加用户
        drop user  删除用户
        alter user  更改用户
        mysql.user 查找用户
        grant  创建并授权
        remoke  回收权限
    

    二.8.0.16版本二进制安装

    1.上传安装包并且解压
    2.修改版本名称,并授权
        ![图片.png](https://img.haomeiwen.com/i18572205/64364106e507c763.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    跨版本升级:

    1.不要挎多个版本
    2.5.7之前的升级  mysql_upgrade(需要执行这条命令)
    5.6升级到5.7
        1.安装新版本软件
        2.改软连接或配置文件中的basedir
        3.用5.7的软件启动5.6的数据
        4.mysql_upgrade -uroot -p123 -S /tmp/mysql.sock
        注意:备份
      5.7之后的直接下载版本  然后启动 数据自动升级
        升级之前必须停掉数据库进行备份
    跨版本升级:
        1.不要挎多个版本
        2.看好版本
    

    三.MySQL的连接管理

    1.MySQL linux中的连接协议
    socket:本地登录,提前创建好localhost相关用户
    TCPIP:远程登录,提前创建好远程用户
    
    2.MySQL客户端
    MySQL:[root@db01 ~]# mysql -uroot -p -S /tmp/mysql.sock
                          mysql -uoldboy -p -h10.0.0.51 -P3306
    

    注意:
    1.不要连接时把密码写到命令行上
    2.写博客的时候,要脱敏
    sqlyog:
    navicat:

    四.MySQL的启动关闭

    1.sysv
    service mysqld start/stop/restart/status
    
    2.systemctl
    systemctl start/stop/restart/status mysqld
    
    3.手工启动方式(维护性操作时)
    /etcinit.d/mysqld  ----》 /usr/local/mysql/bin/mysqld_safe ------>/usr/local/mysql/bin/mysqld
    
    例子:管理员用户root@'localhost' 密码丢失
    1.通过跳过授权表+跳过TCP/IP的参数。启动数据库
        --skip-grant-tables :跳过授权表,链接层关闭验证模块。
        --skip-networking:关闭链接层TCP/IP,只留socket文件链接
    关闭数据库:systemctl stop mysqld.service
    跳过授权表登录:mysqld_safe --skip-grant-tables --skip-networking &
    2.无密码登录
    3.修改密码
        flush privileges;
        alter user  root@'localhost' identified by '123';
     4.正常重启数据库
    systemctl restart mysqld
    
    图片.png
    4.mysql的其他关闭方式

    mysqladmin -uroot -p -S /tmp/mysql.sock shutdown

    五.初始化配置

    1.配置文件(/etc/my.cnf)*****
    [root@db01 ~]# mysqld --help --verbose |grep my.cnf
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
    叠加关系 如果四个配置文件都有  就会执行最后一个文件~/.my.cnf
    自己定义默认位置:mysqld或者mysqld_safe 加入 --defaults-file=/opt/oldboy/conf
    
    02.配置文件内容
    1.影响范围
        服务端启动和工作  
        本地客户端连接(socket)
    2.内容结构
        标签:
            服务端:[mysqld] [mysqld_safe] [server]
            客户端:[mysql] [mysqldump] [client]
        配置参数:
            参数名=值
    
    #服务端
    [mysqld]  ... 标签
    user=mysql
    basedir=/usr/local/mysql  ....软件的路径
    datadir=/data/mysql/data  ....目录的路径
    #服务端的套接字文件
    socket=/tmp/mysql.sock
     服务端参数修改  需要重启
    #客户端
    [mysql]
    socket=/tmp/mysql.sock
    
    2.命令行***
    3.编译安装*

    六.多实例

    1.规划
    01.端口:3307,3308,3309
    02.数据:/data/330{7..9}/data    
    03.配置文件:/data/330{7..9}/my.cng
        Port=3307/3308/3309
        server_id=7/8/9
        datadir=/data/330{7..9}/data 
        socket=/tmp/mysql330{7..9}.sock
    
    2.干活
    01.创建相关目录并授权
        mkdir -p /data/330{7..9}/data
        chown -R mysql.mysql /data/*
    02.初始化数据
       mv /etc/my.cnf /tmp
        mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data  
        mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data  
        mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3309/data
    03.准备配置文件
    
    cat > /data/3307/my.cnf <<EOF
    [mysqld]
    user=mysql
    basedir=/usr/local/mysql
    datadir=/data/3307/data
    port=3307
    server_id=7
    socket=/tmp/mysql3307.sock
    EOF
    
    cat > /data/3308/my.cnf <<EOF
    [mysqld]
    user=mysql
    basedir=/usr/local/mysql
    datadir=/data/3308/data
    port=3308
    server_id=8
    socket=/tmp/mysql3308.sock
    EOF
    
    cat > /data/3309/my.cnf <<EOF
    [mysqld]
    user=mysql
    basedir=/usr/local/mysql
    datadir=/data/3309/data
    port=3309
    server_id=9
    socket=/tmp/mysql3309.sock
    EOF
    
     04.准备启动脚本
    
    cat > /etc/systemd/system/mysqld3307.service <<EOF
    [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=/data/3307/my.cnf
    LimitNOFILE = 5000
    EOF
    
    cat > /etc/systemd/system/mysqld3308.service <<EOF
    [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=/data/3308/my.cnf
    LimitNOFILE = 5000
    EOF
    
    cat > /etc/systemd/system/mysqld3309.service <<EOF
    [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=/data/3309/my.cnf
    LimitNOFILE = 5000
    EOF
    
    5.启动多实例并验证状态
    [root@db01 ~]# systemctl start mysqld3307
    [root@db01 ~]# systemctl start mysqld3308
    [root@db01 ~]# systemctl start mysqld3309
    [root@db01 ~]# netstat -tulnp|grep mysqld
    tcp6       0      0 :::3306                 :::*                    LISTEN      8692/mysqld         
    tcp6       0      0 :::3307                 :::*                    LISTEN      8912/mysqld         
    tcp6       0      0 :::3308                 :::*                    LISTEN      8932/mysqld         
    tcp6       0      0 :::3309                 :::*                    LISTEN      8980/mysqld         
    
    小作业:
    mysql_multi 实现多实例环境
    https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html
    

    相关文章

      网友评论

          本文标题:数据库-day02

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