综合架构-DBA-06-日志管理
错误日志(log_error)作用记录MySQL启动\关闭\日常运行过程中,状态信息,警告,错误信息。帮助管理员定位数据库问题,提供帮助
错误日志配置默认就是开启的: /数据路径下/hostname.err
手工设定:
1Master [(none)]>select @@log_error;
1234vim /etc/my.cnflog_error=/var/log/mysql.loglog_timestamps=system# 说明:日志目录必须提前创建,并且mysql有写入权限
重启生效
1show variables like 'log_error';
日志内容查看主要关注[ERROR],看上下文
binlog(binary logs):二进制日志 *****主要记录数据库变化(DDL,DCL,DML)性质的日志,是逻辑层日志。
作用(1)备份恢复必须依赖二进制日志(2)主从环境必须依赖二进制日志
binlog配置 (5.7以后必须加server_id)123456789101112注意:MySQL8.0以前默认是没有开启二进制日志的。基础参数查看:开关 ...
综合架构-DBA-05-存储引擎
简介相当于Linux文件系统,只不过比文件系统强大
功能了解
数据读写
数据安全和一致性
提高性能
热备份
自动故障恢复
高可用方面支持等
存储引擎种类介绍(Oracle MySQL)可以不同的表设定不同的存储引擎
InnoDB:MySQL5.5版本以后默认的存储引擎。99%以上的业务表是InnoDB
MyISAM
MEMORY
ARCHIVE
FEDERATED
EXAMPLE
BLACKHOLE
MERGE
NDBCLUSTER
CSV
引擎种类查看12345678910show engines;存储引擎是作用在表上的,也就意味着,不同的表可以有不同的存储引擎类型。PerconaDB:默认是XtraDBMariaDB:默认是InnoDB其他的存储引擎支持:TokuDB RocksDBMyRocks以上三种存储引擎的共同点:压缩比较高,数据插入性能极高现在很多的NewSQL,使用比较多的功能特性.
简历案例—zabbix监控系统架构整改环境: zabbix 3.2 mariaDB 5.5 centos 7.3现象 : zabbix卡的要死 , 每隔3-4个月,都 ...
综合架构-DBA-04-索引及执行计划
索引作用提供了类似于书中目录的作用,目的是为了优化查询
索引的种类(算法)
B树索引
Hash索引
R树
Full text 全文索引
GIS 地理位置索引
B树 基于不同的查找算法分类介绍
B-tree
B+Tree 在范围查询方面提供了更好的性能(> < >= <= like)
B*Tree(B+Tree优化过的)
在功能上的分类辅助索引(S)怎么构建B树结构的?
索引是基于表中,列(索引键)的值生成的B树结构
首先提取此列所有的值,进行自动排序
将排好序的值,均匀的分布到索引树的叶子节点中(16K)
然后生成此索引键值所对应得后端数据页的指针
生成枝节点和根节点,根据数据量级和索引键长度,生成合适的索引树高度id name age genderselect * from t1 where id=10;问题: 基于索引键做where查询,对于id列是顺序IO,但是对于其他列的查询,可能是随机IO.
聚集索引(C)前提(1)表中设置了主键,主键列就会自动被作为聚集索引.(2)如果没有主键,会选择唯一键作为聚集索引.(3)聚集索引必须在建表时 ...
综合架构-DBA-03-SQL基础应用
SQL介绍
结构化查询语言,关系型数据库中通用的一类语言
5.7 以后符合SQL92严格模式
通过sql_mode参数来控制
常用SQL分类MySQL客户端自带的功能
1mysql> help
Server端分类命令
1mysql> help contents
DDL:数据定义语言
DCL:数据控制语言
DML:数据操作语言
DQL:数据的查询语言
SQL的各种名词sql_mode SQL模式作用:规范SQL语句的书写方式,符合逻辑
12mysql> select @@sql_mode;ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
数据类型作用保证数据的准确性和标准性。
种类数值类型
说明:手机号是无法存储到int的。一般是使用char类型来存储收集号
字符类型
char(11) :定长的字符串类型,在存储字符串时,最大字符长度11个,立即分配11个字符长度的存储空间,如 ...
DBA-02-MySQL体系结构
C/S(客户端/服务端)模型介绍
1234TCP/IP方式(远程、本地):mysql -uroot -p123456 -h 10.0.0.51 -P3306Socket方式(仅本地):mysql -uroot -p123456 -S /tmp/mysql.sock
实例介绍实例=mysqld后台守护进程+Master Thread +干活的Thread+预分配的内存公司=老板+经理+员工+办公室
mysqld程序运行原理mysqld程序结构
一条SQL语句的执行过程连接层(1)提供连接协议:TCP/IP 、SOCKET(2)提供验证:用户、密码,IP,SOCKET(3)提供专用连接线程:接收用户SQL,返回结果通过以下语句可以查看到连接线程基本情况
1mysql> show processlist;
SQL层
接收上层传送的SQL语句
语法验证模块:验证语句语法,是否满足SQL_MODE
语义检查:判断SQL语句的类型
DDL :数据定义语言
DCL :数据控制语言
DML :数据操作语言
DQL: 数据查询语言…
权限检查:用户对库表有没有权限 ...
DBA-01-MySQL简介和安装
什么是数据数据:文字、图片、视频。。。人类认知的数据表现方式计算机:二进制、16进制的机器语言基于数据的重要性和复杂性的不同,我们可能有不同的管理方式。
哪些数据是适合存储到数据库的呢?重要性比较高的关系较复杂的数据
什么是数据库管理系统(DBMS)
RDBMS: 关系型数据库管理系统比较适合于,安全级别要求高的数据以及关系较复杂的数据
NoSQL:非关系型数据库管理系统适合于高性能存取数据,一般是配合RDBMS进行使用的针对大数据处理分析,分布式架构更加擅长
数据库管理系统种类
RDBMS :
MySQL
Oracle
MSSQL(SQL Server)
PG
NoSQL:Not Only SQL
键-值(key-value)
Redis
memcached
文档(document)
Mongodb
MySQL二进制安装创建软件目录和用户12345678910# 创建mysql用户useradd mysql -s /sbin/nologin# 创建软件目录mkdir -p /app/database# 创建数据目录mkdir -p /data/3306# ...
Docker-06-资源限制+可视化面板
Docker资源限制默认情况下,容器没有资源限制,会在宿主机内核调度允许的情况下,尽可能多的占用给的资源。Docker提供了能控制容器使用CPU、内存、IO等的方法。
内存一旦发生OOME,任何进程都有可能被杀死,包括docker daemon在内为此,Docker特地调整了docker daemon的OOM优选级,以免它被内核“正法,但容器的优选级并未被调整
–memory-swap
设置--memory-swap时要先设置-m
CPU
常用小结
选项
描述
-m,–memory
容器可以使用的最大内存量
–memory-swap
允许交换到磁盘的内存量
–memory-swappiness=<0-100>
容器使用swap分区交换的百分比(0-100,默认为-1)
–oom-kill-disable
禁用OOM Killer
–cpus
可以使用的CPU数量
–cpuset-cpus
限制容器使用特定的CPU核心,如(0-3,0,1)
–cpu-shares
CPU共享(相对权重)
Docker 可视化面板
Portainer ...
Docker-05-Docker Registry+Docker Hub
Docker RegistryDocker Registry作为Docker的核心组件之一负责镜像内容的存储与分发,客户端的docker pull以及push命令都将直接与registry进行交互,最初版本的registry由Python实现,由于设计初期在安全性,性能以及API的设计上有着诸多的缺陷,该版本在0.9之后停止了开发,由新的项目distribution(新的docker register被称为Distribution)来重新设计并开发下一代registry,新的项目由go 语言开发,所有的 API,底层存储方式,系统架构都进行了全面的重新设计已解决上一代registry中存在的问题,2016年4月份rgistry 2.0正式发布,docker 1.6版本开始支持registry 2.0,而八月份随着docker 1.8发布,docker hub正式启用2.1版本registry全面替代之前版本registry,新版registry对镜像存储格式进行了重新设计并和旧版不兼容,docker 1.5和之前的版本无法读取2.0的镜像,另外,Registry2.4版本之后支持了回收 ...
Docker-04-镜像与制作
手动制作Docker镜像有没有内核?
从镜像大小上面来说,一个比较小的镜像只有十几MB,而内核文件需要一百多兆,因此镜像里面是没有内核的,镜像在被启动为容器后将直接使用宿主机的内核,而镜像本身则只提供相应的rootfs,即系统正常运行所必须的用户空间的文件系统,比如/dev/ , /proc,/bin,/etc等目录,所以容器当中基本是没有/boot目录的,而/boot当中保存的就是与内核相关的文件和目录。
为什么没有内核?由于容器启动和运行过程中是直接使用了宿主机的内核,所以没有直接调用过物理硬件,所以也不会涉及到硬件驱动,因此也用不上内核和驱动,另外有内核的那是虚拟机。
手动制作yum版nginx镜像Docker制作类似于虚拟机的模板制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将虚拟机再提交为模板,最后再批量从模板批量创建新的虚拟机,这样可以极大的简化业务中相同环境的虚拟机运行环境的部署工作,Docker的镜像制作分为手动制作和自动制作(基于DockerFile),企业通常都是基于Dockerfile制作镜像,其中手动制作镜像步骤具体如下:
下载 ...
Docker-03-网络部分
介绍
None:不为容器配置任何网络功能,–net=none
Bridge:Docker设计的NAT网络模型(默认)
Container:与另一个运行中的容器共享Network Namespace,–net=container:containerID(K8S)
Host:与宿主机共享Network Namespace,–net=host 性能最高
12345678910111213141516171819# 启动一台容器[root@docker01 ~]# docker run -d -P --name tomcat01 tomcat# 查看容器的网卡信息[root@docker01 ~]# docker exec -it tomcat01 ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0. ...