在Greenplum数据库中启用和删除Master和segment镜像mirror

0    321    2

Tags:

👉 本文共约8691个字,系统预计阅读时间或需33分钟。

简介

可直接看最后的总结内容。。。。。

可以在建立Greenplum数据库系统时使用gpinitsystem配置系统使用镜像,或者之后用gpaddmirrors以及gpinitstandby启用镜像。

这个主题假定现有系统初始化时没有镜像,现在要向其中加入镜像。

启用Segment镜像

镜像Segment允许数据库查询在主Segment不可用时故障转移到备用Segment。为了配置镜像,Greenplum数据库 系统必须具有足够的节点以保证镜像Segment和对应的主Segment不在同一台主机上。默认情况下,镜像会被配置在 主Segment所在的主机阵列上。也可以为镜像Segment选择一组完全不同的主机,这样它们就不会分享任何主 Segment的机器。

Important: 在线数据复制处理期间,Greenplum数据库应该处于一种静止状态,不应运行负载和 其他查询。

要增加Segment镜像到一个现有系统(和主Segment相同的主机阵列)

  1. 在所有的Segment主机上为镜像数据分配数据存储区域。数据存储区域必须与主Segment 的文件系统位置不同。

  2. 使用gpssh-exkeys确保Segment主机能通过SSH和SCP免密码连接到彼此。

  3. 运行gpaddmirrors工具在Greenplum数据库系统中启用镜像。 例如,在主Segment端口号基础上加10000来计算得到镜像Segment的端口号:

    其中-p指定要加在主 Segment端口号上的数字。使用默认的组镜像配置来增加镜像。

要增加Segment镜像到一个现有系统(和主Segment不同的主机阵列)

  1. 确保在所有主机上都安装有Greenplum数据库软件。

  2. 在所有的Segment主机上为镜像数据分配数据存储区域。

  3. 使用gpssh-exkeys确保Segment主机能通过SSH和SCP免密码连接到彼此。

  4. 创建一个配置文件,其中列出要在其上创建镜像的主机名称、端口号和数据目录。要创建 一个示例配置文件作为起点,可运行:

    镜像配置文件的格式为:

    其中row_id是文件中的行号, contentID是segment实例的内容ID, address是segment主机的主机名或IP地址,port是用于通信的端口号, data_dir是segment实例的数据目录。

    例如这是一个配置文件,其中有两个Segment主机,每个主机上有两个Segment:

  5. 运行gpaddmirrors工具在Greenplum数据库系统中启用镜像:

    其中-i指定所创建的镜像配置文件。

启用Master镜像

可以用gpinitsystem来配置一个带有后备Master的新Greenplum数据库系统, 或者以后用gpinitstandby来启用后备Master。这个主题假定现有系统初始化时没有 后备Master,现在要向其中加入一个后备Master。

有关工具gpinitsystemgpinitstandby的详细信息,请见Greenplum数据库工具指南.

要向一个现有系统增加一个standby master

  1. 确保standby Master主机已经被安装且配置好Greenplum数据库: gpadmin系统用户已创建、Greenplum数据库二进制文件已安装、 环境变量已设置、SSH密钥已交换并且数据目录和表空间已创建。

  2. 在当前活动的primary master主机上运行gpinitstandby 工具向Greenplum数据库系统增加一个standby master主机。例如:

    这里-s指定后备Master主机的名称。

要把操作切换到standby master上,请见恢复故障的Master

检查Master镜像进程状态(可选)

可以通过运行gpstate工具并带有-f选项来显示standby master 主机的详细信息。

standby master的状态应该是passive,WAL sender状态应该是streaming。

有关gpstate工具的详细信息,请见Greenplum数据库工具指南。

删除segment镜像mirror示例(不用这个,用总结中的,,慎用慎用。。。。)

  1. ⾸先检测系统的状态信息
    如果集群的状态不正常,则需要进⾏系统的问题定位和处理。否则可以执⾏以下步骤,来进⾏集群删除镜像操作:的数据⽬录的 pg_log ⽬录下的⽇志都可以删除。删除操作需要慎重!!!

  2. 备份 Master 主机的数据⽬录。

  3. 启动集群,进⾏数据库⼀致性检查 gpcheckcat

  4. 运⾏删除镜像的脚本,将删除脚本放⼊ remove_mirro.sh 中,并使⽤以下语句调整脚本的属性 chmod 777 remove_mirror.sh
    使⽤ gpadmin ⽤户运⾏,hostfile 作为参数传⼊。hostfile 中列出集群中所有主机的主机名称。示例如下:

  5. 启动数据库,进⾏数据库⼀致性检查

  6. 删除镜像计算节点的数据⽬录。

    ⾄此删除集群镜像就结束了。

删除脚本如下(执行要慎重呀,我上次把库搞坏了。。。。)

其实过程就是:

使用命令select gp_remove_segment_mirror(1::int2);或删除视图gp_segment_configuration执行完成后,再使用gpstate会报错:

gpstate:lhrgp40:gpadmin-[CRITICAL]:-gpstate failed. (Reason='Invalid GpArray: Master: lhrgp40:/opt/greenplum/data/master/gpseg-1:content=-1:dbid=1:role=p:preferred_role=p:mode=n:status=u
Standby: Not Configured
Segment Pairs: (Primary: lhrgp41:/opt/greenplum/data/primary/gpseg0:content=0:dbid=2:role=p:preferred_role=p:mode=s:status=u, Mirror: None)
(Primary: lhrgp42:/opt/greenplum/data/primary/gpseg1:content=1:dbid=3:role=p:preferred_role=p:mode=s:status=u, Mirror: None)') exiting...

目前没找到对应的办法,所以非必要不删除mirror。

gpaddmirrors

将镜像Segment添加到最初没有配置镜像的Greenplum数据库系统。

概要

描述

gpaddmirrors工具为初始仅配置了主Segment实例的现有Greenplum数据库系统配置镜像 Segment实例。该工具创建镜像实例并开始主Segment实例和镜像Segment实例之间的在线复制进程。一旦所有 的镜像与其主Segment同步好,用户的Greenplum数据库系统就建立了完全的数据冗余。

Important: 在在线复制进程中,Greenplum数据库应处于静止状态,负载和其他查询不应该运行。

默认情况下,该工具将提示用户输入将创建镜像Segment数据目录的文件系统位置。如果用户不想被提示, 可以使用-m选项传递包含文件系统位置的文件。

镜像位置和端口必须与用户的主Segment数据位置和端口不同。如果用户创建了额外的文件空间,则还将提示用户 为每个文件空间提供镜像位置。

该工具使用预定义的命名习惯在指定位置中为每个镜像Segment实例创建唯一的数据目录。必须为镜像Segment 实例声明与主Segment实例相同数量的文件系统位置。如果用户希望在同一位置创建镜像数据目录,可以多次 指定同样的目录名称,或者可以为每个镜像输入不同的数据位置。对于文件系统位置,请输入绝对路径。例如:

还有,用户可以运行gpaddmirrors工具,并使用-i选项提供详细的 配置文件。如果用户希望镜像Segment位于完全不同于主Segment的主机集合上,这非常有用。镜像配置文件的 格式是:

此处row_id是文件中的行号,contentID是segment实例的content_id, address是segment所在的主机名或IP地址,port是交互端口, data_dir是segment实例数据目录。

例如:

gp_segment_configuration系统目录表可以帮助用户确定当前的主Segment配置, 以便用户可以规划镜像Segment配置。例如,运行以下的查询:

如果在后补的镜像主机上创建镜像,则新的镜像Segment主机必须预先安装Greenplum数据库软件,并且被配置为 与现有的主Segment主机完全相同。

用户必须确保运行gpaddmirrors的用户(gpadmin用户)有权在指定 的数据目录位置写入。用户可能想要在Segment主机上创建这些目录并且在运行gpaddmirrors 之前将这些目录的拥有者改为(chown)适当的用户。

Note: 该工具在系统内部采用SSH连接执行各项操作任务。在大型Greenplum集群、云部署或每台主机部署了大量的 segment实例时,可能会遇到超过主机最大授权连接数限制的情况。此时需要考虑更新SSH配置参数MaxStartups 以提高该限制。更多关于SSH配置的选项,请参考您的Linux分发版的SSH文档。

选项

-a(不提示)

以静默模式运行 - 不提示输入信息。如果使用这一选项,必须使用-m或-i提供一个配置文件。

-B parallel_processes

并行启动的镜像设置进程的数量。如果未指定,则该工具将启动最多10个并行进程,具体取决于需要 设置多少个镜像Segment实例。

-d master_data_directory

主数据目录。如果没有指定,将使用为$MASTER_DATA_DIRECTORY设置的值。

-i mirror_config_file

一个配置文件,每个要创建的镜像Segment对应一行。用户必须为系统中的每个主Segment都在该 文件中列出一个镜像Segment。该文件格式如下(如gp_segment_configuration 目录表中的每个属性):

此处row_id是文件中的行号,contentID是segment实例的content_id, address是segment所在的主机名或IP地址,port是交互端口, data_dir是segment实例数据目录。

-l logfile_directory

用来写日志的目录,默认为~/gpAdminLogs。

-m datadir_config_file

包含将创建镜像数据目录的文件系统位置列表的配置文件。如果未提供,该工具将提示用户输入位置。 文件中的每一行都指定一个镜像数据目录位置。例如:

-o output_sample_mirror_config

如果用户不确定如何布置-i选项使用的镜像配置文件,用户使用这一选项运行 gpaddmirrors来生成一个基于主Segment配置的镜像配置文件示例。该工具 将提示用户输入用户的镜像Segment数据目录位置(除非用户使用-m在一个文件 中提供了这些位置)。然后,用户可以编辑此文件根据需要将主机名更改为后补的镜像主机。

-p port_offset

可选。这个数字被用于计算用于镜像Segment的数据库端口和复制端口。默认偏移量为1000。 镜像端口分配计算如下:

主机端口 + 偏移量 = 镜像数据库端口

例如,如果主Segment的端口为50001,则默认情况下,其镜像将使用数据库端口51001。

-s(散布镜像)

在可用主机上散布镜像Segment。默认情况下,将把一组镜像Segment集合在一起放在不同于其 主Segment集合的后补主机上。镜像散布将把每个镜像放置在Greenplum数据库阵列中的不同主机上。 只有在阵列中有足够数量的主机(主机数大于每个主机的Segment实例数)时,才允许使用散布镜像方式。

-v(详细模式)

将日志记录输出设置为详细。

--version(显示工具版本)

显示该工具的版本。

-? (help)

显示在线帮助。

示例

使用和主要数据相同的一组主机向现有的Greenplum数据库系统添加镜像。通过在当前主Segment端口号上加上 100来计算镜像数据库端口和复制端口:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复