运维

删除 Windows Server Backup 的历史备份文件

Windows Server Backup 工具可以用来生成系统备份,设置定时自动备份。 但是它的 GUI 中居然没有删除旧备份,以及设置只保留多少个备份的选项!   在中文互联网上搜索了半天如何“删除 windows server backup 备份”,出来的都是互相抄袭的错误答案。说是使用 diskshadow 模式来进行删除。 虽然在 diskshadow 模式下, list shadows […]

CTF 流量分析

Wireshark 主窗口 注意,数据包详情面板中展示的信息是经过 Wireshark 解析并”格式化”过的,方便阅读。最下面的数据包字节面板里才是这个包的真实数据。 过滤器栏 在主窗口的过滤器栏中输入过滤指令来筛选数据。 常用过滤指令 ip 地址筛选 ip.addr == x.x.x.x 筛选 ip 地址为 x.x.x.x 的(包括源 ip 地址与目标

Linux 三种设置环境变量的方法

一、命令前置的临时环境变量 网上一搜一大把都是说 export 命令与 .bash_profile 文件的,却鲜有人提及可以在命令行语句前设置临时环境变量,并且该变量只对当前语句有效。 # usage: var=value [var2=value2 …] script var=value sh -c ‘echo $var’ # 打印 value

nginx、php-fpm、php 错误日志的关系

nginx、php-fpm、php 三者的配置文件中都有 error_log 项,指定各自错误日志的保存路径。理论上它们三者的错误应该不会重合,即 nginx error_log 记录的是 nginx 进程自己的错误,php-fpm error_log 记录的是 php-fpm 进程自己的错误, php error_log 记录的是 php 脚本执行时候的错误。 用户访问 nginx

提高https载入速度,记一次nginx升级优化

1. 发现问题 两年前就把我的 hawu.me 开启了 https,用的 Let’s Encrypt 的免费证书。但因为只是自用,而且由于墙的原因,从来没有留意过加载速度慢的问题。今天特意观察了一下,初次打开网站居然要耗时4、5秒,这还不包括加载资源的时间。 使用 Chrome 的开发者工具看了下耗时: 在初次建立连接的时候,Initial connection 与 SSL 时间居然都用到了4秒 (\”▔□▔)汗。Chrome 开发者工具这里的 Initial

homebrew使用

替换源 brew 的源国内下载特别慢,所以通常要替换国内镜像。参考homebrew中科大镜像。 检查当前源 cd “$(brew –repo)” git remote get-url origin 列出已安装项目 brew list 升级 Homebrew 自身 brew update 列出可更新的项目

snmpd配置

最近在看snmp相关的知识,在centos上安装的snmpd进行测试。 执行如下三条指令 # 查看所有OID snmpwalk -v 2c -c public localhost # 查看系统基本信息 snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.1.1.0 #

PostgreSQL数据库复制

这篇博客的行文可能有点“官方”,因为是之前为了发期刊而写的初稿。 postgersql是一款功能强大的开源数据库系统。它基于并扩展了SQL语言,使之支持更复杂的数据类型。它提供了丰富的接口,可以很容易地扩展它的功能,比如最知名的地理空间数据库扩展PostGIS。PostgreSQL以其稳定性、可扩展性以及软件背后开源社区的奉献精神而赢得了良好的声誉,并得到了广泛的应用。 数据库复制是指在多个数据库节点之间完整一致地共享数据的过程。不论其具体使用场景如何,数据库复制的目的都是为了实现数据库的高可用性与负载均衡。高可用性是指当主节点失效的时候,备用节点能快速接手工作;负载均衡是指将工作分流给多个节点,以平衡每个节点的压力。 我们希望多个数据库节点可以无缝地协同工作,但是实际上,只有用做只读服务器的节点能够相对容易的结合在一起。大部分情况下,数据库收到的请求都是读写混合的,对于任意节点的一次写入动作必须实时的传播给其他节点,这样才能保证后续对任意节点的读取请求能够返回一致的结果。如何保证多个节点的数据一致性是数据库复制技术的难题,也是数据库协同工作的核心。PostgreSQL支持多种实现数据库复制的技术方案,每种方案都各有其优缺点,都是为了满足特定环境下的特定需求。 有的方案只允许在一个节点上进行写操作,这个可写的节点称为主节点(主服务器)。其他从主节点复制数据的则称为从节点(从服务器)。另外,从节点又根据其是否可读分为温备与热备。温备是指从节点只有当被提升为主节点的时候才允许用户连接进行读写操作,热备是指从节点任何时候都可以处理读取请求。除了主从复制方案,有时候我们会需要双向复制方案,来实现任意节点都可读写的需求。 有的方案是同步复制的,即一个数据修改事务只有到所有节点均提交了该事务后才能被认为是提交成功的。相反有些方案是异步的,即允许事务在某个节点上的提交与它被传播到其他节点之间存在延迟。异步复制会导致在某些时刻两个节点的数据不一致,但是它对于网络延迟的要求比同步复制宽容的多。 有的方案只能对整个数据库节点进行复制,有的则允许细分到每个库,甚至每张表的复制。 1 流复制 1.1 预写式日志(WAL) 预写式日志(WAL, Write Ahead Log)是PostgreSQL内置复制技术的基石,其作用与Oracle数据库的重做日志类似,都是用于保证数据的一致性以及事务的完整性。WAL的核心概念是数据文件的修改必须在这些动作被日志记录之后才被写入[1]。只要有了数据库的一个早期基础备份,以及后续的WAL文件,那么不论是在系统崩溃需要恢复的时候,还是在另一台机器重建数据库的时候,都可以很容易的通过重放WAL中的日志项来还原数据库,达到WAL记录中任意时间点的状态。我们将这种恢复数据库的方案叫做时间点恢复(PITR, Point In Time Recovery),这也是PostgreSQL流复制与逻辑复制的基本原理。 WAL文件被存储在数据库目录的pg_wal子目录下,默认大小为16MB。可以通过postgresql.conf配置文件中的wal_level配置项来决定有多少日志信息输出到WAL中。wal_level分为三个等级,minimal表示只输出最基本的日志信息,以供系统崩溃或异常停机时候恢复数据所用;replica表示输出足够的日志信息以支持WAL归档和复制,这是WAL的默认等级;logical表示增加支持逻辑解码所需的信息,这是PostgreSQL内置的逻辑复制需要的等级。

postgresql的pg_hba.conf

初识postgresql的时候,觉得它的连接认证真几把烦人。每次也都是直接在网上搜索复制,不求甚解。今天安装bucardo做双主复制的时候,又被这个连接认证搞的头疼。索性好好试验了一方,才发现网上根本就没人好好说过ident连接方式失败的原因,全是复制文。。。哎。 先贴上官方文档:https://www.postgresql.org/docs/10/auth-pg-hba-conf.html 在实际使用时候,通常只会用到下面这种格式: # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all