MySQL-InnoDB存储引擎&优化
存储引擎目标:熟悉InnoDB核心原理:ACID MVCC,事务,锁等
介绍类似于Linux系统中文件系统
功能
数据读写
数据安全和一致性
提高性能
热备份
自动故障恢复
高可用方面支持 等.
种类Oracle的MySQL的引擎
InnoDB
MyISAM
CSV
MEMORY
ARCHIVE
1234mysql> show engines; //查看支持的存储引擎 mysql> select table_schema,table_name ,engine //查看所有InnoDB的表from information_schema.tables where engine='innodb';
说明:存储引擎是作用在表上的,也就意味着,不同的表可以有不同的存储引擎类型。
其他MySQL的引擎
PerconaDB:默认是XtraDB
MariaDB:默认是InnoDB
其他的存储引擎支持:
TokuDB
RocksDB
MyRocks
以上三种存储引擎的共同点:压缩比较高,数据插入性能极高现在很多的NewSQL,使用比较多的 ...
企业级备份方案x3
全网 Rsync 备份解决方案项目需求 对本项目中 web01、web02 服务器重要数据定时备份推送至后端 backpack 服务器 上。
要求如下 每天晚上 00 点整在 web 服务器上打包备份系统配置文件、网站程序目录及访问日 志并通过 rsync 命令推送到服务器 backup 上备份保留(备份思路可以是先在本地按日 期打包,然后再推到备份服务器 B 上)
服务器主机名分别为 web01、web02、backup 、nfs01,主机信息见下表:
服务器说明
外网 IP(NAT) SSH 用
内网 IP(NAT)交换数据用
主机名
Nginx web 服务器
10.0.0.7/24
172.16.1.7/24
web01
Nginx web 服务器
10.0.0.7/24
172.16.1.8/24
web02
NFS 存储服务器
10.0.0.31/24
172.16.1.31/24
nfs01
Rsync 备份服务器
10.0.0.41/24
172.16.1.41/24
back ...
MySQL索引&执行计划分析
索引的作用提供了类似于书中目录的作用,目的是为了优化查询
索引的种类(算法)
B树索引
Hash索引
R树
Full text
GIS
B树 基于不同的查找算法分类介绍
B tree生成过程:
leaf节点:每个page为16kb,其中均匀的存放“盒子”,盒子中存放数据。每个盒子都有自己的编号。被称为叶子节点。
internal节点:枝节点会将每个叶子节点所存放的最小值提取出来集中存放,存放的位置被称为枝节点。
root节点:提取枝节点的最小值,落到根节点上。
B tree工作过程:例如读取数据x:
遍历根节点,找到符合条件的数据索引
根据索引提供的对应的指向枝节点的指针找到对应的枝结点page
在枝节点page中再进行比对,找到对应叶结点所在page在page中存放着数据的页码
根据页码找到对应的存放数据的page
b+tree:
相邻的叶结点直接互相存在指针,减少遍历根节点和枝节点的重复劳动。相当于章节结尾的导读,优化范围查找
b*tree:
相邻枝节点也存在相互的指针,优化范围查找
功能上的分类辅助索引(S)怎么构建B树结构的?(1)辅助索引是基于表的任意列 ...
Zabbix-实现邮件+微信告警
邮件告警定义发件人管理 > 报警媒介类型 > Email
发件测试:
定义收件人
个人资料 > 报警媒介 > 添加
确保动作已启用
压力测试:1ab -n 10000 -c 4000 http://10.0.0.53/
发信日志报表 > 动作日志
邮件格式配置 > 动作 > 操作
微信告警加入企业微信关注微工作台
创建企业应用进入企业微信后台 > 应用管理 > 自建应用获取企业应用信息:
上传python脚本1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#!/usr/bin/env python#-*- coding: utf-8 -*-#author: yanggd#date: 2018-04-20#comment: zabbix接入微信报警脚本import requestsimport sysimport osimport jsonimport logginglogging.basicConfig(le ...
Zabbix-自定义监控项、触发器、告警
Zabbix监控的添加顺序
添加主机组
添加主机
添加监控项目
根据监控项目可以添加图形或者触发器
监控需求
监控主机是否存活
监控主机的端口是否能通
示例:第一步:添加主机组:配置 > 主机群组 > 创建主机群组
ps:主机组名字建议以业务或功能进行区分,如www,或数据库
第二步:创建监控主机配置 > 主机 > 创建主机
主机名称 //被监控主机名
群组 //主机组
接口
Agent interfaces [zabbix提供一个agent客户端,安装在linux/win等]
SNMP interfaces [使用snmp协议监控路由交换]
JMX interfaces [监控java进程]
IPMI interfaces [监控硬件信息]
克隆添加主机配置 > 主机 > 想要克隆的主机 > Clone
zabbix-agent监控主机:被监控主机安装zabbix客户端zabbix-agent和zabbix-server在同一台机器
123rpm -ivh https://mirrors-i.tuna.tsinghua.edu ...
Zabbix-初始配置&解决4.4版本中文乱码
1.禁用默认的Zabbix Server主机的监控Configuration > Hosts > 勾选Zabbix server > Disable
2.禁用guest用户Administration > User groups > 勾选Guests > Disable
3.更改admin的密码,防止弱口令爆破Administration > Users > Admin > Change password
4.更改语言Administration > Users > Admin > Language
5.中文乱码问题
下载字体包:https://github.com/maxsky/Yahei-Monaco-Hybrid-Font/archive/master.zip
上传字体:/application/nginx-1.16.1/html/zabbix/assets/fonts/YaHeiMonacoHybrid.ttf
修改字体:
1sed -i 's#DejaVuSans#YaHeiMonacoHy ...
Zabbix-LNMP环境下zabbix4.4的编译安装
安装要求硬件选型内存和磁盘:
Zabbix 运行需要物理内存和磁盘空间。如果刚接触 Zabbix,128 MB 的物理内存和 256 MB 的可用磁盘空间可能是一个很好的起点。 然而,所需的内存和磁盘空间显然取决于被监控的主机数量和配置参数。 如果您计划调整参数以保留较长的历史数据,那么您应该考虑至少有几 GB 磁盘空间,以便有足够的磁盘空间将历史数据存储在数据库中。
每个 Zabbix 守护程序进程都需要与数据库服务器建立多个连接。 为连接分配的内存量取决于数据库引擎的配置。
CPUZabbix,尤其是 Zabbix 数据库可能需要大量 CPU 资源,该具体取决于被监控参数的数量和所选的数据库引擎。
其他硬件如果需要启用短信(SMS)通知功能,需要串行通讯口(serial communication port)和串行GSM调制解调器(serial GSM modem)。USB转串行转接器也同样可以工作。
硬件资源配置参考下表提供了几个硬件配置参考:
规模
平台
CPU/内存
数据库
受监控的主机数量
小型
CentOS
Virtual Appliance
MySQ ...
Git-Gitlab基本使用
Gitlab服务运维:123456789101112ll /opt/gitlab/ #gitlab程序安装目录ll /var/opt/gitlab/git-data/repositories/ #所有项目都在存放在此目录,存放仓库数据ll /var/log/gitlab/ #所有服务日志目录查看状态:gitlab-ctl status单独停掉ngixn:gitlab-ctl stop nginx查看所有服务日志:gitlab-ctl tail
Git-C7下Gitlab-12.3.5安装
GitLab 概述: 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。
GitLab 拥有不 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。GitLab 中文网:https://www.gitlab.cc/installation/#centos-7
GitHub 和 GitLab 的区别:相同点:
二者都是基于 web 的 Git 仓库,在很大程度上 GitLab 是仿照 GitHub 来做的,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。
不同点:
GitHub 如果要使用私有仓库,超过 3 个人就收费。GitLab 可以在上面创建私人的克费仓库。
GitLab 让开发团队 ...
ELK-Elasticsearch介绍与安装
什么是倒排索引
信息存储到es时,首先把每条语句分成一个一个的词语
根据搜索的内容,进行分配,有匹配到的权重+1
把匹配到的语局给呈现出来
elasticsearch介绍elasticsearch应用场景
电商平台
高亮显示搜索的词条信息
日志分析elk
elasticsearch特点
高性能:es可以支持一主多从,水平扩展方便
高可用性:一个主节点宕机后不影响用户的使用。
用户使用方便快捷:es采用Java开发,即使不懂Java代码,一样可以使用
功能丰富,配置简单
采用restful封装的接口,可以通过http发起请求
elasticsearch部署方法
安装方式
优点
对运维的要求
docker
部署方便、开箱即用、启动迅速
需要会docker知识、需要制作镜像、修改配置麻烦、数据需要挂载目录
tar
部署灵活、对系统侵占性小
需要写启动脚本文件、目录需要提前规划
rpm
部署方便、启动脚本安装即用、存放目录标准化
软件各个组件分散在不同的目录、卸载不彻底、默认配置需要修改
ansible
极其灵活、批量部署速度快
需要学习ansible语法、需要提前 ...
information_schema.tables基础应用
information_schema.tables基础应用
虚拟库创建视图:12345CREATE VIEW test AS SELECT world.city.`Name`,world.country.`Code`,world.city.Population FROM world.cityJOIN world.countryON world.city.CountryCode = world.country.`Code`WHERE world.city.Population<100;
调用视图:1SELECT * FROM test;
元数据? —-> “基表”(无法直接查询和修改的) —-> DDL 进行元数据修改 —-> show ,desc(show),information_schema(全局类的统计和查询)
information_schema12345678DESC information_schema.tables;重要列:TABLE_SCHEMA #表所在的库TABLE_NAME #表名ENGINE ...
DQL-多表联查
多表联查过程
首先找到需要的关联表
找到关联列(不同表中有关系的列)
join on关联起来
where进行定位
group_by进行站队
order by进行排序
举例环境准备:school库备份
school库介绍course 课程
sc 成绩
student 学生表
teacher 教师表
传统连接#例1:查询world库中人口数小于100的城市
1SELECT name,CountryCode FROM world.city WHERE Population<100;
#人口数小于100人的城市,所在国家的国土面积(城市名,国家名,国土面积)多表连接查询 传统连接:基于WHERE条件 1.找表之间的关系列 2.排列查询条件
12345678DESC world.country;SELECT name,CountryCode FROM world.city WHERE Population<100;SELECT name,SurfaceArea FROM world.country WHERE Code='PCN'合并SELECT wor ...
MySQL-DQL
环境准备:world库备份下载:网页连接
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455mysql> show tables;+-----------------+| Tables_in_world |+-----------------+| city || country || countrylanguage |+-----------------+3 rows in set (0.00 sec)mysql> desc city;+-------------+----------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+----------+------+-----+-------- ...
SQL初识
SQL介绍结构化查询语言。5.7 版本加入了SQL Mode 严格模式
SQL作用SQL 用来管理和操作MySQL内部的对象SQL对象:
库:库名,库属性
表:表名,表属性,列名,记录,数据类型,列属性和约束
SQL语句的类型
DDL:数据定义语言 data definition language
DCL:数据控制语言 data control language
DML:数据操作语言 data manipulation language
DQL:数据查询语言 data query language
数据类型
作用:
控制数据的规范性,让数据有具体含义,在列上进行控制
种类字符串
char(32):
定长长度为32的字符串。
存储数据时,一次性提供32字符长度的存储空间,存不满,用空格填充。
varchar(32):
可变长度的字符串类型。
存数据时,首先进行字符串长度判断,按需分配存储空间
会单独占用一个字节来记录此次的字符长度。超过255之后,需要两个字节长度记录字符长度。
面试题:
char 和varchar的区别?
255 655 ...
MySQL多实例配置
创建目录mkdir -p /data/330{7,8,9}/data生成各自实例数据存储目录
准备配置文件123456789101112131415161718192021222324252627282930313233#3307实例cat > /data/3307/my.cnf <<EOF[mysqld]basedir=/application/mysql #软件目录datadir=/data/3307/data #本实例数据目录socket=/data/3307/mysql.sock #本实例socket文件log_error=/data/3307/mysql.logport=3307server_id=7log_bin=/data/3307/mysql-binEOF#3308实例cat > /data/3308/my.cnf <<EOF[mysqld]basedir=/application/mysqldatadir=/data/3308/datasocket=/data/3308/mysql.socklog_error ...
MySQL基础管理
用户 权限管理用户管理
作用:登录,管理数据库对象。(逻辑结构)
用户的定义mysql的用户格式:root@'localhost',用户名@白名单。
123456789白名单例: oldguo@'10.0.0.51' oldguo@'10.0.0.%' oldguo@'10.0.0.5%' oldguo@'10.0.0.0/255.255.254.0' oldguo@'%' oldguo@'oldguo.com' oldguo@'localhost' oldguo@'db01'
用户管理语句
创建用户:
12mysql> create user felix@'172.16.1.%' identified by '123';Query OK, 0 rows affected (0.00 sec)
查看mysql库中user表中的列mysql> desc mysq ...
PAM认证机制
介绍PAM:Pluggable Authentication Modules认证库:文本文件,MySQL,NIS,LDAP等
Sun公司于1995 年开发的一种与认证相关的通用框架机制
PAM 是关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开
使得管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序
一种认证框架,自身不做认证
它提供了对所有服务进行认证的中央机制,适用于本地登录,远程登录,如:telnet,rlogin,fsh,ftp,点对点协议PPP,su等应用程序中,系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块(主要调用函数pam_sm_xxxx( )供PAM接口库调用,将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来
PAM架构
pam认证原理PAM认证一 ...
MySQL体系结构
MySQL C/S结构
两类连接方法:针对本地用户,针对网络用户。
TCP/IP方式(远程、本地):mysql -uroot -poldboy123 -h 10.0.0.51 -P3306
Socket方式(仅本地):mysql -uroot -poldboy123 -S /tmp/mysql.sock
MySQL实例的构成公司:老板 + 经理 + 员工 + 办公区实例:mysqld+master thread +干活的Thread+预分配的内存
MySQL中mysqld服务器进程结构SQL语句引入(结构化的查询语句)SQL语言共分为四大类
数据查询语言DQL
数据操纵语言DML
数据定义语言DDL
数据控制语言DCL
数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
数据操纵语言DML数据操纵语言DML主要有三种形式:
插入:INSERT
更新:UPDATE
删除:DELETE ...
Playbook剧本编排构建rsync+nfs+rersync
主机列表如下:123456789101112[felix]172.16.1.7:52113172.16.1.8:52113172.16.1.31:52113172.16.1.41:52113[nfs]172.16.1.31172.16.1.32[backup]172.16.1.41[web]172.16.1.[7:8]
实现:第一步准备环境:当然ansible的密钥已经向节点批量分发完毕测试所有受管节点是否存活:
1234567891011121314151617181920212223242526272829[root@m01 ~]# ansible all -m ping 172.16.1.7 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping&q ...
MySQL安装及初始化配置
安装解压软件123456[root@db02 /server/tools]# yum install -y ncurses-devel libaio-devel #安装依赖[root@db02 /server/tools]# mkdir /application/ #规范安装目录[root@db02 /server/tools]# ll总用量 629756-rw-r--r-- 1 root root 644869837 11月 28 11:51 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz[root@db02 /server/tools]# tar -xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /application/
处理mariadb123[root@db02 ~]# rpm -qa |grep mariadbmariadb-libs-5.5.60-1.el7_5.x86_64 #mariadb的配置文件(/etc/my.cnf)会影响刚才安装的mysql的初始化操作rpm ...