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...
进入备份模式




         .   .   .   .   .   .
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 资源换取有限的带宽。




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




            再见!




                  .   .   .   .   .   .
Upcoming SlideShare
Loading in …5
×

PostgreSQL 9 的 standby 集群实践

3,233 views

Published on

简单的 PostgreSQL 9 集群实施说明。刚刚玩了几天,还没摸透。

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,233
On SlideShare
0
From Embeds
0
Number of Embeds
72
Actions
Shares
0
Downloads
62
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

PostgreSQL 9 的 standby 集群实践

  1. 1. PostgreSQL 9 Hot Standby 刘鑫 <march.liu@gmail.com> standby 技术实践 August 24, 2010 . . . . . .
  2. 2. Standby 集群知识 . . . . . .
  3. 3. PostgreSQL 内置的集群方案 . . . . . .
  4. 4. 基于预写入机制 . . . . . .
  5. 5. DML or DDL client − − − − [switch file → archive file]wal level − data storage − − −→ − → . . . . . .
  6. 6. 高性能 . . . . . .
  7. 7. 同步差可控 . . . . . .
  8. 8. 流式同步 . . . . . .
  9. 9. 基于交换文件的快同步:backup in progress . . . . . .
  10. 10. 较低负载压力的“温备”模式 . . . . . .
  11. 11. 基于归档文件的增量恢复:archive/restore . . . . . .
  12. 12. 实施 . . . . . .
  13. 13. 基本步骤 . . . . . .
  14. 14. 预备 standby 配置文件 . . . . . .
  15. 15. 预设 primary 节点。 . . . . . .
  16. 16. primary 进入备份模式 . . . . . .
  17. 17. 建立 standby 环境 . . . . . .
  18. 18. 配置 standby . . . . . .
  19. 19. 启动 standby . . . . . .
  20. 20. 将 primary 转入正常模式。 . . . . . .
  21. 21. standby 实施 . . . . . .
  22. 22. 计划与设计 . . . . . .
  23. 23. 采用何种架构? . . . . . .
  24. 24. 读写分离 or Standlone? . . . . . .
  25. 25. 根据同步率和性能要求采用不同的方案。 . . . . . .
  26. 26. 文件 or 流? . . . . . .
  27. 27. 希望回溯? . . . . . .
  28. 28. 预备 standby 配置 . . . . . .
  29. 29. 编辑 postgresql.conf . . . . . .
  30. 30. hot standby? hot standby = on/off . . . . . .
  31. 31. 建立 recovery.conf . . . . . .
  32. 32. 文件同步 standby mode = ’on’ restore command = ’cp $ARCHIVEDIR/%f %p’ . . . . . .
  33. 33. 流式同步 standby mode = ’on’ primary conninfo = ’host=primary port=5432 user=repl’ . . . . . .
  34. 34. 预备 primary . . . . . .
  35. 35. 编辑 postgresql.conf . . . . . .
  36. 36. wal level = archive/hot standby . . . . . .
  37. 37. 基于 archive 模式 archive mode = on . . . . . .
  38. 38. 基于归档文件 archive command = ’test ! -f $ARCHIVEDIR/%f && cp %p $ARCHIVEDIR/%f’ . . . . . .
  39. 39. 基于 switch file archive command = ’test ! -f $PGDATA/backup in progress && cp %p $ARCHIVEDIR/%f’ . . . . . .
  40. 40. 基于流 max wal sender = n (n>0) . . . . . .
  41. 41. 基于流 编辑 pg hba.conf . . . . . .
  42. 42. 基于流 # 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 . . . . . .
  43. 43. 进入备份模式 . . . . . .
  44. 44. superuser 登录 primary . . . . . .
  45. 45. 第二参数可以提示尽快完成事务 select pg start backup(”); . . . . . .
  46. 46. 建立 standby 环境 . . . . . .
  47. 47. 以 postgres 用户身份 mkdir /standby/path . . . . . .
  48. 48. chmod -R 700 /standby/path . . . . . .
  49. 49. tar 或 rsync 将 primary 数据区复制过来 . . . . . .
  50. 50. 删除 postmaster.pid . . . . . .
  51. 51. 将预设的 standby 文件,postgresql.conf 和 recovery.conf 放到数 据区。 . . . . . .
  52. 52. 根据实际情况,调整 pg hba.conf . . . . . .
  53. 53. 启动 standby . . . . . .
  54. 54. pg ctl -D $PGSTANDPATH start . . . . . .
  55. 55. primary 转为正常工作模式 . . . . . .
  56. 56. select pg stop backup(); . . . . . .
  57. 57. 发散讨论 . . . . . .
  58. 58. 可以使用 clean command 清理过期的归档文件。 . . . . . .
  59. 59. 利用归档文件,可以建立可回溯的高可靠性备份机制。 . . . . . .
  60. 60. 利用 hot standby 机制,可以方便的实现单写多读的负载均衡机 制。 . . . . . .
  61. 61. 压缩传输可以利用宽裕的 CPU 资源换取有限的带宽。 . . . . . .
  62. 62. 刘鑫 @ 金山快盘 再见! . . . . . .

×