1、MySQL简介mysql
一、MySQL运维DBA工做内容:linux
初级DBA:
安装配置,基本使用,基本故障处理
中级DBA:
体系结构、备份策略设计,故障恢复,基础高可用的运维(搭建、监控、故障处理、架构演变)、基础优化(索引、执行计划、慢日志)redis
高级DBA:
高可用架构(设计、实施、运维)、高性能架构(读写分离,分库、分表,分布式)、总体数据库优化(基于业务的SQL优化)sql
二、甲骨人-MySQL-网络班课程框架
1、MySQL5.7 简介及安装部署
2、体系结构和管理
3、SQL语句使用
4、元数据获取-Information_schema
5、基础优化——索引及执行计划管理
6、InnoDB存储引擎
7、日志管理
8、备份恢复、迁移
9、MySQL主从复制
10、MySQL传统高可用——MHA
11、MySQL读写分离——Atlas
十二部分、MySQL分库分表-MyCAT
十三部分、MySQL5.7新型高可用方案——MGR,Innodb Cluster
十四部分、优化
NoSQL:
一、redis
二、Mongodb数据库
三、MySQL版本选择
3.1 企业版(收费版本)
3.2 社区版(开源版本)
GA:稳定的发布版
3.3 行业中对MySQL版本的使用状况
5.6 :老的环境 ----->60%
5.7 :新的环境 ----->40%
建议:尽可能选择GA6个月-12之间的产品
3.4 MySQL的获取 (下载)
社区版----->5.7---->5.7.17之后版本----->5.7.20
rpm --->rpm -ivh xxx.rpm yum 不建议
通用的二进制包 ----->linux_genric版本(绿色版,解压完就能用) 企业建议使用
源码包 ----->Source code(能够定制一些,二次开发的功能) 大企业会用到的vim
补充:
perconaDB:咱们建议可使用它的一些工具,percona-tookit
MariaDB:tokuDB存储引擎,zabbix这种应用经常使用的缓存
2、MySQL5.7 二进制安装过程
0、系统版本
[root@temp ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)安全
一、MySQL安装以前的准备工做bash
1.1 安装依赖包:
yum install -y ncurses-devel libaio-devel服务器
1.2 检查防火墙
iptables
selinux
ip hosts 主机名
二、上传软件并解压软件
mkdir /data/
useradd mysql
cd /data
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar
rm -rf mysql-5.7.20-linux-glibc2.12-x86_64.tar
rm -rf mysql-test-5.7.20-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
三、初始化数据(至关于dbca)
cd /data/mysql/bin
(方法1)
./mysqld --initialize --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql
官方建议的:初始化完成以后,会生成临时密码
而且开启安全策略(密码长度、密码过时时间180天、密码复杂度)
(方法2)
./mysqld --initialize-insecure --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql
四、书写简易配置文件(二进制包须要手工写一个配置文件)
vim /etc/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
log_error=/data/mysql/data/mysql.err
user=mysql
[mysql]
socket=/tmp/mysql.sock
五、启动mysql数据库
cd /data/mysql/support-files
./mysql.server start
cp mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld restart
六、验证数据库
6.1 修改环境变量
vim .bash_profile
export PATH=/data/mysql/bin:$PATH
source .bash_profile
6.2 登录数据库
mysql
===============================================
3、MySQL体系结构及管理
一、服务器端客户端模型
Client ----> Server
在Linux中提供了两种链接协议:
(1)本地链接数据库使用:
Socket:
mysql -uroot -p -S /tmp/mysql.sock
(2)远程链接
TCPIP:远程链接
mysql -uroot -p -h 10.0.0.200 -P 3306
二、实例构成
mysql 单进程多线程的工做模式
mysqld后台进程(老板)
----->Master Thread(经理)
------>一堆线程(小弟)
预分配的内存结构(办公室)
mysql实例=mysqld进程+Master thread+一堆线程+预分配的内存结构
三、mysqld服务构成
一条SQL语句的执行过程:
(1)链接层
mysql -uroot -p -h 10.0.0.200 -P 3306
(1.1)提供链接协议(socket、TCPIP)
(1.2)用户名密码验证
(1.3)提供专用的链接线程(接受SQL、范围执行结果)
select table_schema,table_name ,engine from information_schema.tables
where table_schema='mysql';
(2)SQL层
(2.1) 语法验证
(2.2) 权限验证
(2.3) 语义检查(DDL、DML、DCL、DQL)
(2.4) 专用的解析器,解析对应的类型的SQL语句,生成执行计划
(2.5) 优化器基于代价,选择一个代价最低的执行计划
(2.6) 执行器(负责执行优化器选择执行计划),获得一个结果(获取数据的方法)。
(2.7) 提供了查询缓存 (SQLid+结果)query_cache,默认关闭的状态。Redis(Tair)缓存数据库配合使用。
(2.8) 提供查询日志
(3)存储引擎层(File system)
拿着上层传送过来的,获取数据的方法,从磁盘取数据。
四、物理存储结构(了解) 库 ----> 目录 表 ----> 多个文件构成(不通存储引擎,存储方式不一样)