PostgreSQL DBA(33) - HA#2(pg_rewind切换图解)
基于streaming replication搭建的PostgreSQL HA环境,Old Standby节点升级为New Master节点后,时间线会切换为新的时间线,比如从n变为n + 1.而Old Master节点的时间线仍然为原来的时间线,比如仍为n,通过使用pg_rewind工具,可使原来其实"完好"的Old Master成为New Standby节点.
PostgreSQL DBA(32) - HA#1(pg_rewind切换)
基于streaming replication搭建的PostgreSQL HA环境,如出现网络访问/硬件故障等原因导致Standby节点升级为Master节点,但旧Master节点数据库并未损坏,在排除故障后旧Master节点是否不需要通过备份方式重新搭建成为Standby节点呢?答案是肯定的,PG提供了pg_rewind这个工具实现.
PostgreSQL 源码解读(158)-PG Tools#5(pg_basebackup:what does db server do)
PostgreSQL数据库服务器在响应客户端发出备份命令pg_basebackup时,到底做了什么?本节一探究竟.
PostgreSQL 源码解读(157)- 后台进程#9(同步复制主库挂起分析)
在Streaming Replication环境中PostgreSQL主节点设置为同步复制,如standby节点没有启动或者网络出现问题没法连接到主节点时,主节点如执行DML则进程会挂起,下面分析这个挂起的问题.
PostgreSQL 源码解读(156)- 后台进程#8(walsender#4)
上节介绍了PostgreSQL的后台进程walsender中的函数WalSndLoop->WaitLatchOrSocket->WaitEventSetWait->WaitEventSetWaitBlock,在跟踪分析的时候进程退出,现就此问题进行分析.在调用函数ProcessRepliesIfAny后进程退出,因此重点分析ProcessRepliesIfAny函数.
PostgreSQL 源码解读(155)- 后台进程#7(walsender#3)
本节继续介绍PostgreSQL的后台进程walsender,重点介绍的是调用栈中的函数WalSndLoop->WaitLatchOrSocket->WaitEventSetWait->WaitEventSetWaitBlock.
C语言中结构体struct的对齐问题
struct,相互关联的元素的集合,每个元素都有自己的内存空间;每个元素在内存中的存放是有先后顺序的,就是定义时候的顺序;一个struct所占的总的内存大小,并不是各个元素所占空间之和,而是存在字节对齐的问题.struct中的每个元素相对于结构体的首地址的偏移量能被该元素的size整除(某些编译器,如果该元素的size > 4,则偏移量能被4整除即可).测试代码: [xdb@localho
PostgreSQL 源码解读(154)- 后台进程#6(walsender#2)
本节继续介绍PostgreSQL的后台进程walsender,重点介绍的是调用栈中的exec_replication_command和StartReplication函数.
PostgreSQL 源码解读(153)- 后台进程#5(walsender#1)
本节简单介绍了PostgreSQL的后台进程walsender,该进程实质上是streaming replication环境中master节点上普通的backend进程,在standby节点启动时,standby节点向master发送连接请求,master节点的postmaster进程接收到请求后,启动该进程与standby节点的walreceiver进程建立通讯连接,用于传输WAL Record.
PostgreSQL 源码解读(152)- PG Tools#4(ReceiveXlogStream)
本节简单介绍了PostgreSQL的备份工具pg_basebackup源码中实际执行备份逻辑的BaseBackup中对WAL数据进行备份的实现函数StartLogStreamer->LogStreamerMain及其主要的实现函数ReceiveXlogStream.
PostgreSQL 源码解读(151)- PG Tools#3(StartLogStreamer)
本节简单介绍了PostgreSQL的备份工具pg_basebackup源码中实际执行备份逻辑的BaseBackup中对WAL数据进行备份的实现函数StartLogStreamer.
PostgreSQL 源码解读(150)- PG Tools#2(BaseBackup函数)
本节简单介绍了PostgreSQL的备份工具pg_basebackup源码中实际执行备份逻辑的函数BaseBackup.
PostgreSQL 源码解读(149)- PG Tools#1(pg_basebackup主函数)
本节简单介绍了PostgreSQL的备份工具pg_basebackup源码中的主函数.
PostgreSQL DBA(31) - Backup&Recovery#4(搭建流复制)
PostgreSQL通过流复制Streaming Replication可轻松实现高可用HA环境的搭建.本节简单介绍了搭建流复制环境的基本步骤.
PostgreSQL DBA(30) - Backup&Recovery#3(数据文件损坏恢复)
在数据文件损坏,数据库无法正常启动的时候,Oracle可通过数据库备份+归档日志+在线日志实现数据库的完整恢复,与之类似,PostgreSQL也可以通过数据库备份+归档WAL日志+在线WAL日志进行完整恢复.
PostgreSQL DBA(29) - Backup&Recovery#2(日期格式导致的错误)
由于日期格式的不同,PostgreSQL在执行恢复读取recovery.conf的时候会出现问题.
PostgreSQL DBA(28) - Backup&Recovery#1(基本操作)
PostgreSQL的Backup和Recovery操作相对比较简单,通过简单的几个命令和配置即可实现备份和恢复. 下面通过例子简单说明PG备份和恢复的基本操作.
PostgreSQL 源码解读(148)- Storage Manager#4(mdread函数)
本节简单介绍了PostgreSQL存储管理的mdread函数,mdread是magnetic disk存储管理中负责读取的函数.
PostgreSQL 源码解读(147)- Storage Manager#3(fsm_search函数)
本节简单介绍了PostgreSQL在执行插入过程中与存储相关的函数RecordAndGetPageWithFreeSpace->fsm_search,该函数搜索FSM,找到有足够空闲空间(min_cat)的堆page.
PostgreSQL 源码解读(146)- Storage Manager#2(fsm_search_avail函数)
本节简单介绍了PostgreSQL在执行插入过程中与存储相关的函数RecordAndGetPageWithFreeSpace->fsm_set_and_search,该函数设置给定的FSM page的相应值,并返回合适的slot。