Greenplum部署-4. standby及master故障切换 作者: sysit 分类: d 发表于 2018-12-26 188人围观 ## 4.1 增加standby * 创建目录 > 如果目录已经事先挂载到磁盘上,则此步骤略过 ``` # 在standby上执行 mkdir /gpdisk/master chown gpadmin:gpadmin /gpdisk/master #或者在master上执行,前提是已经创建了信任关系 #master操作 gpssh -h gpdb2.sysit.cn -v -e 'mkdir -p /gpdisk/master' gpssh -h gpdb2.sysit.cn -v -e 'chown gpadmin:gpadmin /gpdisk/master' # master上操作必须免密,如果不能免密登录,参见前文,使用gpssh-exkeys工具进行免密操作 ``` * 初始化standby ``` # 在master服务器上执行 su - gpadmin gpinitstandby -s gpdb2.sysit.cn #中间输入一次Y ``` * 环境变量 ``` # standby服务器 su - gpadmin vi ~/.bashrc source /usr/local/gpdb/greenplum_path.sh export MASTER_DATA_DIRECTORY=/gpdisk/master/gpseg-1 export PGPORT=5432 export PGUSER=gpadmin #可选 export PGDATABASE=default_login_database_name # 可选 export LD_PRELOAD=/lib64/libz.so.1 ps ``` * 查看 ``` # master上 su - gpadmin psql -d postgres postgres=# select string_agg(role||'-'||hostname,'|') from gp_segment_configuration where content='-1'; string_agg ------------------------------------------------- p-gpdb1.sysit.cn|m-gpdb2.sysit.cn ``` ## 4.2 master故障切换 * 模拟故障 ``` # 查询Master进程 ps -ef | grep postgres kill -9 13452 # 上面查询到的Master进程pid ``` * 测试连接 ``` # 测试是否可以连接到集群(失败) psql -d postgres ``` * 切换到Standby ``` #standby上执行 source .bashrc echo ${MASTER_DATA_DIRECTORY} echo $GPPORT gpactivatestandby -d ${MASTER_DATA_DIRECTORY} ``` * 测试切换成功 ``` # 测试是否可以连接到集群(成功) psql -d postgres ``` * 高级姿势:切换master的同时创建新的standby ``` #如果想在切换的同时创建一个新的Standby,可以执行如下命令 gpactivatestandby -d ${MASTER_DATA_DIRECTORY} -c new_standby_hostname #切换完成后,在新Master主机上连接数据库并运行ANALYZE psql dbname -c 'ANALYZE;' ``` ## 4.3 修复并回滚到原主机 ``` # 初始化standby,如果数据不一致或者更换了磁盘,清空数据,重新初始化standby # 在新的master服务器上执行 gpinitstandby -s gpdb1.sysit.cn # 停止当前master,即原来的stanby,现在的master机器,gpdb2.sysit.cn。 gpstop -m # 原服务器上执行,即gpdb1.sysit.cn上执行 gpactivatestandby -d $MASTER_DATA_DIRECTORY # 查看状态 gpstate -f # 将原来的standby重新初始化 gpinitstandby -s gpdb2.sysit.cn #附1,同步Standby并更新到最新的同步 gpinitstandby -s standby_master_hostname -n #附2,删除standby gpinitstandby -s standby_master_hostname -r ``` 如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作! 赞赏支持