MySQL数据库-day-1 2019-06-13

第一章 MySQL简介及安装


1、官方定义的MySQL DBA工作内容

(1)运维DBA
初级:各版本、各平台安装搭建、升级
中级:体系结构原理、基础管理(启动关闭、初始化配置文件管理、多实例管理、用户权限管理、基本SQL(增删改查))、
日志管理、备份与恢复、主从复制(构建、状态监控)
高级:高可用(MGR、InnoDB Cluster)、高性能(优化)
(2)开发DBA
懂至少一门开发语言 :JAVA、Python
基本SQL语句深入学习(增删改查)、数据库结构设计(建模)
高级SQL:存储过程、函数、触发器、视图、事件

2、mysql数据库知识框架

(1)MySQL 5.7 安装部署(二进制)*****
    编译自己扩展
(2)MySQL升级步骤扩展 ***
(3)MySQL5.7 体系结构原理 *****
(4)MySQL基础管理  *****
(5)基础SQL语句使用 *****
(6)SQL高级应用  ***
(7)Information_schema获取元数据 ***
(8)索引、执行计划管理(基础优化)*****
(9)存储引擎  *****
(10)日志管理 *****
(11)备份与恢复 ******
(12)主从复制及架构演变 ******
(13)传统的高可用及读写分离(MHA&Atlas)****
(14)传统分布式架构设计与实现-扩展(Mycat--->DBLE,DRDS)**
(15)MySQL 5.7 高可用及分布式架构-扩展(MGR,InnoDB Cluster)***
(16)MySQL优化(安全、性能) ****
(17)MySQL 监控(zabbix、Open-falcon)    ****
 (18) RDS(阿里云课程)    *****

额外要会的:
    Redis
    mongodb     
了解: 
    PG
    Oracle  

3、DBA职业素养

3.1、人品

责任-----权利

3.2
3.2.1、严谨

磁带库----->备份软件-----17楼
数据库修改\删除类的命令时 再三考虑,而且要有理论或者实践的支撑

3.2.2 请收起你的好奇心!!!!!

注意规范:
脱库? 华住网(ip root 密码),“脱敏”!!!!!。
学会保护自己!!!

3.3、细心

把最简单的事情做的最漂亮,最专业。
不要怕成功的门很拥挤,因为很多人在半路就已经放弃了.
                                           ----oldguo                    

3.4、心态

别惹事,出事别怕事

3.5、熟悉操作系统(精通)
3.6、熟悉公司业务

业务?
    产品的功能
    用户的行为(热功能,热数据)      

3.7、熟悉行业

熟悉行业发展趋势
版本
数据库产品类型
https://db-engines.com/en/ranking

3.8、喜欢数据库

体验很重要

4.数据库产品

4.1 什么是数据?

数据:文字、图片、视频。。。人类认知的数据表现方式
计算机:二进制、16进制的机器语言
基于数据的重要性和复杂性的不同,我们可能有不同的管理方式。

哪些数据是适合存储到数据库的呢?
重要性比较高的
关系较复杂的数据

4.2 什么是数据库管理系统(DBMS)?

RDBMS: 关系型数据库管理系统
比较适合于,安全级别要求高的数据以及关系较复杂的数据

NoSQL:非关系型数据库管理系统
适合于高性能存取数据,一般是配合RDBMS进行使用的
针对大数据处理分析,分布式架构更加擅长

4.3 数据库管理系统种类

RDBMS  :
MySQL 、Oracle、MSSQL(SQL Server)、PG
 
NoSQL:Not Only SQL
键-值(key-value):Redis, ES
文档(document):Mongodb
NEWSQL( 分布式 ): TiDB , Spanner , AliSQL , OB , PolarDB

4.4 MYSQL 企业版本GA选择

5.6 :  5.6.34 、5.6.36 、5.6.38(2017913) 、5.6.40  

5.7 : 5.7.18 、5.7.20 (2017913)、5.7.24 、( 上课版本: 5726 )

8.0 :  8.0.14 、8.0.15 、8.0.16
 
面试题:你们公司用的什么版本的MYSQL? 你在公司干了几年?

5. MYSQL 5.7.26 二进制安装


1、MYSQL 5.7.26 二进制版本安装

#、目录规范
mkdir -p /server/tools   #---->   安装包存放目录
mkdir -p /application    #---->  存放mysql软件目录
mkdir -p /data/mysql/data   #----> mysql数据路径
-------------------------------------------------------------------------------
#2、解压安装包
tar  xf  mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.26-linux-glibc2.12-x86_64  /application/mysql
-------------------------------------------------------------------------------
#3、卸载mariadb
[root@db01 /application]# rpm -qa| grep  mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@db01 /application]# rpm -e --nodeps mariadb-libs 
[root@db01 /application]# rpm -qa| grep  mariadb
-------------------------------------------------------------------------------
#4、创建mysql用户
[root@db01 /application]# useradd  mysql -s /sbin/nologin -M
-------------------------------------------------------------------------------
#5、设置环境变量
[root@db01 ~]# vim /etc/profile 
[root@db01 ~]# export PATH=/application/mysql/bin:$PATH
[root@db01 ~]# . /etc/profile
[root@db01 ~]# mysql -V
mysql  Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using  EditLine wrapper
------------------------------------------------------------------------------
#6、创建数据路径并授权
1.添加一块新磁盘
[root@db01 ~]# fdisk -l    #----> 查看磁盘 
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

2.格式化磁盘
[root@db01 ~]# mkfs.xfs  /dev/sdb 
meta-data=/dev/sdb               isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

3.永久挂载磁盘
[root@db01 ~]# blkid 
/dev/sdb: UUID="4eb4d119-fb74-4c05-a6cf-d11acfa556ef" TYPE="xfs" 
[root@db01 ~]# vim /etc/fstab 
UUID="4eb4d119-fb74-4c05-a6cf-d11acfa556ef" /data xfs   defaults        0 0  
[root@db01 ~]# mount -a 
[root@db01 ~]# df -h 
文件系统                 容量  已用  可用 已用% 挂载点
/dev/sdb                 5.0G   33M  5.0G    1% /data
------------------------------------------------------------------------------
#7、更改目录的用户组
[root@db01 ~]# chown  -R mysql.mysql  /application
[root@db01 ~]# chown -R mysql.mysql /data 
------------------------------------------------------------------------------
#8、下载安装依赖包
[root@db01 /application/mysql]# yum install libaio-devel -y
------------------------------------------------------------------------------
#9、初始化数据库
[root@db01 /data/mysql/data]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
2019-06-13T04:28:06.825389Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-06-13T04:28:06.964841Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-06-13T04:28:07.001796Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-06-13T04:28:07.157424Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: a487a8e4-8d93-11e9-86a6-000c29848d8f.
2019-06-13T04:28:07.162657Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-06-13T04:28:07.165163Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
------------------------------------------------------------------------------
#10、配置mysql配置文件
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
------------------------------------------------------------------------------
#11、启动mysql服务
1、
[root@db01 /data/mysql/data]# cd /application/mysql/support-files/ 
[root@db01 /application/mysql/support-files]# ./mysql.server  start 
Starting MySQL. SUCCESS!      
[root@db01 /application/mysql/support-files]# ./mysql.server  restart 
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
[root@db01 /application/mysql/support-files]# ./mysql.server  status 
 SUCCESS! MySQL running (9641)
[root@db01 /application/mysql/support-files]# ./mysql.server  restart 
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
[root@db01 /application/mysql/support-files]# ./mysql.server  status 
 SUCCESS! MySQL running (9932)
[root@db01 /application/mysql/support-files]# ./mysql.server  stop 
Shutting down MySQL.. SUCCESS! 
2、sys-v 管理
[root@db01 /application/mysql/support-files]# cp /application/mysql/support-files/mysql.server  /etc/init.d/mysqld 
[root@db01 /application/mysql/support-files]# service mysqld start 
Starting MySQL. SUCCESS! 
[root@db01 /application/mysql/support-files]# /etc/init.d/mysqld restart 
3、systemd 管理
cat >/etc/systemd/system/mysqld.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=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF


5.2如何分析处理MySQL数据库无法启动

#1、without updating PID 类似错误
查看日志:
                在哪?
                /data/mysql/data/主机名.err
                [ERROR] 上下文
可能情况:
                /etc/my.cnf 路径不对等
                /tmp/mysql.sock文件修改过 或 删除过
                数据库目录权限不是mysql
                参数改错了

5.3创建数据库密码以及更改密码

mysqladmin -u root password '123456'  #----->创建密码
mysqladmin -uroot -p123456  password 123 #---->更改密码

5.4管理员用户忘记密码

#1、关闭数据库
[root@db01 /data/mysql/data]# systemctl stop  mysqld.service 
#2、启动数据库到维护模式
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
#3、登陆并修改密码
mysql> alter user root@'localhost' identified by '1';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '1';
Query OK, 0 rows affected (0.01 sec)
#4、关闭数据库,正常启动验证
mysql -uroot -p1


第二章MySQL体系结构与管理

1、MySQL C/S结构介绍 ***

16956686-301b140a033d0dd2.png
两种连接方式:
     TCP/IP :mysql -u -p123456 -h 10.0.0.51 -p3306
     Socket : mysql -u -p123456 -S /tmp/mysql.sock

2、MySQL实例的构成 ***

公司:  老板   +   经理   + 员工 + 办公区
实例: mysqld  +  master thread  +干活的Thread + 预分配的内存

3、MySQL中mysqld服务器进程结构

16956686-7824255ca53f23e5.png
#1.连接层
(1)提供连接协议
         Socket    TCP/IP
(2)验证用户名(root@localhost) 密码合法性,进行匹配专门的授权表   
(3)派生一个专用连接进程(接收SQL,返回结果)
通过以下语句可以查看连接线程的基本情况。
mysql> show processlist;
思考:
忘记密码的参数在哪里做的手脚?
--skip-grant-tables  #---> 跳过授权
--skip-networking    #---> 直接跳过TCP/IP 协议 本地连接
#2.SQL层 (优化方面至关重要的)
(1)验证SQL语法和SQL_MODE
(2)验证含义
     DDL :数据定义语言
     DCL :数据控制语言
     DML :数据操作语言
     DQL: 数据查询语言
     ...
(3)验证权限
(4)解析器进行语句解析,生成执行计划(解析树)
(5)优化器(各种算法,基于执行代价),根据算法,找到代价最低的执行计划。
代价: CPU IO MEM
(6)执行器按照优化器选择执行计划,执行SQL语句,得出获取数据得方法。
(7)提供query cache (默认不开),一般不开,会用redis 
(8)记录操作日志(binlog),默认没开
#3. 储存引擎层
真正和磁盘打交道得一个层次
根据SQL层提供的取数据的方法,拿到数据,返回给SQL,结构化成表,再又连接层线程返回给用户。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容