关于日志流量监控预警小小项目 | 环境基础 2

Mysql:方便数据的持久化

MySQL的内容:

  1. 安装
    1. 版本:5.7.34 二进制安装
      1. 商业版 收费   社区版 免费
      2. MySQL支持分布式和集群 如:阿里 腾讯 百度 美团 小米等都是用的MySQL
    2. 脚本安装  安装包去mysql官网
  2. 建表建库

库在mysql里面就相当于一个文件夹,是存放数据的地方

建库:create database 库名;

查库:use 库名;

#创建表

create table nginxlog (

id  int primary key auto_increment,

dt  datetime not null,

prov int ,

isp  int,

bd  float(带宽)

) CHARSET=utf8;

表:具体存放数据的一个文件,可以理解为一个只有MySQL能读懂的文件,数据一行一行的存放在这个文件里

查看表:show tables;

字段:一个字段就是一列

primary key:做主键(这一列的每一行不能一样)

auto_increment:自增

datetime:会记录年月日 小时分钟秒

not null:代表这一列不能为空

CHARSET=utf8设置字符集为utf8

desc 表明;查看这个表的结构

show create table 表名:查看创建这个表的初始语句

drop table 表名;删除表

drop database 库名;删除库(包括里面所有的表)

select * from 表名;查询这个表内的所有数据(*表示所有的字段 也可以选择一个或多个字段 用逗号隔开)

insert into 表明(一个或多个字段) values(每个值用逗号隔开,字符串用冒号引起来),(),(); 插入多条数据(前面和后面一一对应)

varchar(设置最多的长度):可变长的字符串  

row 行

record 记录 也就是一行一行

/data/mysql:数据目录里面有两种结构

.frm存放表结构

.ibd 存放索引和真正数据的

删除数据:delete from 表名 where 条件(如id=2);

修改数据:update 表名 set 修改值(如 isp=3) where 条件(如 id=3);

  1. 增删改查
  2. Pymysql库的使用

Mysql的配置文件:/etc/my.cnf

数据目录:/data/mysql

Mysql两个主流版本:5.7.34(稳定)8.0.27(新功能 不稳定)

Python的pymysql库:python里操作MySQL的库(增删改查)

‘root@localhost’:只允许在本机登录 不能在远程登录

创建用户和授权

这两个用户不是一个用户(一个是0网段的用户 还有一个是任意网段连过来的用户)

第一个sc的用户优先级低于下面的(因为下面的那个用户更加精准 故优先级更高)

远程登录的时候会自动连接优先级更加高的

grant all on *.* to 'sc'@'%';

作用:给与‘sc’@‘%’这个用户所有的权限(除了增删改查) 包括增删改查

grant是授权的命令

all 代表所有的权限,包括增删改查,但是不包括grant权限

on *.*:在所有的库上,操作所有的表 (第一个*代表库 第二个*代表所有的表)

to ‘sc’@‘%’ 表示给这个用户

grant在授权的同时还可以给你创建用户:

show warnings;是查看警告

show processlist;查看有些谁远程登录

select version(); 查看数据库的版本

import pymysql

db=pymysql.connect(host='192.168.0.36',user='sc',password='Sanchuang123#',database='mysql')  #创建一个对象 也可以不指定库(这里指定了mysql库,之后就不需要use切换库了)

cursor=db.cursor() #创建一个游标

数据库的游标:只是数据库的一个缓存临时空间,游标就是帮忙执行sql语句的对象

游标名.execute(“sql语句”):返回的数字是得到的结果的行数

游标名.fetchone() 获取一条一条的数据(会有游标记录取到哪一行)

游标名.fetchmany()

游标名.fetchall()  取得所有的数据

关闭连接(游标名一起消失):

连接名.close()

Mysql命令不区分大小写 表名函数名密码等区分大小写

创建hejin库里的nginxlog表

Mysql里面有个now函数 故传值的时候可以now()

数据库的事务:一组(或一个)操作组成一个事务

事务由两个结果:要么全部成功 要么失败

commit 提交:意味着这个事务里所有的操作都成功完成(数据从内存里写到磁盘  最开始数据只会存在内存的buffer里,然后落盘到disk里面 永久保存 持久化)

rollback 回滚(撤销):刚刚做过的事情都撤销,回滚到原来的样子(一个操作失败 三个操作都撤销)

建表建库的操作会自动commit和rollback 不需要我们干预

而动数据的操作(insert update delete ) 就可以使用commit和rollback

try:

   # 执行sql语句

   cursor.execute(sql)

   # 提交到数据库执行

   db.commit()

except:

   # 如果发生错误则回滚

   db.rollback()

只要主键不一样就是不同的记录,主键设定自增的话,不指定就会自动加1

把偏移量自动给kafka保存

判断url get是否请求成功 200代表成功

分表是为了减少存储 方便查阅

#针对于分表,我们的脚本就要进行相应的修改。

#数据插入nginxlog表之前

#1、获取prov_index和isp_index表里的数据

#2、判断要插入的prov和isp在不在表的数据里

#3、如果prov_index和isp_index数据存在,就获取相应的id,再进行存储

#4、如果prov_index和isp_index数据不存在,就把新的数据插入这两张表,然后再获取id字段,进行存储到数据表nginxlog

flush privileges;刷新权限

copy on right:写实复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值