暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

greenplum 数据库做备机替换

大树96 2023-09-06
236

在工作环境中,我们可能会遇到主机硬件损坏无法在短时间内修复,故障主机的 primary 和 mirror 实例无法使用。此时属于该主机的 primary 实例是单实例状态,如果单实例再次宕机集群将变成 " 双宕”,无法使用有很大的风险。


这时就需要用到备机替换,用一台正常主机替换故障主机。具体步骤如下。


前提条件:此文章所用的主机 “正常主机” 是之前被替换下来的备机,所以环境都是准备好的,如果是一台刚装好的主机,需要按照安装教程,一直做到数据库初始化的上一步。


集群正常运行,无实例宕机。


用 gps01(192.168.210.11, 备) 替换 gps02(192.168.210.35, 旧)



1. 核查两台主机的文件内容是否一致,如果不一致以旧主机为主修改。


cat /etc/security/limits.conf


cat /etc/security/limits.d/20-nproc.conf


cat /etc/selinux/config


cat /etc/sysctl.conf


数据库安装目录版本



2. 备机不能有 gp 实例在运行,元数据目录不能有残留文件。


gps01 无 greenplum 实例



data1 data2 目录下有残留文件




3. 登录 gps01 修改主机名


sudo hostname gps02


sudo cp /etc/sysconfig/network /etc/sysconfig/network220615. bak


sudo vi /etc/sysconfig/network


NETWORKING=yes


HOSTNAME= gps02


hostnamectl --static set-hostname gps02


重新连接主机使修改生效



4. 备份集群所有主机的 / etc/hosts 文件 (在 master 节点)


   gpssh -f all_hosts


 => sudo cp /etc/hosts /etc/hosts.bak220615


 => exit



单独备份备机 hosts 文件 (备机操作)


sudo cp /etc/hosts /etc/hosts.bak220615 



5. 修改 hosts 文件。


sudo vi /etc/hosts


将原本的


192.168.210.35 gps02


更改为


192.168.210.11 gps02



这一步用 sudo 权限输入 root 密码,或者做主机间 root 用户的互信传文件,生产上尝试能否传输到 / etc 下 不能直接传的话 就先传到家目录下 再 sudo 覆盖


gpscp -f ~/all_hosts /etc/hosts =:/etc/hosts


备机单独传输


scp /etc/hosts 192.168.210.11: /etc/hosts



确认 hosts 文件分发成功 (在 master 节点),备机单独确认。


gpssh -f ~/all_hosts


=>cat /etc/hosts | grep  gps02


=>exit



7. 集群做互信 (将 master 主机的 hosts 文件中的 ip 修改后就可以做互信)


先将 master 的 known_hosts 文件重命名 再做互信 


cd /home/gpadmin/.ssh 


    mv known_hosts known_hosts220615.bak


gpssh-exkeys -f ~/all_hosts



8. 查看元数据目录路径,确认建立相应的文件(root 权限,master 主机)


1. 先查到 gps02 主机的 dbid


 


2. 再根据 dbid 查路径。


 



9. 在 gps01(备)建立目录,并修改权限。


mkdir -p /data1/primary/default


mkdir -p /data1/mirror/default


mkdir -p /data1/primary/gpfs


mkdir -p /data1/mirror/gpfs



mkdir -p /data2/primary/default


mkdir -p /data2/mirror/default


mkdir -p /data2/primary/gpfs


mkdir -p /data2/mirror/gpfs


chown -R gpadmin:gpadmin /data*



10. 联系应用侧停调度进行全量恢复 (在 master 节点),需要先将 gps02(192.168.210.35)上的实例全部宕停 192.168.210.11 上如果有 gp 的实例也需全部宕停。


192.168.210.11 上无实例



11. 将残余进程清理干净


psql -c “chekpoint”


  gpstop -M fast



12. 以维护模式启动数据库


  gpstart -R


  gprecoverseg -F


  使用 gpstate -e 查看同步进度



13. 等到数据同步完成需要重启数据库切换角色 (gp4 版本)


停止数据库


gpstop 



14. 启动数据库 gpstart


查看数据库状态确认没问题 gpstate -e



可能会遇到的问题:


备机替换无法建立互信,需要输入密码,可能是 master 节点的 known_hosts 有旧的主机互信,需尝试删除。


如果发现宕停的实例不足 12 个,尝试重启主机恢复正常。


如果发现有的主机不能传文件,可能是 scp 命令没有 x 权限,赋权即可。


感谢您能看到最后,如对您有所帮助请点击左边的大拇指为我点赞,谢谢。
最后修改时间:2023-09-08 09:41:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论