Greenplum高可用-从失效segment恢复

本主题将指导您在一个或多个段或主机出现故障并希望恢复故障段时应采取的措施。你所遵循的恢复路径主要取决于以下三种情况中哪一种适合你的情况:

  • 希望就地恢复到当前主机
  • 希望恢复到集群内的其他主机
  • 希望恢复到集群外的新主机

在这些场景中遵循的步骤可能有所不同,具体取决于:

  • 是进行增量恢复还是完全恢复
  • 您是想恢复所有段还是部分段

注:增量恢复只有在将段恢复到当前主机(就地恢复)时才有可能。

前提

所有段都启用镜像。

  • 您已经确定了哪些部分失败了。如有必要,请参见检查失败段。
  • 协调器主机可以连接到段主机。
  • 所有导致段失败的网络或硬件问题都已解决。

恢复场景

本节记录了3种不同的段恢复场景的步骤。请按照链接找到指导您完成每个场景的说明。

  • 就地恢复到当前主机
    • 增量恢复
    • 完全恢复
    • 差异恢复
  • 恢复到集群内的其他主机
  • 恢复到集群外的新主机

就地恢复到当前主机

就地恢复到当前主机时,您可以在增量恢复(默认值)、完全恢复和差异恢复之间进行选择。

增量恢复

1 恢复所有segments,运行gprecoverseg,不带选项:

gprecoverseg

2 恢复部分segments
(1)手动创建recover_config_file文件在您选择的位置,其中每个要恢复的段有自己的行格式

failedAddress|failedPort|failedDataDirectory或failedHostname|failedAddress|failedPort|failedDataDirectory

对于多个段,为要恢复的每个段创建一个新行,为每个段指定主机名(可选)、地址、端口号和数据目录。例如:

failedAddress1|failedPort1|failedDataDirectory1
failedAddress2|failedPort2|failedDataDirectory2
failedAddress3|failedPort3|failedDataDirectory3

或者

failedHostname1|failedAddress1|failedPort1|failedDataDirectory1
failedHostname2|failedAddress2|failedPort2|failedDataDirectory2
failedHostname3|failedAddress3|failedPort3|failedDataDirectory3

(2)或者,使用以下命令生成示例恢复文件;如果需要,您可以编辑生成的文件:

$ gprecoverseg -o /home/gpadmin/recover_config_file

(3)将recover_config_file传递给gprecoverseg -i命令:

$ gprecoverseg -i /home/gpadmin/recover_config_file  

完全恢复

1 恢复所有segments,执行gprecoverseg -F:

gprecoverseg -F

2 恢复特定segments:
(1)在您选择的位置手动创建一个recover_config_file文件,其中每个要恢复的段都有自己的行,格式如下:

failedAddress1|failedPort1|failedDataDirectory1<SPACE>failedAddress2|failedPort2|failedDataDirectory2

或者

failedHostname1|failedAddress1|failedPort1|failedDataDirectory1<SPACE>failedHostname2|failedAddress2|failedPort2|failedDataDirectory2

(2)或者,使用以下命令生成一个示例恢复文件,并编辑结果文件以匹配所需的恢复配置:

$ gprecoverseg -o /home/gpadmin/recover_config_file

(3)输入上一步生成的配置文件,执行如下命令:

$ gprecoverseg -i recover_config_file

3 执行“恢复后任务”部分。

差异恢复

按照以下步骤进行差动恢复:
1 执行 gprecoverseg --differential 命令

恢复到同集群不同主机

注:当恢复到集群中的其他主机时,只能进行完全恢复。

按照以下步骤将所有段或部分段恢复到集群中的不同主机:
1 在您选择的位置手动创建一个recover_config_file文件,其中每个要恢复的段都有自己的行,格式如下:

failedAddress|failedPort|failedDataDirectory<SPACE>newAddress|newPort|newDataDirectory

failedHostname|failedAddress|failedPort|failedDataDirectory<SPACE>newHostname|newAddress|newPort|newDataDirectory

或者,使用以下命令生成一个示例恢复文件,并编辑结果文件以匹配所需的恢复配置:

$ gprecoverseg -o -p /home/gpadmin/recover_config_file

2 输入上一步生成的配置文件,执行如下命令:

$ gprecoverseg -i recover_config_file

3 执行“恢复后任务”部分。

恢复到集群外的新主机

注:当恢复到新主机时,只能进行完全恢复。

新主机必须:

  • 是否安装和配置了与故障主机相同的Greenplum数据库软件
  • 具有与故障主机相同的硬件和操作系统配置(相同的主机名、操作系统版本、应用的操作系统配置参数、区域设置、gpadmin用户帐户、创建的数据目录位置、交换的ssh密钥、网络接口数量、网络接口命名约定,等等)
  • 是否有足够的磁盘空间来容纳这些段
  • 能够无密码连接到所有其他现有的段和协调器。

恢复步骤
1 打开新的主机
2 将所有段恢复到新主机上。

gprecoverseg -p <new_host_name>

您也可以指定多个主机。但是,请确保在一次恢复到两台主机时不会触发双故障场景。

gprecoverseg -p <new_host_name1><new_host_name2>

3 执行“恢复后任务”部分。

恢复后任务

完成gprecoverseg后,执行以下步骤:
1 验证段状态和首选角色:

select * from gp_segment_configuration

2 监控镜像同步进度:

gpstate - e

3 如果需要,可以执行以下命令将段返回到首选角色:

gprecoverseg - r

你可能感兴趣的:(Greenplum,php,开发语言)