Greenplum 添加或删除standby master节点

简介:
Greenplum支持master节点的standby,如果你在初始化集群时没有创建standby节点,或者原来的standby节点坏了或者其他原因,要重搭standby。
本文将告诉你怎么做。
1. 如果要新建standby,但是原来已有standby,首先要删除它。
gpinitstandby -r 
如果原来的standby只是某种原因挂了,不需要删除,只需要重启,则使用以下命令来重启standby 
gpinitstandby -n

2. 如果搭建standby的机器不在原来的GP集群中,则需要将机器添加进来。
详细添加方法参考   http://yq.aliyun.com/articles/177  (本文不再重复,大致的内容如下)
   环境配置,例如OS kernel 参数;
   创建gp管理用户;
   ssh key的交换(使用gpssh-exkeys -e exist_hosts -x new_hosts);
   greenplum bin软件的拷贝;
   使用gpcheck检查 (gpcheck -f new_hosts );
   使用gpcheckperf检查性能 (gpcheckperf -f new_hosts_file -d /data1 -d /data2 -v)

3. 如果在GP已有集群中的机器中选择一台来搭建standby,则可以跳过第二步。
了解master节点用了哪些filespace.
postgres=# select a.dbid,a.content,a.role,a.port,a.hostname,b.fsname,c.fselocation from gp_segment_configuration a,pg_filespace b,pg_filespace_entry c where a.dbid=c.fsedbid and b.oid=c.fsefsoid order by content;
 dbid | content | role | port  |     hostname      |  fsname   |              fselocation              
------+---------+------+-------+-------------------+-----------+---------------------------------------
    1 |      -1 | p    |  1921 | digoal_host.sqa.zmf | pg_system | /disk1/digoal/gpdata/gpseg-1
    1 |      -1 | p    |  1921 | digoal_host.sqa.zmf | ssd1      | /disk1/digoal/new_p/gp-1
。。。。。。
了解master的即可,可以看到除了pg_system,还有一个filespace叫ssd1。

4. 进入初始化standby的步骤。
根据第三步查到的信息,规划standby master filespace数据目录;
$ mkdir /disk1/digoal/gpdata
$ mkdir /disk1/digoal/new_p

如果在不同的主机创建standby master,则建议使用同样的端口和目录结构。
如下:
$gpinitstandby -F pg_system:/data01/gpdata/master_pgdata/gpseg-1 -s digoal_host199092.zmf 
20151221:14:17:24:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Validating environment and parameters for standby initialization...
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Checking for filespace directory /data01/gpdata/master_pgdata/gpseg-1 on digoal_host199092.zmf
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:------------------------------------------------------
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum standby master initialization parameters
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:------------------------------------------------------
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum master hostname               = digoal_host193096.zmf
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum master data directory         = /data01/gpdata/master_pgdata/gpseg-1
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum master port                   = 1921
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum standby master hostname       = digoal_host199092.zmf
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum standby master port           = 1921
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum standby master data directory = /data01/gpdata/master_pgdata/gpseg-1
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Greenplum update system catalog         = On
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:------------------------------------------------------
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:- Filespace locations
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:------------------------------------------------------
20151221:14:17:25:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-pg_system -> /data01/gpdata/master_pgdata/gpseg-1
Do you want to continue with standby master initialization? Yy|Nn (default=N):
> y
20151221:14:26:46:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Syncing Greenplum Database extensions to standby
20151221:14:26:46:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-The packages on digoal_host199092.zmf are consistent.
20151221:14:26:46:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Adding standby master to catalog...
20151221:14:26:46:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Database catalog updated successfully.
20151221:14:26:47:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Updating pg_hba.conf file...
20151221:14:26:52:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-pg_hba.conf files updated successfully.
20151221:14:26:56:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Updating filespace flat files...
20151221:14:26:56:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Filespace flat file updated successfully.
20151221:14:26:56:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Starting standby master
20151221:14:26:56:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Checking if standby master is running on host: digoal_host199092.zmf  in directory: /data01/gpdata/master_pgdata/gpseg-1
20151221:14:27:00:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Cleaning up pg_hba.conf backup files...
20151221:14:27:06:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Backup files of pg_hba.conf cleaned up successfully.
20151221:14:27:06:012334 gpinitstandby:digoal_host193096:digoal-[INFO]:-Successfully created standby master on digoal_host199092.zmf

digoal=# select * from gp_segment_configuration where content='-1';
 dbid | content | role | preferred_role | mode | status | port |     hostname      |      address      | replication_port | san_mounts 
------+---------+------+----------------+------+--------+------+-------------------+-------------------+------------------+------------
    1 |      -1 | p    | p              | s    | u      | 1921 | digoal_host193096.zmf | digoal_host193096.zmf |                  | 
   26 |      -1 | m    | m              | s    | u      | 1921 | digoal_host199092.zmf | digoal_host199092.zmf |                  | 
(2 rows)

如果在同一台主机创建standby master,则需要使用不同的端口和目录结构。
如下:
指定不同的filespace路径,不同的监听端口。
$gpinitstandby -F pg_system:/disk1/digoal/gpdata/gpseg-2,ssd1:/disk1/digoal/new_p/gp-2 -P 1922 -s digoal_host.sqa.zmf
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Validating environment and parameters for standby initialization...
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Checking for filespace directory /disk1/digoal/gpdata/gpseg-2 on digoal_host.sqa.zmf
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Checking for filespace directory /disk1/digoal/new_p/gp-2 on digoal_host.sqa.zmf
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:------------------------------------------------------
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum standby master initialization parameters
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:------------------------------------------------------
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum master hostname               = digoal_host.sqa.zmf
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum master data directory         = /disk1/digoal/gpdata/gpseg-1
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum master port                   = 1921
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum standby master hostname       = digoal_host.sqa.zmf
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum standby master port           = 1922
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum standby master data directory = /disk1/digoal/gpdata/gpseg-2
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Greenplum update system catalog         = On
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:------------------------------------------------------
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:- Filespace locations
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:------------------------------------------------------
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-pg_system -> /disk1/digoal/gpdata/gpseg-2
20151221:14:34:01:077652 gpinitstandby:digoal_host:digoal-[INFO]:-ssd1 -> /disk1/digoal/new_p/gp-2
Do you want to continue with standby master initialization? Yy|Nn (default=N):
> y
20151221:14:34:03:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Syncing Greenplum Database extensions to standby
20151221:14:34:03:077652 gpinitstandby:digoal_host:digoal-[INFO]:-The packages on digoal_host.sqa.zmf are consistent.
20151221:14:34:03:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Adding standby master to catalog...
20151221:14:34:04:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Database catalog updated successfully.
20151221:14:34:05:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Updating pg_hba.conf file...
20151221:14:34:13:077652 gpinitstandby:digoal_host:digoal-[INFO]:-pg_hba.conf files updated successfully.
20151221:14:34:31:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Updating filespace flat files...
20151221:14:34:31:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Writing standby information to /disk1/digoal/gpdata/gpseg-1/gp_transaction_files_filespace flat file
20151221:14:34:32:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Writing standby information to /disk1/digoal/gpdata/gpseg-1/gp_temporary_files_filespace flat file
20151221:14:34:32:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Filespace flat file updated successfully.
20151221:14:34:32:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Starting standby master
20151221:14:34:32:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Checking if standby master is running on host: digoal_host.sqa.zmf  in directory: /disk1/digoal/gpdata/gpseg-2
20151221:14:36:16:077652 gpinitstandby:digoal_host:digoal-[WARNING]:-Could not start standby master
20151221:14:36:16:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Cleaning up pg_hba.conf backup files...
20151221:14:36:21:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Backup files of pg_hba.conf cleaned up successfully.
20151221:14:36:21:077652 gpinitstandby:digoal_host:digoal-[INFO]:-Successfully created standby master on digoal_host.sqa.zmf

启动standby
$gpinitstandby -n
20151221:14:39:40:085625 gpinitstandby:digoal_host:digoal-[INFO]:-Starting standby master
20151221:14:39:40:085625 gpinitstandby:digoal_host:digoal-[INFO]:-Checking if standby master is running on host: digoal_host.sqa.zmf  in directory: /disk1/digoal/gpdata/gpseg-2

查看standby延迟,查看pg_stat_replication 视图即可。
digoal=# select pg_switch_xlog();
 pg_switch_xlog 
----------------
 0/C0000D8
(1 row)
digoal=# select * from pg_stat_replication ;
 procpid | usesysid | usename  | application_name |  client_addr  | client_port |         backend_start         |   state   | sent_location | write_location | flush_location | replay_location | sync_priority | sync_state 
---------+----------+----------+------------------+---------------+-------------+-------------------------------+-----------+---------------+----------------+----------------+-----------------+---------------+------------
   13444 |       10 | dege.zzz | walreceiver      | 100.69.199.92 |       47792 | 2015-12-21 14:27:00.164785+08 | streaming | 0/D080000     | 0/CC00000      | 0/C880000      | 0/C0000B8       |             1 | sync
(1 row)
...
digoal=# select * from pg_stat_replication ;
 procpid | usesysid | usename  | application_name |  client_addr  | client_port |         backend_start         |   state   | sent_location | write_location | flush_location | replay_location | sync_priority | sync_state 
---------+----------+----------+------------------+---------------+-------------+-------------------------------+-----------+---------------+----------------+----------------+-----------------+---------------+------------
   13444 |       10 | dege.zzz | walreceiver      | 100.69.199.92 |       47792 | 2015-12-21 14:27:00.164785+08 | streaming | 0/10000000    | 0/10000000     | 0/10000000     | 0/10000000      |             1 | sync
(1 row)
参考
gpinitstandby -?
目录
相关文章
|
JSON Kubernetes 算法
Cobra 命令自动补全指北
本篇文章就来讲讲如何使用 Cobra 来实现命令自动补全。
4320 0
|
10月前
|
存储 人工智能 关系型数据库
阿里云AnalyticDB for PostgreSQL 入选VLDB 2025:统一架构破局HTAP,Beam+Laser引擎赋能Data+AI融合新范式
在数据驱动与人工智能深度融合的时代,企业对数据仓库的需求早已超越“查得快”这一基础能力。面对传统数仓挑战,阿里云瑶池数据库AnalyticDB for PostgreSQL(简称ADB-PG)创新性地构建了统一架构下的Shared-Nothing与Shared-Storage双模融合体系,并自主研发Beam混合存储引擎与Laser向量化执行引擎,全面解决HTAP场景下性能、弹性、成本与实时性的矛盾。 近日,相关研究成果发表于在英国伦敦召开的数据库领域顶级会议 VLDB 2025,标志着中国自研云数仓技术再次登上国际舞台。
1103 1
|
SQL 关系型数据库 MySQL
mysql用户、权限管理
mysql用户、权限管理
343 0
|
Java 调度
ThreadPoolExecutor解析
本文深入解析了Java中`ThreadPoolExecutor`的实现原理,帮助理解线程池的工作机制。核心内容包括任务队列`workQueue`、线程工厂`ThreadFactory`、拒绝策略`RejectedExecutionHandler`等关键成员的作用。通过`submit`和`execute`方法的执行流程,展示了线程池如何根据`corePoolSize`和`maximumPoolSize`动态调整线程数量,并结合`keepAliveTime`管理空闲线程。最后分析了`Worker`类的`run`方法,揭示线程池通过循环从队列中获取任务并执行的核心逻辑。
397 0
|
存储 并行计算 Java
CompletableFuture原理及应用场景详解
CompletableFuture是Java 8引入的异步编程工具,用于优化多任务并行处理。相比传统Future,它支持可组合操作(如thenApply、thenCombine),避免回调地狱,同时降低依赖间的阻塞。其核心通过result存储结果,stack管理依赖动作,基于观察者模式实现回调通知。使用中需注意:异步方法建议显式传入线程池以隔离资源;异常信息需通过get()或exceptionally捕获。适用于复杂业务场景,如APP页面加载涉及多服务API调用时,可显著提升性能与代码可读性。
1284 2
|
机器学习/深度学习 自然语言处理 网络协议
为什么ChatGPT采用SSE协议而不是WebSocket?
在探讨大型语言模型ChatGPT的技术实现时,一个引人注目的细节是其选择使用SSE(Server-Sent Events)协议而非WebSocket来实现数据的实时推送。这一选择背后,蕴含着对技术特性、应用场景及资源效率的深思熟虑。本文将深入探讨ChatGPT为何偏爱SSE,以及这一决策背后的技术逻辑。
1264 3
ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)
在前面关于ES的一系列文章中,已经介绍了ES的概念、常用操作、JavaAPI以及实际的一个小demo,但是在真实的应用场景中,还有可能会有更高阶的一些用法,今天主要介绍两种相对来说会更难一些的操作,聚合查询。该文档基于ElasticSearch7.6,将介绍restful查询语法以及JavaApi。 阅读本文需要你有ElasticSearch的基础。
1154 0
|
前端开发 JavaScript 开发者
html<p>标签的用法
`&lt;p&gt;` 标签主要用于定义段落,但在网页设计中也有创新用法,如用作容器、自定义样式、响应式设计调整、嵌套结构创建、伪元素及伪类应用、添加微数据和属性,以及增强可访问性等,这些方法可在保证语义清晰的前提下提升页面表现力。
|
JavaScript 前端开发 Linux
安装node2-22
安装node2-22
|
机器学习/深度学习 人工智能 算法
深入分析自动化测试中AI驱动的测试用例生成
【5月更文挑战第4天】随着人工智能(AI)技术的飞速发展,其在软件测试领域的应用也日益广泛。特别是在自动化测试过程中,AI技术能够显著提高测试用例的生成效率和质量。本文将探讨AI在自动化测试用例生成中的应用原理、优势以及面临的挑战,并展示通过AI技术优化测试流程的实际案例。
1299 8