千家信息网

如何理解配置数据库高可用性中的SEGMENT镜像

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇文章为大家展示了如何理解配置数据库高可用性中的SEGMENT镜像,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前面介绍过了GREENPLUM数据库的备份和
千家信息网最后更新 2025年12月03日如何理解配置数据库高可用性中的SEGMENT镜像

本篇文章为大家展示了如何理解配置数据库高可用性中的SEGMENT镜像,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

前面介绍过了GREENPLUM数据库的备份和恢复。这部分主要介绍GREENPLUM的高可用性配置。GREENPLUM的高可用性是通过master和segment的镜像来实现的。这种镜像是基于服务器级别的镜像。因此,不仅可以提供存储级别的保护,还可以防止其它PC服务器硬件的损坏。
segment级别的镜像是通过把primary segment对应的mirror segment放置到不同的物理主机实现的。正常情况下,只有primary segment的instance处于工作状态,所有primary segment上的变化通过文件块的复制技术拷贝到mirror segment。因此,存放mirror segment的主机上只有复制用的进程,而不存在mirror segment instance。一旦primary segment出现故障,mirror segment的复制进程停止,并启动instance,保证数据库的操作继续。

segment的故障检测是通过后台进程ftsprobe实现的,并可以进行自动容错,不需要DBA进行干预。ftsprobe的检测间隔是通过global服务参数gp_fts_probe_interval进行定义的,默认值是1分钟,通常这个参数的设置应该与参数gp_segment_connect_timeout保持一致。一旦ftsprobe进程发现primary segment出现故障,它会在数据字典中标记该segment已经停止。只有管理员对其进行恢复后,才会改变状态。
如果系统没有进行segment级别的镜像,当出现segment故障后,整个系统都将脱机,直到恢复故障segment后,才可以重新启动。
启用segment镜像,既可以在初始化系统时进行,也可以为存在的系统添加mirror。
如果在初始化系统是要求添加镜像,需要在初始化配置文件中添加如下参数
MIRROR_PORT_BASE 指定第一个mirror segment的端口号,其它mirror segment在此基础上加1,它的设置范围是1到65535,但是设置时要注意不能与primary segment冲突。
REPLICATION_PORT_BASE 指定第一个primary segment用于数据复制的端口号,其它primary segment以此为基础,每次加1,计算复制用端口号。它的设置也不要与primary segment冲突。取值范围1到65535
MIRROR_REPLICATION_PORT_BASE 指定第一个mirror segment用于数据复制的端口号,其它mirror segment以此为基础,每次加1,计算复制用端口号。它的设置也不要与mirror segment冲突。取值范围1到65535
MIRROR_DATA_DIRECTORY 指定了mirror segment的数据目录,声明的目录数量必须与primary segment的目录数量一致,而且要保证进行初始化操作的os用户对这些目录有读写权限。
然后调用gpinitsystem进行初始化,默认是使阵列中的主机相互存放对方的镜像。如果主机的数量多于segment的数量,可以使用-S选项,指定使用哪些主机作为镜像用。
如果原有系统没有镜像,我们也可以向存在的系统添加镜像。首先要获取添加镜像的构造文件。这个文件可以自己编辑,也可以通过gpaddmirrors自动生成,然后在此基础上根据需要进行修改。比如自动生成添加mirror的构造文件
$ gpaddmirrors -o filename
文本编辑器打开该构造文件,可以看到其格式如下
mirror[content]=content:hostname:address:port:mir_replication_port:pri_replication_port:datadir_location
默认配置是原有的主机间互为镜像,我们也可以添加新的主机作为镜像使用,从而减少镜像对性能的影响。
在得到mirror构造文件后,可以掉用命令启用镜像。
$ gpaddmirrors -i mirror_config_file
这时系统会根据配置文件设置,复制镜像,并对镜像进行同步,提供保护。需要注意的是,在添加镜像前应该先备份数据库,防止镜像添加失败(比如网路配置问题,内核参数设置不正确可能导致添加镜像失败)。因为GREENPLUM目前只能添加镜像,不能删除镜像。如果添加镜像失败会导致系统处于不正常状态。
由于mirror segment可以自动failover,因此当primary segment出现故障时,管理员可能无法及时察觉。所以一方面管理员应该对系统定期检查,另外一方面如果系统性能大幅下降(理论上,如果采用互为镜像方式,当一个主机出现故障时,整个系统性能下降一半)管理员也应该进行系统检查,判断是否有segment已经down掉了。
检查是否有segment down掉,可以在master上执行gpstate,如果看到类似这样的内容[WARN]:-Total primary segment failures (at master) = 1 <<<<<<,说明有primary segment down掉了。进一步检查故障segment,可以用SQL SELECT * FROM gp_segment_configuration WHERE status='d';获取细节信息,请注意故障段的主机,端口号,首选身份,以及目录这样的信息,可以在troubleshooting的过程中提供帮助。还可以通过gpstate -c看到primary与mirror之间的映射关系。
此外,DBA还应该检查master和segment上的日志,通过$ gplogfilter -t可以获取WARNING, ERROR, FATAL 或者PANIC级别的日志信息帮助进行troubleshooting。
一般来说,造成segment故障的原因主要就是三大类,一类是segment主机由于硬件问题或者网络问题无法访问,一类是segment的相关进程出现故障,比如被kill掉了。还有就是存储问题,比如控制器故障等等。在这些问题被解决之后,系统不会自动恢复故障segment,必须由DBA手工进行恢复。这需要在master上调用命令$ gprecoverseg 进行。它从故障之后产生的变化开始捕获,整个操作会在后台进行。所以需要DBA调用命令gpstate -m判断恢复操作完成的进度情况。
如果原始主机无法恢复,并且启用mirror,用命令$ gprecoverseg -i recover_config_file,指定新的主机进行恢复。配置文件的格式如下
failed_host_address:port:datadir
recovery_host_address:recovery_host_name:port:replication_port:fselocation
当然替代主机需要事先装好greenplum的软件。另外,3.x版本中的参数gp_fault_action已经废弃掉了。gprecoverseg在4.x版本中可以联机执行。

注:如果segment出现故障,已经执行的操作会中断,需要重新提交操作

上述内容就是如何理解配置数据库高可用性中的SEGMENT镜像,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

镜像 故障 系统 主机 数据 文件 配置 参数 口号 数据库 目录 级别 进程 问题 检查 可用性 命令 基础 数量 管理员 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全审计系统执行标准 无锡营销网络技术优势 腾讯云轻量服务器搭建自己的线路 洛阳九州网络技术有限公司 数字网络技术专业排名 什么服务器主板好用 软件开发费计入哪个账户 碧晨网络技术有限公司怎么样 启明星辰数据库审计 前两位编号必须有效数据库 七台河网络安全宣传周活动 达梦数据库有限公司属于阿里吗 北辰区项目网络技术不二之选 区块链与网络安全乡关系 涉密系统数据库安全级别 招聘 软件开发 公安局 计算机网络技术验收规范 手机监听软件开发 信息处理技术员数据库视频 杭州网络安全专业排名 国家在数据库温度有多少 郑州市软件开发工资待遇 爱快对接iptv网关服务器 共享充电宝软件开发多少钱 java获取数据库名称 软件开发单位查询 服务器内存爆满 网络安全扫描技术网络内容安全 兰州人才引进网络安全 1433端口号是什么数据库
0