在greenplum数据库运维过程中,会出现各种问题,上次分享的是因为磁盘问题导致数据库的数据文件损坏,造成一些数据不能查询,假如在上次的情况下,是主机的磁盘彻底损坏,造成数据库的实例宕机,数据无法恢复,且主机换盘需要很长时间才能完成,但是又不能耽误第二天的业务正常使用,那该怎么做呢,下面就来介绍下greenplum数据库的备机替换流程,通过备机替换把有问题的主机踢出去,把正常的主机加到集群中,来完成集群的正常使用,根据集群数据量大小、集群规模大小及集群中业务表的使用情况,备机替换大概需要3到6小时之内完成,下面详细介绍下备机替换流程及替换过程中遇到的问题。
备机: sdw4192.168.100.106
问题主机:sdw3192.168.100.105
把备机的主机名修改成替换下来的主机名(源主机),保持主机名一致,然后修改/etc/hosts文件,修改需要替换主机的IP地址,操作如下:
检查集群状态,查看问题主机,确定要替换下来的主机名:
检查确认sdw3主机为问题主机。
然后登录备机修改主机名:
hostnamesdw3
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sdw3
原文件信息:
[root@mdw~]# cat /etc/hosts
127.0.0.1 localhost
#Greenplum hosts start
192.168.100.101 mdw
192.168.100.102 smdw
192.168.100.103 sdw1
192.168.100.104 sdw2
192.168.100.105 sdw3
修改成如下
[root@mdw~]# cat /etc/hosts
127.0.0.1 localhost
#Greenplum hosts start
192.168.100.101 mdw
192.168.100.102 smdw
192.168.100.103 sdw1
192.168.100.104 sdw2
192.168.100.106 sdw3
分发/etc/hosts文件到所有集群主机
source/usr/local/greenplum-db/greenplum_path.sh
集群做互信
[root@mdw~]# gpssh-exkeys -f /tmp/all_hosts
分发
gpscp-f /tmp/all_hosts /etc/hosts =:/etc/hosts
验证是否分发成功
[root@mdw~]# gpssh -f /tmp/all_hosts
[root@mdw~]# gpssh -f /tmp/all_hosts
=>cat /etc/hosts|grep sdw3
[sdw3]192.168.100.106 sdw3
[smdw]192.168.100.106 sdw3
[mdw] 192.168.100.106 sdw3
[sdw2]192.168.100.106 sdw3
[sdw1]192.168.100.106 sdw3
cat/etc/sysctl.conf
cat/etc/security/limits.conf
cat/etc/security/limits.d/90-nproc.conf
不一致迁移(若有不一致,将生产节点的参数文件scp到当前待替换节点)
scp192.168.100.106:/etc/sysctl.conf /etc/sysctl.conf
scp1192.168.100.106:/etc/security/limits.conf /etc/security/limits.conf
scp192.168.100.106:/etc/security/limits.d/90-nproc.conf/etc/security/limits.d/90-nproc.conf
ulimit-a
使参数生效
/sbin/sysctl-p
如果备机中已存在greenplum数据库对应的软件包,且版本一致,则不需要操作,如没有对应的软件包,则从集群其他主机把软件包拷贝到备机的相应目录下,并赋对应权限,操作如下:
ls -lrt /usr/local
scp -r192.168.100.104:/usr/local/greenplum* /usr/local/
chown -R gpadmin:gpadmin greenplum*
rm -rf greenplum-dbgreenplum-cc-web(将未软连接的文件删除)
ln -s greenplum-db-5.23.0 greenplum-db
Redhat 6 版本
serviceiptables status
serviceiptables stop
Redhat 7版本
systemctlstatus firewalld
systemctlstop firewalld
备机创建和源主机相同的文件夹目录
具体目录根据集群目录而定
chown-R gpadmin:gpadmin /data*
mkdir/data{1,2}/{primary,mirror}
mkdir/data{1,2}/{primary,mirror}/{gpfs,default}
此处有两种方式:
1、修改pg_hba.conf
vi$MASTER_DATA_DIRECTORY/pg_hba.conf
reject =====》禁止用户连接
gpstop-u =====》使配置生效
2、重启数据库到限制模式
停止数据库:
gpstop-a -M fast
启动数据库:
gpstart-aR
gprecoverseg-F
开始数据同步,通过gpstate-e查看同步进度
数据同步完成
开始进行primary和mirror实例的角色切换
gprecoverseg-r
查看进度如下:
角色切换完成
集群状态正常
此处有两种方式
1、修改pg_hba.conf
vi$MASTER_DATA_DIRECTORY/pg_hba.conf
#reject =====》解除禁止用户连接
gpstop-u =====》使配置生效
2、重启数据库到限制模式
停止数据库:
gpstop-a -M fast
启动数据库:
gpstart-a
以上就是整个备机替换的操作流程,仔细观察的话,会发现环境准备是备机替换的重要部分,环境准备如果有问题的话,在替换过程中就会出现各种报错及问题,在替换过程中如果出现问题,请不要着急,把环境准备这块仔细检查一遍,然后再看问题,就会发现问题已经解决了。
在修改集群的/etc/hosts文件时,由于集群没有做ssh互信,导致在修改时出现一些主机的遗漏,而遗漏的主机恰好和备机在一个数据环内,则会出现该主机对应备机上的实例无法恢复的情况。
这个问题在做备机替换的过程中不会出现问题,但是在替换完成过后使用中会出现问题,例如集群的用户连接数设置为unlimited,但是备机的则是有限制的,在使用过程中就会出现segment主机连接数问题,导致实例宕机或者应用连接上不去等。
防火墙没有关闭,这个问题会出现在数据同步过程中,集群同步出错。
如果备机对应的数据库实例文件夹没有创建,则会在同步过程中报文件夹不存在,数据无法同步问题,所以在环境准备的时候,一定要把对应的文件夹创建好。
以上就是我们在生产中遇到的一些常见问题,往往因为这些看似很小的问题,却造成了很大的问题,浪费很多时间,所以细节决定成败,磨刀不误砍柴工,在做任何事情的时候,准备工作做充分,后续就会事半功倍。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130159.html
摘要:考拉订单流推送申报单推送物流信息等供应链相关业务已接入分片任务,极大提高了业务吞吐量降低压力,提升了通关效率。支撑双十一黑五双十二等大促,高峰期统一暂停非关键定时任务,让出系统资源,提高业务系统稳定性。 此文已由作者杨凯明授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 1.背景 目前项目中使用的定时任务框架存在下面这些问题 没有统一的定时任务管理平台 目前项目...
阅读 1235·2023-01-11 13:20
阅读 1542·2023-01-11 13:20
阅读 994·2023-01-11 13:20
阅读 1650·2023-01-11 13:20
阅读 3958·2023-01-11 13:20
阅读 2456·2023-01-11 13:20
阅读 1288·2023-01-11 13:20
阅读 3450·2023-01-11 13:20