Qunar的PostgreSQLHA探索及日常运维


Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster and Maintenance in Qunar 李海龙 hailong.li@qunar.com shuhujiaolong@163.com Qunar Postgres Conference China 2015 中国用户大会 Outline ØPostgreSQL in Qunar ØBasic Knowledge ØHA Cluster in Qunar ØMonitor ØMaintenance ØFuture Postgres Conference China 2015 中国用户大会 PostgreSQL in Qunar 2010年何伟平(laser)来Qunar之后开始大规模推进使用PostgreSQL. Postgres Conference China 2015 中国用户大会 PostgreSQL in Qunar 截至2015-11-16, Qunar 的PostgreSQL DB Server共计400台, 运行DB实例450个, DBA 团队管理300 Postgres Conference China 2015 中国用户大会 PostgreSQL in Qunar Qunar PostgreSQL DBA blog 由wd(dong.wang@qunar.com)搭建&&维护 http://qunardba.gitcafe.io/ Postgres Conference China 2015 中国用户大会 Basic Knowledge ØSome terminology ØM-S Mode ØM-S Switch Postgres Conference China 2015 中国用户大会 Basic Knowledge ØSome terminology in PostgreSQL uWAL Write-Ahead Logging , 即预写式日志. WAL is a standard method for ensuring data integrity. 简而言之,WAL 的中心思想是对Base文件的修改必须在这些修改已经记录到WAL之后. 类似于MySQL 的Binlog, Oracle 的 redo log. uMaster/Primary Servers that can modify data are called read/write, master or primary servers. uSlave/Standby Servers that track changes in the master are called standby or slave servers. 不可写,根据是否可读,分为Warm standby, Hot standby Warm standby A standby server that cannot be connected to until it is promoted to a master server is called a warm standby server 温备,可用来做Master的backup Hot standby A standby server that can accept connections and serves read-only queries is called a hot standby server. 热备,可提供只读服务 Postgres Conference China 2015 中国用户大会 Basic Knowledge ØSome terminology in PostgreSQL uBase Backup A backup strategy is to directly copy the files that PostgreSQL uses to store the data in the database. 基础备份不同于SQL Dump, 是 File System Level Backup, 是对数据库实例整个 Data Dir的备份, 可在实例运行时进行. 常见的base backup 方式 nMethod 1: Low Level API pg_start_backup() pg_stop_backup() 9.4, WAL control functions cannot be executed during recovery. 所以 Low Level API 仅可在Primary上执行. 9.5, 提出了Continuous archiving in standby, 后续可能支持在standby上使用 Low Level API 进行base backup. nMethod 2: pg_basebackup pg_basebackup can make a base backup from not only the master but also the standby. uArchive WAL archiving, 对WAL 进行归档, 以备 restore/recovery 时使用. uPITR Point-in-Time Recovery, 即时恢复. PITR = Base Backup + Continuous WAL Archiving . Postgres Conference China 2015 中国用户大会 Basic Knowledge ØM-S Mode uM-S Sync Mode nFile-based log shipping Sync WAL file to Slave/Standby one by one. nStreaming replication Streaming replication allows a standby server to stay more up-to-date than is possible with file- based log shipping. uM-S Replication Mode nAsynchronous Replication 可以是streaming replication 或 file-based log shipping (apply WAL one file at a time) nSynchronous Replication Synchronous replication offers the ability to confirm that all changes made by a transaction have been transferred to one synchronous standby server. 必须是streaming replication nCascading Replication Cascading replication is currently asynchronous. nDelay Replication Slave 永远处于Master某个特定时期的状态 可以通过在recovery.conf 里设置 recovery_min_apply_delay 或通过第三方工具Omnipitr实现. Postgres Conference China 2015 中国用户大会 Basic Knowledge ØM-S Switch uM-S Sync Mode nStandby is triggered trigger_file = ‘xxx.file’ in recovery.conf Specifies a trigger file whose presence ends recovery in the standby. This setting has no effect if standby_mode is off. nStandby is promoted pg_ctl promote [-D datadir] In promote mode, the standby server that is running in the specified data directory is commanded to exit recovery and begin read-write operations. Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in Qunar ØOmnipitr ØPgbouncer ØHA Cluster Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØOmnipitr Advanced WAL File Management Tools for PostgreSQL. Omnipitr do: p可以传送WAL至Slave/Standby或Archive Server p可以用来restore WAL且clean up 已restore的WAL p可以做Basebackup (from both Master and Slave systems) p可以控制WAL 的restore/reply 进度, 可以利用此特性搭建 Delay Replication Standby Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØPgbouncer Lightweight connection pooler for PostgreSQL. Why use Pgbouncer? p可以提供一个多个Clients 共用的连接池,避免每个Client单独的连接池出现的峰值connection 不足 或空闲时connection浪费的情况. p可以kill 掉 idle in transaction, 甚至idle 的Connection,避免浪费DB Server Connection p可以为无连接池或弱连接池程序语言,如Php, Python提供一个连接池,可大大减少反复直接与DB Server 建立长连接的开销 Qunar给pgbouncer打了patch, 添加功能为 p在pgbouncer端加入对Client的ACL p将Clients的IP地址加入到pg_stat_activity中的application_name patch的细节, 详见QunarDBA的Blog http://qunardba.gitcafe.io/2015/04/03/pgbouncer- ip_limit/ 有兴趣可联系lidong.he@qunar.com. Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØHA Cluster Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØDB Cluser feature n所有节点均配置Virtual IP, 以提高maintenance或failover时的HA程度 nClients都去掉连接池, 都改为短连接, DB Server通过 pgbouncer提供服务 nMaster/Backup 节点之间用Sync Replication, 尽量保证failover 切换时不丢数据 n应用 Cascading Replication, 减轻Master的负担 n使用Omnipitr 对WAL进行send, restore, cleanup, 不需要其他辅助脚本处理 n使用fdw 连接到Slave + 定期Rrefresh Materialized View 的方式, 高效且稳定的同步 数据给其他DB 使用 Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØMaster/Backup failover nmethod 1: 在中心控制机器控制DB node来做各种切换 p优点: 可灵活处理conf文件和vip等 p缺点: 虽可周期性check DB node状态, 但动作迟缓, 且易受控制机与DB node Server 间网络条件限制 nmethod 2: Pacemaker是一个集群资源管理器, 它通过资源级别的监控和恢复来保证集群服务的HA. 通过基础组件(Corosync或Heartbeat)来实现通信和关系管理. p优点: 自动check DB node状态, 反应迅速 p缺点: 各种conf文件及后续处理待完善 Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØMaster/Backup failover Pacemaker的使用, 有兴趣可以联系wensheng.zhang@qunar.com Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØBackup 使用Omnipitr, 可以方便的在Slave进行每日Base Backup + WAL Archiving Why do Backup on Slave? Slave已archive Master发过来全量的WAL, 压缩几十甚至几百G的$PGDATD, 消耗大量CPU资源 传送Backup 文件占用IO及带宽 ..... uBackup 文件压缩, 打包, 加密后, rsync 传送到 Romote MFS Server, 本地保留最近几日backup, 以备快速restore. u此种backup方式可以做到PITR, 将数据库恢复至 Base Backup以后的任意time point (recovery_target_time) 或任意一个transaction point (recovery_target_xid). u Qunar给omnipitr打了个patch uSELECT pg_start_backup('label'); uchange to uSELECT pg_start_backup('label', true); uThis forces the checkpoint to be done as quickly as possible. Postgres Conference China 2015 中国用户大会 PostgreSQL HA Cluster in QunarØBackup Postgres Conference China 2015 中国用户大会 Monitor u监控是DBA的眼睛, 是DBA的核心运维工作之一. u没有好的监控及后续DBA的跟进处理, 再高大上的架构也很难称之为High Availability. Postgres Conference China 2015 中国用户大会 Monitor ØDB Server 监控项: nPing nLoad nDisk nI/O nMemory nSwap nCPU nProcess n...... Postgres Conference China 2015 中国用户大会 Monitor ØDB Server Postgres Conference China 2015 中国用户大会 Monitor ØDB Instance DB相关的监控是用Nagios 做的 监控项: nConnections nSlow query nIdle in transaction nLocks nStreaming diff nSlave Replay 其中 Streaming diff 是在Master 通过pg_stat_replication看延迟size, Slave Replay 是在Slave上通过pg_last_xact_replay_timestamp()看延迟time, 是不同维度的Primary/Standby diff, 二者相得益彰. Postgres Conference China 2015 中国用户大会 Monitor ØDB Instance Postgres Conference China 2015 中国用户大会 Monitor Øpgbouncer cl_waiting: Client connections have sent queries but have not yet got a server connection. Postgres Conference China 2015 中国用户大会 Maintenance ØCluster Management tools ØDB Servers ØDB Instances ØDB RC ØDB log ØDB upgrade ØOther small tricky Postgres Conference China 2015 中国用户大会 Maintenance ØCluster Management tools SaltStack delivers a dynamic communication bus for infrastructures that can be used for orchestration, remote execution, configuration management and much more. Postgres Conference China 2015 中国用户大会 Maintenance ØDB Server nNIC Server 一般有4块以上网卡, 如果交换机有充足端口, WAL 的send && recieve, Streaming Replication, 大量copy 数据可以在启用多块后均衡流量 nDisk pHDD rm unused data on disk pSSD Enable trim, options: discard Atime, options: noatime, nodiratime nFS 推荐使用ext4, 慎用btrfs, xfs http://blog.pgaddict.com/posts/postgresql-performance-on-ext4-and-xfs nKernel 推荐使用3.11+ , 不建议使用2.6, 尤其不建议使用3.0 ~ 3.9 Qunar的DB Server 使用的是3.14 http://osdir.com/ml/postgresql-pgsql-performance/2015-07/msg00002.html Postgres Conference China 2015 中国用户大会 Maintenance 通过分析DBMS 的一些系统表中的信息, 来分析DB 运行状态和需要维护的DB Object. ØDB Instances nDatabase Maintenance 受DB instance 繁忙程度及autovacuum_max_workers限制,需要定期分别强制执行 DB级别 pVACUUM VERBOSE; pANALYZE VERBOSE; 千万别轻易执行Vacuum FULL ,容易把DB Instance搞死 Postgres Conference China 2015 中国用户大会 Maintenance ØDB Instances nTABLE Maintenance ptable need to create index ptable need to vacuum Postgres Conference China 2015 中国用户大会 Maintenance ØDB Instances nTABLE Maintenance ptable need to reorg Qunar给pg_reorg打了个patch, 功能为 p在rename 之前, 执行一下ANALYZE p超过某一阈值rollback, 避免陷入死等Exclusive Lock Future: pg_reorg pg_repack Postgres Conference China 2015 中国用户大会 Maintenance ØDB Instances nINDEX Maintenance pFinding the index needed to maintenance Postgres Conference China 2015 中国用户大会 Maintenance ØDB Instances nINDEX Maintenance pAuto make Index maintenance SQL Postgres Conference China 2015 中国用户大会 Maintenance ØDB Instances nINDEX Maintenance pFinding the index needed to drop Postgres Conference China 2015 中国用户大会 Maintenance ØDB Instances nINDEX Maintenance pUnique index for Unique Constraints pPrimary key Postgres Conference China 2015 中国用户大会 Maintenance Ø DB Instances n DB Resource consumption bottleneck Postgres Conference China 2015 中国用户大会 Maintenance Ø DB Resource consumption bottleneck 通过 pg_stat_statements 可以得到 SQL of CRUD top N 的情况. Elasticsearch + Logstash + Kibana 搭建的query 实时(每分钟)分析系统 Ø DB log RSYSLOG is the rocket-fast system for log processing. Postgres Conference China 2015 中国用户大会 Maintenance ØDB Upgrade usmall version 比如9.4.4 9.4.5 直接升级安装包, 重启DB Instance ubig version 比如9.4 9.5 method advantage disadvantage pg_upgrade 单个DB Node速度快 pg的make parameter 必须相同 必须停止instance的运行 无法同时做standby 第三方extension的升级可能需额外处 理 pg_dumpall | psql pg的make parameter 可以不同 可继续提供只读服务 可同时做Cluster的standby 可灵活处理第三方extension的升级 单个DB Node升级速度慢 Postgres Conference China 2015 中国用户大会 Maintenance ØOther small tricky uPostgreSQL make parameter nwith-blocksize default 8 KB nwith-segsize default 1 GB nwith-wal-blocksize default 8 KB pCONFIGURE = '--with-blocksize=32' '--with-segsize=2' '--with-wal- blocksize=64' uSome parameters in postgresql.conf Postgres Conference China 2015 中国用户大会 Maintenance ØOther Small Tricky uTable Parameters uSync Data Postgres Conference China 2015 中国用户大会 Maintenance ØOther Small Tricky uTransfer Data uRotate/Switch log Postgres Conference China 2015 中国用户大会 Maintenance ØOther Small Tricky uStandby/Replication Postgres Conference China 2015 中国用户大会 Maintenance ØOther Small Tricky uDB Role Postgres Conference China 2015 中国用户大会 Maintenance ØOther Small Tricky uPg_buffercache Postgres Conference China 2015 中国用户大会 Maintenance ØOther Small Tricky uAdd a column with not null and default value Postgres Conference China 2015 中国用户大会 Future Ø PostgreSQL 9.5 Ø HA: 完善Pacemaker及探索其他 Ø MultiMaster: Logical Decoding && BDR && UDR Ø Monitor: 探索比Nagios更好的监控工具 Ø 探索类似MySQL Inception 的SQL 审核工具 Postgres Conference China 2015 中国用户大会 Thanks! Q & A Postgres Conference China 2015 中国用户大会 更多精彩,尽在PG社区 •PostgreSQL中国社区 : •PostgreSQL专业1群 : 3336901(已满) •PostgreSQL专业2群 : 100910388 •PostgreSQL专业3群 : 150657323 •文档翻译群 : 309292849 PostgresChina微信公众号 PostgreSQL用户会微博 postgres.cn
还剩47页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

ygfb

贡献于2015-12-07

下载需要 6 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf