安全方面知识教程集合
简介
- OpenSSL是SSL/TLS协议的实现工具
- key是私钥文件,用于对发送给客户端的数据加密,以及对从客户端接收的数据进行解密。
- csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名。
- crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
成为CA颁发机构(生成根证书)
自签CA证书,需要将证书安装在客户端
生成根证书私钥
openssl genrsa -des3 -out MySuperCA.origin.key 2048
本文主要记录在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=....来改变默认的分割符、换行符等。
备份过程
- 先发出一条 flush tables 关闭实例上所有打开的表
- 创建一个全局锁,FLUSH TABLES WITH READ LOCK获得 db 一致性状态。
- 设置事务隔离级别为 RR ,确保备份事务中任何时刻的数据都相同。
- 创建一个 RR 级别的事务一致性快照 ,执行START TRANSACTION
/*!40100 WITH CONSISTENT SNAPSHOT */
- 根据参数–master-data=2 打印 SHOW MASTER STATUS 获取文件名和位置点信息。
- 执行UNLOCK TABLES 释放锁。
- 在开始做所有的事情之前创建了一个事务的还原点,然后先备份一张表,然后再回到事务的还原点,再继续备份下一张表,一直这样重复直到所有的表备份完成。最后把事务还原点释放掉。然后把这个事务 rollback 掉就可以了。
优缺点
优点:
mysqldump的优点就是逻辑备份,把数据生成SQL形式保存,在单库,单表数据迁移,备份恢复等场景方便,SQL形式的备份文件通用,也方便在不同数据库之间移植。对于InnoDB表可以在线备份。
缺点:
mysqldump是单线程,数据量大的时候,备份时间长,甚至有可能在备份过程中非事务表长期锁表对业务造成影响(SQL形式的备份恢复时间也比较长)。mysqldump备份时会查询所有的数据,这可能会把内存中的热点数据刷掉
在Mac上安装
安装protoc
安装compiler,安装完成后就会有 protoc cli 工具
brew install protobuf
protoc --version # Ensure compiler version is 3+
本文在centos7.9下操作
图形化界面安装
本文安装GNOME Desktop和X Window System
安装 GNOME Desktop
yum groupinstall -y "GNOME Desktop"
专属监控系统部署集合
- 下载目录: ~/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做数据可视化的工作
本教程在centos7.9下操作
InfluxDB介绍
InfluxDB是一种流行的开源时序数据库,专门设计用于处理时间序列数据。时序数据是按时间顺序排列的数据,通常用于表示传感器数据、应用程序指标、日志和事件等。InfluxDB具有高效存储和查询的能力,采用自适应压缩算法和特定的存储引擎,可以高效地存储大量的时序数据,并通过类似SQL的查询语言(InfluxQL)提供丰富的查询功能。它支持高并发写入,适用于处理实时数据流,并可定义数据保留策略自动删除旧数据以控制数据库大小。此外,InfluxDB拥有插件生态系统,可扩展其功能,并具备高可用性和容错性,支持数据复制和故障转移。InfluxDB是influxdata 公司提供的一款专门处理高写入和查询负载的时序数据库,除了InfluxDB外其生态还包括以下组件:
本教程在centos7.9下操作
Node Exporter介绍
Node Exporter处于上面架构图中的 Prometheus Targets: Jobs/Exporters部分
这是一个由Prometheus官方出品的Exporter,可以收集机器上公开的硬件和操作系统指标
包括但不限于 CPU使用情况,内存使用情况,磁盘、网络I/O
本教程在centos7.9下操作
Prometheus介绍
Prometheus是Cloud Native Computing Foundation项目,是一个系统和服务监视系统。
它以给定的时间间隔从已配置的目标收集指标,显示结果,实现告警。
Prometheus适用于
- 用来做机器状态或者服务状态的监控
- 单机部署时不依赖其他网络存储和服务,用来快速排查问题