SlideShare a Scribd company logo
1 of 62
Download to read offline
PostgreSQL 9 Hot Standby

 刘鑫 <march.liu@gmail.com>

       standby 技术实践


      August 24, 2010




                        .   .   .   .   .   .
Standby 集群知识




               .   .   .   .   .   .
PostgreSQL 内置的集群方案




               .     .   .   .   .   .
基于预写入机制




          .   .   .   .   .   .
DML or DDL
client − − − − [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=primary
                  port=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                       METHOD
 host   r e p l i c a t i o n r e p l 1 9 2 . 1 6 8 . 1 . 1 0 0 / 3 2 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 资源换取有限的带宽。




                    .   .   .   .   .   .
刘鑫 @ 金山快盘




            再见!




                  .   .   .   .   .   .

More Related Content

What's hot

Linux基础
Linux基础Linux基础
Linux基础zhuqling
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应zhaolinjnu
 
Hadoop平台搭建
Hadoop平台搭建Hadoop平台搭建
Hadoop平台搭建Liyang Tang
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmarkLouis liu
 
Cuda基本介绍
Cuda基本介绍Cuda基本介绍
Cuda基本介绍caolejun
 
Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機維泰 蔡
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
Centos下安装apache + subversion
Centos下安装apache + subversionCentos下安装apache + subversion
Centos下安装apache + subversionYiwei Ma
 
Effective linux.1.(commandline)
Effective linux.1.(commandline)Effective linux.1.(commandline)
Effective linux.1.(commandline)wang hongjiang
 
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理haiyuan ning
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacMarsZ Chen
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuMarsZ Chen
 
Cassandra运维之道(office2003)
Cassandra运维之道(office2003)Cassandra运维之道(office2003)
Cassandra运维之道(office2003)haiyuan ning
 
nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用dong yuwei
 
Nginx共享内存
Nginx共享内存Nginx共享内存
Nginx共享内存Lucien Li
 
Altibase管理培训 安装篇
Altibase管理培训 安装篇Altibase管理培训 安装篇
Altibase管理培训 安装篇小新 制造
 
Effective linux.2.(tools)
Effective linux.2.(tools)Effective linux.2.(tools)
Effective linux.2.(tools)wang hongjiang
 

What's hot (18)

Linux基础
Linux基础Linux基础
Linux基础
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
Hadoop平台搭建
Hadoop平台搭建Hadoop平台搭建
Hadoop平台搭建
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmark
 
Cuda基本介绍
Cuda基本介绍Cuda基本介绍
Cuda基本介绍
 
Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機Proxmox: 建立自己的虛擬主機
Proxmox: 建立自己的虛擬主機
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
Centos下安装apache + subversion
Centos下安装apache + subversionCentos下安装apache + subversion
Centos下安装apache + subversion
 
Effective linux.1.(commandline)
Effective linux.1.(commandline)Effective linux.1.(commandline)
Effective linux.1.(commandline)
 
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for Mac
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
 
Cassandra运维之道(office2003)
Cassandra运维之道(office2003)Cassandra运维之道(office2003)
Cassandra运维之道(office2003)
 
MySQL aio
MySQL aioMySQL aio
MySQL aio
 
nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用
 
Nginx共享内存
Nginx共享内存Nginx共享内存
Nginx共享内存
 
Altibase管理培训 安装篇
Altibase管理培训 安装篇Altibase管理培训 安装篇
Altibase管理培训 安装篇
 
Effective linux.2.(tools)
Effective linux.2.(tools)Effective linux.2.(tools)
Effective linux.2.(tools)
 

Similar to PostgreSQL 9 的 standby 集群实践

unix toolbox 中文版
unix toolbox 中文版unix toolbox 中文版
unix toolbox 中文版Jie Bao
 
Linux 期末報告
Linux 期末報告Linux 期末報告
Linux 期末報告米米 林
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on praticeKenny (netman)
 
Python 数据库技术第三讲
Python 数据库技术第三讲Python 数据库技术第三讲
Python 数据库技术第三讲March Liu
 
5, system admin
5, system admin5, system admin
5, system adminted-xu
 
PostgreSQL Introduction V0.1
PostgreSQL Introduction V0.1PostgreSQL Introduction V0.1
PostgreSQL Introduction V0.1March Liu
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 StandbyMarch Liu
 
linux安装以及LAMP 环境安装详细
linux安装以及LAMP 环境安装详细linux安装以及LAMP 环境安装详细
linux安装以及LAMP 环境安装详细colderboy17
 
Ubuntu手册(中文版)
Ubuntu手册(中文版)Ubuntu手册(中文版)
Ubuntu手册(中文版)byp2011
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析Guangyao Cheng
 
Lamp安全全攻略
Lamp安全全攻略Lamp安全全攻略
Lamp安全全攻略Da Zhao
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版redhat9
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 Lheima911
 
Elastic stack day-2
Elastic stack day-2Elastic stack day-2
Elastic stack day-2YI-CHING WU
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制maclean liu
 
Heartbeat v2 安装和配置原理
Heartbeat v2 安装和配置原理Heartbeat v2 安装和配置原理
Heartbeat v2 安装和配置原理Pickup Li
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 

Similar to PostgreSQL 9 的 standby 集群实践 (20)

unix toolbox 中文版
unix toolbox 中文版unix toolbox 中文版
unix toolbox 中文版
 
Linux 期末報告
Linux 期末報告Linux 期末報告
Linux 期末報告
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
 
Python 数据库技术第三讲
Python 数据库技术第三讲Python 数据库技术第三讲
Python 数据库技术第三讲
 
5, system admin
5, system admin5, system admin
5, system admin
 
PostgreSQL Introduction V0.1
PostgreSQL Introduction V0.1PostgreSQL Introduction V0.1
PostgreSQL Introduction V0.1
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 Standby
 
linux安装以及LAMP 环境安装详细
linux安装以及LAMP 环境安装详细linux安装以及LAMP 环境安装详细
linux安装以及LAMP 环境安装详细
 
Ubuntu手册(中文版)
Ubuntu手册(中文版)Ubuntu手册(中文版)
Ubuntu手册(中文版)
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析
 
Ipaq with linux
Ipaq with linuxIpaq with linux
Ipaq with linux
 
Lamp安全全攻略
Lamp安全全攻略Lamp安全全攻略
Lamp安全全攻略
 
Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版Bypat博客出品-利用cent os快速构建自己的发行版
Bypat博客出品-利用cent os快速构建自己的发行版
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 L
 
Elastic stack day-2
Elastic stack day-2Elastic stack day-2
Elastic stack day-2
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
 
Linuxguide4f2e
Linuxguide4f2eLinuxguide4f2e
Linuxguide4f2e
 
LinuxGuide4F2E
LinuxGuide4F2ELinuxGuide4F2E
LinuxGuide4F2E
 
Heartbeat v2 安装和配置原理
Heartbeat v2 安装和配置原理Heartbeat v2 安装和配置原理
Heartbeat v2 安装和配置原理
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 

More from March Liu

Jaskell Core Parsec
Jaskell Core ParsecJaskell Core Parsec
Jaskell Core ParsecMarch Liu
 
轻量级文本工具集
轻量级文本工具集轻量级文本工具集
轻量级文本工具集March Liu
 
奇点与未来
奇点与未来奇点与未来
奇点与未来March Liu
 
尼尔盖曼的美国众神
尼尔盖曼的美国众神尼尔盖曼的美国众神
尼尔盖曼的美国众神March Liu
 
创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务March Liu
 
It工程师的职业成长
It工程师的职业成长It工程师的职业成长
It工程师的职业成长March Liu
 
Xcode tutorial
Xcode tutorialXcode tutorial
Xcode tutorialMarch Liu
 
Socrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemySocrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemyMarch Liu
 
PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性March Liu
 
Emacs Introduction
Emacs IntroductionEmacs Introduction
Emacs IntroductionMarch Liu
 
软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验March Liu
 
Python速成指南
Python速成指南Python速成指南
Python速成指南March Liu
 
Python 数据库技术讲座(二)
Python 数据库技术讲座(二)Python 数据库技术讲座(二)
Python 数据库技术讲座(二)March Liu
 
Python 数据库技术讲座(一)
Python 数据库技术讲座(一)Python 数据库技术讲座(一)
Python 数据库技术讲座(一)March Liu
 
Python 数据库技术
Python 数据库技术Python 数据库技术
Python 数据库技术March Liu
 
基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案March Liu
 
1 Python简介
1 Python简介1 Python简介
1 Python简介March Liu
 
2 Python开发工具链
2 Python开发工具链2 Python开发工具链
2 Python开发工具链March Liu
 
3 Python开发风格与建议
3 Python开发风格与建议3 Python开发风格与建议
3 Python开发风格与建议March Liu
 

More from March Liu (20)

Jaskell Core Parsec
Jaskell Core ParsecJaskell Core Parsec
Jaskell Core Parsec
 
轻量级文本工具集
轻量级文本工具集轻量级文本工具集
轻量级文本工具集
 
奇点与未来
奇点与未来奇点与未来
奇点与未来
 
尼尔盖曼的美国众神
尼尔盖曼的美国众神尼尔盖曼的美国众神
尼尔盖曼的美国众神
 
创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务
 
It工程师的职业成长
It工程师的职业成长It工程师的职业成长
It工程师的职业成长
 
Xcode tutorial
Xcode tutorialXcode tutorial
Xcode tutorial
 
Socrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemySocrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemy
 
PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性
 
Emacs Introduction
Emacs IntroductionEmacs Introduction
Emacs Introduction
 
软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验
 
Python速成指南
Python速成指南Python速成指南
Python速成指南
 
Python 数据库技术讲座(二)
Python 数据库技术讲座(二)Python 数据库技术讲座(二)
Python 数据库技术讲座(二)
 
Python 数据库技术讲座(一)
Python 数据库技术讲座(一)Python 数据库技术讲座(一)
Python 数据库技术讲座(一)
 
Python 数据库技术
Python 数据库技术Python 数据库技术
Python 数据库技术
 
基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案
 
About Me
About MeAbout Me
About Me
 
1 Python简介
1 Python简介1 Python简介
1 Python简介
 
2 Python开发工具链
2 Python开发工具链2 Python开发工具链
2 Python开发工具链
 
3 Python开发风格与建议
3 Python开发风格与建议3 Python开发风格与建议
3 Python开发风格与建议
 

PostgreSQL 9 的 standby 集群实践