跳至主要內容
Zhengcog's Blog

Zhengcog's Blog

少壮不努力,老大敲代码

安全

安全方面知识教程集合


zhengcog...小于 1 分钟安全安全SSL
使用openssl自签证书

简介

  • OpenSSL是SSL/TLS协议的实现工具
  • key是私钥文件,用于对发送给客户端的数据加密,以及对从客户端接收的数据进行解密。
  • csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名。
  • crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

成为CA颁发机构(生成根证书)

自签CA证书,需要将证书安装在客户端

生成根证书私钥

openssl genrsa -des3 -out MySuperCA.origin.key 2048

zhengcog...大约 4 分钟安全服务器证书SSL
Mysql备份与恢复

本文主要记录在centos7.9备份mysql8.0方法

一 通过mysqldump备份

此备份为逻辑备份

mysqldump重要参数说明

  • --single-transaction:在备份开始前,先执行 START TRANSACTION命令,以此来获得备份的一致性,当前该参数只对 InnoDB存储引擎有效。当启用该参数并进行备份时,确保没有其他任何的DDL语句执行,因为一致性读并不能隔离DDL操作。
  • --lock-tables(-1):在备份中,依次锁住每个架构下的所有表。一般用于 MyIsAM存储引擎,当备份时只能对数据库进行读取操作,不过备份依然可以保证一致性。对于 InnoDB存储引擎,不需要使用该参数,用- - single-transaction即可。并且--lock-tables和--single-transaction是互斥( exclusive)的,不能同时使用。如果用户的 MySQL数据库中,既有 MyISAM存储引擎的表,又有 InnoDB存储引擎的表,那么这时用户的选择只有--lock-tables了。此外,正如前面所说的那样,--lock-tables选项是依次对每个架构中的表上锁的,因此只能保证每个架构下表备份的一致性,而不能保证所有架构下表的一致性。
  • --lock--all-tables(-x):在备份过程中,对所有架构中的所有表上锁。这个可以避免之前说的- lock-tables参数不能同时锁住所有表的问题。
  • -add-dop-database:在 CREATE DATABASE前先运行 DROP DATABASE。这个参数需要和--all-databases或者--databases选项一起使用。在默认情况下,导出的文本文件中并不会有 CREATE DATABASE,除非指定了这个参数。
  • --master-data[=value]:通过该参数产生的备份转存文件主要用来建立一个replication。当value的值为1时,转存文件中记录CHANGE MASTER语句。当value的值为2时, CHANGE MASTER语句被写出SQL注释。在默认情况下,value的值为空。当 value值为1时,在备份文件中会看到:CHANGE MASTER TO MASTER_LOG_FILE='xen-server-bin.000006',MASTER_LOG_POS=8095;当 value为2时,在备份文件中会看到 CHANGE MASTER语句被注释了。
  • --master-data:会自动忽略--lock-tables选项。如果没有使用--single-transaction选项,则会自动使用--lock-all-tables选项。
  • --events(-E):备份事件调度器。
  • --routines(-R):备份存储过程和函数。
  • --triggers:备份触发器。
  • --hex-blob:将 BINARY、 VARBINARY、BLOG和BIT列类型备份为十六进制的格式。 mysqldump导出的文件一般是文本文件,但是如果导出的数据中有上述这些类型,在文本文件模式下可能有些字符不可见,若添加--hex-blob选项,结果会以十六进制的方式显示。
  • --tab=path(- T path):产生TAB分割的数据文件。对于每张表, mysqldump创建一个包含 CREATE TABLE语句的 table_name. sql文件,和包含数据的tbl_name. txt文件。可以使用--fields-terminated-by=.…,--fields-enclosed-by=.…,--fields-optionally-enclosed-by=....,--fields-escaped-by=....,--lines-terminated-by=....来改变默认的分割符、换行符等。

备份过程

  1. 先发出一条 flush tables 关闭实例上所有打开的表
  2. 创建一个全局锁,FLUSH TABLES WITH READ LOCK获得 db 一致性状态。
  3. 设置事务隔离级别为 RR ,确保备份事务中任何时刻的数据都相同。
  4. 创建一个 RR 级别的事务一致性快照 ,执行START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
  5. 根据参数–master-data=2 打印 SHOW MASTER STATUS 获取文件名和位置点信息。
  6. 执行UNLOCK TABLES 释放锁。
  7. 在开始做所有的事情之前创建了一个事务的还原点,然后先备份一张表,然后再回到事务的还原点,再继续备份下一张表,一直这样重复直到所有的表备份完成。最后把事务还原点释放掉。然后把这个事务 rollback 掉就可以了。

优缺点

优点:
mysqldump的优点就是逻辑备份,把数据生成SQL形式保存,在单库,单表数据迁移,备份恢复等场景方便,SQL形式的备份文件通用,也方便在不同数据库之间移植。对于InnoDB表可以在线备份。

缺点:
mysqldump是单线程,数据量大的时候,备份时间长,甚至有可能在备份过程中非事务表长期锁表对业务造成影响(SQL形式的备份恢复时间也比较长)。mysqldump备份时会查询所有的数据,这可能会把内存中的热点数据刷掉


zhengcog...大约 10 分钟数据库数据库mysql
安装GRPC环境

在Mac上安装

安装protoc

安装compiler,安装完成后就会有 protoc cli 工具

brew install protobuf
protoc --version  # Ensure compiler version is 3+

zhengcog...小于 1 分钟golangGRPC
GNOME图形化界面安装使用

本文在centos7.9下操作

图形化界面安装

本文安装GNOME Desktop和X Window System

安装 GNOME Desktop

yum groupinstall -y "GNOME Desktop"

zhengcog...大约 4 分钟Linux
监控系统

专属监控系统部署集合

  • 下载目录: ~/Downloads
  • 软件安装目录:/usr/local/

Prometheus + Grafana 监控系统

总体架构图
总体架构图

给上图各部分做个简单的介绍

  • Prometheus Server: Prometheus服务端,由于存储及收集数据,提供相关api对外查询用。
  • Exporter: 类似传统意义上的被监控端的agent,有区别的是,它不会主动推送监控数据到server端,而是等待server端定时来收集数据,即所谓的主动监控。
  • Pushagateway: 用于网络不可直达而居于exporter与server端的中转站。
  • Alertmanager: 报警组件
  • Web UI: Prometheus的web接口,可用于简单可视化,及语句执行或者服务状态监控。
  • PromQL: 类似于SQL(其实并不是SQL)的查询语言,用于获取计算Prometheus的监控数据
  • Grafana: 替换Prometheus Web UI做数据可视化的工作

zhengcog...小于 1 分钟监控服务器
Grafana安装

本教程在centos7.9下操作

Grafana介绍

Grafana是一个监控用的仪表盘工具,主要处理监控数据的可视化,附带着能做一些简单的告警功能。

官方演示DEMO

开始安装

官方下载说明


zhengcog...大约 1 分钟监控服务器
InfluxDB 2.x教程

本教程在centos7.9下操作

InfluxDB介绍

InfluxDB是一种流行的开源时序数据库,专门设计用于处理时间序列数据。时序数据是按时间顺序排列的数据,通常用于表示传感器数据、应用程序指标、日志和事件等。InfluxDB具有高效存储和查询的能力,采用自适应压缩算法和特定的存储引擎,可以高效地存储大量的时序数据,并通过类似SQL的查询语言(InfluxQL)提供丰富的查询功能。它支持高并发写入,适用于处理实时数据流,并可定义数据保留策略自动删除旧数据以控制数据库大小。此外,InfluxDB拥有插件生态系统,可扩展其功能,并具备高可用性和容错性,支持数据复制和故障转移。InfluxDB是influxdata 公司提供的一款专门处理高写入和查询负载的时序数据库,除了InfluxDB外其生态还包括以下组件:


zhengcog...大约 4 分钟监控服务器
Node Exporter安装

本教程在centos7.9下操作

Node Exporter介绍

Node Exporter处于上面架构图中的 Prometheus Targets: Jobs/Exporters部分

这是一个由Prometheus官方出品的Exporter,可以收集机器上公开的硬件和操作系统指标

包括但不限于 CPU使用情况,内存使用情况,磁盘、网络I/O


zhengcog...大约 2 分钟监控服务器
Prometheus安装

本教程在centos7.9下操作

Prometheus介绍

Prometheus是Cloud Native Computing Foundation项目,是一个系统和服务监视系统。

它以给定的时间间隔从已配置的目标收集指标,显示结果,实现告警。

Prometheus适用于

  • 用来做机器状态或者服务状态的监控
  • 单机部署时不依赖其他网络存储和服务,用来快速排查问题

zhengcog...大约 8 分钟监控服务器
2
3
4
5
...
21