经过多次测试,GPDB集群迁移只需要把GPDB数据和安装目录直接rsync过去即可。这样才能保证权限和用户完整的迁移过去。
如果通过 导入导出的方式来迁移,复杂而且 需要做的操作很多。
segment迁移也差不多的套路:迁移目录,修改hosts,免密,启动。
这个方法只适合,整个集群的迁移,或者某个节点的迁移。大同小异。
需求描述:
|
旧机器(旧集群) |
新机器(新集群) |
master |
192.168.2.221 |
192.168.2.222 |
segment |
192.168.4.200 |
192.168.4.200 |
segment |
192.168.4.201 |
192.168.4.201 |
我master机器磁盘损坏了,需要把master节点迁到新的机器,其他两个segment不变。
我们总共分几步来进行,步骤如下:
如下步骤是按照我当时安装旧集群的方式来准备的。每个人的环境不一样。
1、新机器
说明:实际上面新机器只要把环境弄好,只需要 创建gpdb管理用户即可,我们用的是gpadmin。但是建议在新机器上面安装一下gpdb,确保依赖包正常。最后迁移的时候把原来的安装目录移除,使用旧的即可。
安装相关的依赖包
[root @mdw ~]# yum -y install rsync coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl perl-devel perl-ExtUtils* OpenIPMI-tools openldap openldap-devel logrotate gcc-c++ python-py bzip2-devel libevent-devel apr-devel curl-devel ed python-paramiko python-devel |
只需要创建gpadmin:
[root @mdw ~]# groupadd -g 530 gpadmin [root @mdw ~]# useradd -g 530 -u530 -m -d /home/gpadmin -s /bin/bash gpadmin [root @mdw ~]# passwd gpadmin #记录下密码,master和segment密码一致。如果忘记segment密码修改成和这个密码一样。不会影响旧的集群联系 |
绑定 hosts:
[root @mdw conf]# vi /etc/hosts 192.168 . 2.222 mdw 192.168 .4 .200 sdw1 192.168 .4 .201 sdw2 |
修改主机名:
[gpadmin @mdw ~]$ vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=mdw |
修改内核配置:
[root @mdw conf]# cat /etc/sysctl.conf kernel.shmall = 4294967296 kernel.shmmax = 500000000 kernel.shmmni = 4096 kernel.shmall = 4000000000 kernel.sem = 500 1024000 200 4096 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.ip_forward = 0 net.ipv4.conf. default .accept_source_route = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.arp_filter = 1 net.ipv4.ip_local_port_range = 1025 65535 net.core.netdev_max_backlog = 10000 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.overcommit_memory = 1 net.ipv4.tcp_synack_retries = 3 net.ipv4.tcp_syn_retries = 3 [root @mdw conf]# sysctl -p |
修改文件打开限制,添加以下内容
[root @mdw conf]# vi /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 |
关闭 SELINUX 安全设置
[root @mdw conf]# vi /etc/selinux/config SELINUX=disabled |
2、旧机器
1)如果有监控程序,先停止监控程序 gpcc stop,再停止gpdb,否则无法停止gpcc。
2)直接同步gpdb数据和安装 文件到新机器
[root @mdw conf]# rsync -avz --delete /home/gpadmin/gpdb 192.168 . 2.222 :/home/gpadmin/ [root @mdw conf]# rsync -avz --delete /data/gpdata 192.168 . 2.222 :/data [root @mdw conf]# rsync -avz --delete /home/gpadmin/greenplum-db 192.168 . 2.222 :/home/gpadmin/ [root @mdw conf]# rsync -avz --delete /home/gpadmin/.bashrc 192.168 . 2.222 :/home/gpadmin/ # 迁移 监控工具 [root @mdw conf]# rsync -avz --delete /home/gpadmin/greenplum-cc-web 192.168 . 2.222 :/home/gpadmin/ # 监控工具密码文件,如果不迁这个密码文件启动监控工具会报错 [root @mdw conf]# rsync -avz --delete /home/gpadmin/.pgpass* 192.168 . 2.222 :/home/gpadmin/ |
3、两个segment
1)备份 /home/gpadmin/.ssh/authorized_keys
因为新机器做免密之后会将旧机器的key覆盖掉,所以这个步骤用于迁移失败可以直接将旧的key粘贴到后面,这样不需要重新做免密。
cp /home/gpadmin/.ssh/authorized_keys /home/gpadmin/.ssh/authorized_keys_20210927 |
2)修改/etc/hosts
把192.168.2.221 mdw(旧IP) 改成192.168.2.222 mdw(新IP)
4、新机器
1)免密
[gpadmin @mdw config]$ cd /home/gpadmin/gpdb/config [gpadmin @mdw config]$ gpssh-exkeys -f hostlist #提示输入上面创建的密码 |
确定免密成功:
[gpadmin @mdw config]$ gpssh -f hostlist -e 'pwd' |
2)修改/data/gpdata/master/gpseg-1/pg_hba.conf
将192.168.2.221 (旧IP)改成 192.168.2.222(新IP)
3)启动gpdb
[gpadmin @mdw config]$ gpstart -a 启动监控程序 gpcc start |