PostgreSQL 9 的 standby 集群实践
-
Upload
march-liu -
Category
Technology
-
view
2.842 -
download
2
description
Transcript of PostgreSQL 9 的 standby 集群实践
. . . . . .
Standby 集群知识
. . . . . .
PostgreSQL 内置的集群方案
. . . . . .
基于预写入机制
. . . . . .
client DML or DDL−−−−−−−→ [switch file −→ archive file]wal level −→ data storage
. . . . . .
高性能
. . . . . .
同步差可控
. . . . . .
流式同步
. . . . . .
基于交换文件的快同步:backup in progress
. . . . . .
较低负载压力的“温备”模式
. . . . . .
基于归档文件的增量恢复:archive/restore
. . . . . .
实施
. . . . . .
基本步骤
. . . . . .
预备 standby 配置文件
. . . . . .
预设 primary 节点。
. . . . . .
primary 进入备份模式
. . . . . .
建立 standby 环境
. . . . . .
配置 standby
. . . . . .
启动 standby
. . . . . .
将 primary 转入正常模式。
. . . . . .
standby 实施
. . . . . .
计划与设计
. . . . . .
采用何种架构?
. . . . . .
读写分离 or Standlone?
. . . . . .
根据同步率和性能要求采用不同的方案。
. . . . . .
文件 or 流?
. . . . . .
希望回溯?
. . . . . .
预备 standby 配置
. . . . . .
编辑 postgresql.conf
. . . . . .
hot standby?
hot standby = on/off
. . . . . .
建立 recovery.conf
. . . . . .
文件同步
standby mode = ’on’ restore command = ’cp $ARCHIVEDIR/%f%p’
. . . . . .
流式同步
standby mode = ’on’ primary conninfo = ’host=primaryport=5432 user=repl’
. . . . . .
预备 primary
. . . . . .
编辑 postgresql.conf
. . . . . .
wal level = archive/hot standby
. . . . . .
基于 archive 模式
archive mode = on
. . . . . .
基于归档文件
archive command = ’test ! -f $ARCHIVEDIR/%f && cp %p$ARCHIVEDIR/%f’
. . . . . .
基于 switch file
archive command = ’test ! -f $PGDATA/backup in progress &&cp %p $ARCHIVEDIR/%f’
. . . . . .
基于流
max wal sender = n (n>0)
. . . . . .
基于流
编辑 pg hba.conf
. . . . . .
基于流
# TYPE DATABASE USER CIDR−ADDRESS METHODhos t r e p l i c a t i o n r e p l 192 . 168 . 1 . 100/32 md5
. . . . . .
进入备份模式
. . . . . .
superuser 登录 primary
. . . . . .
第二参数可以提示尽快完成事务
select pg start backup(”);
. . . . . .
建立 standby 环境
. . . . . .
以 postgres 用户身份
mkdir /standby/path
. . . . . .
chmod -R 700 /standby/path
. . . . . .
tar 或 rsync
将 primary 数据区复制过来
. . . . . .
删除 postmaster.pid
. . . . . .
将预设的 standby 文件,postgresql.conf 和 recovery.conf 放到数据区。
. . . . . .
根据实际情况,调整 pg hba.conf
. . . . . .
启动 standby
. . . . . .
pg ctl -D $PGSTANDPATH start
. . . . . .
primary 转为正常工作模式
. . . . . .
select pg stop backup();
. . . . . .
发散讨论
. . . . . .
可以使用 clean command 清理过期的归档文件。
. . . . . .
利用归档文件,可以建立可回溯的高可靠性备份机制。
. . . . . .
利用 hot standby 机制,可以方便的实现单写多读的负载均衡机制。
. . . . . .
压缩传输可以利用宽裕的 CPU 资源换取有限的带宽。
. . . . . .
刘鑫 @ 金山快盘
再见!