PG技术大讲堂 - 第12讲:PostgreSQL wal作用与管理

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

Part 12:PostgreSQL WAL作用与管理

内容1:WAL物理与逻辑结构

内容2:WAL数据内部布局

内容3:WAL数据写进程

内容4:WAL管理

内容5:WAL归档日志

WAL概述

· 没有WAL的插入操作

· 有WAL的插入操作

· Insert操作与recovery

· 使用WAL进行数据库恢复

事务日志与WAL文件

· 事务日志与WAL 段文件

使用内置函数pg_xlogfile_name(9.6或更早版本)或pg_walfile_name(10或更高版本),我们可以找到包含指定LSN的WAL段文件名。

WAL日志内部布局

· WAL内部布局

· 三类XLOG 数据部分记录 (version 9.5 or later)

写XLOG记录

· 写XLOG记录

WAL写处理

· WAL 写进程

1、At commit

2、When wal buffer full

3、writes periodically

写XLOG记录

· Checkpoint 处理概述

pg_control File

· pg_control File30

即使pg_控制文件存储超过40个项目,需要的三个项目如下所示:

State –最新检查点启动时数据库服务器的状态。总共有七种状态:“启动”是系统正在启动的状态;“关闭”是系统通过shut down命令正常关闭的状态;“生产中”是系统正在运行的状态;依此类推。

Latest checkpoint location –最新检查点记录的LSN位置。

Prior checkpoint location –先前检查点记录的LSN位置。

· 9.7.2. pg_control File

pg_control文件存储位置:

postgres> pg_controldata /usr/local/pgsql/data

pg_control version number: 937

Catalog version number: 201405111

Database system identifier: 6035535450242021944

Database cluster state: in production

pg_control last modified: Mon Apr 27 15:16:38 2020

Latest checkpoint location: 0/C000F48

Prior checkpoint location: 0/C000E70

... snip ...

Database Recovery

· 数据库实例恢复开始位置( 检查点)

· 数据库WAL日志记录

· 利用wal进行数据库恢复

WAL 文件管理

· WAL 日志切换

WAL 满足以下条件发生日志切换:

1、WAL segment has been filled up. 

2、The function pg_switch_wal has been issued.

3、archive_mode is enabled and the time set to archive_timeout has been exceeded.(基于主备复制需求)

· 创建新的WAL日志文件

· WAL日志文件删除与回收(基于一个checkpoint完成过程)

· 文件管理WAL段文件的数量主要由以下三个参数控制:

1、checkpoint_segments (9.5版本后被废弃)

2、checkpoint_completion_target (默认为0.5)

3、WAL_keep_segments

((2+checkpoint_completion_target)×checkpoint_segments+1)

数据库归档

· 归档日志

连续归档是在WAL段切换时将WAL段文件复制到归档区域的功能,由archiver(后台)进程执行。其中,占位符%p是复制的WAL段,而%f是存档日志。

ALTER SYSTEM SET archive_command = 'cp %p /home/postgres/archives/%f';

ALTER SYSTEM SET archive_mod = on;

WAL 文件管理

· 发生切换时归档

· 设置wal相关参数 

设置wal目录最大可用尺寸(默认值为1024MB):max_wal_size 

 设置wal文件最大可用尺寸(默认值为16MB):wal_segment_size 

设置wal缓冲区尺寸(默认值512KB):wal_buffers

往期视频和教程,联系cuug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值