PG中文社区 /

EcoX-PostgreSQL高可用集群最佳实践(续)

原作者:何敏  创作时间:2019-07-01 16:41:40+08
wangliyun 发布于2019-07-02 08:20:40           评论: 3   浏览: 8006   顶: 674  踩: 651 

作者简介:

何敏,目前服务于成都文武信息技术有限公司,有丰富的开发和运维经验。参与开发公司的PostgreSQL高可用系统EcoX、RDS系统,对PostgreSQL高可用系统有非常深入的了解。服务过银行、保险、电力等行业客户。

1实践简介

EcoX数据库高可用集群管理系统软件,该软件包含数据库高可用、读写分离、负载均衡、连接池等功能,能够保证业务7*24小时连续运行,保证数据零丢失。

在上期我们已经介绍过如何全新搭建一个EcoX-PostgreSQL高可用系统,期间有很多用户咨询对于已有集群,用ECOX如何接管,所以这期我们介绍如何用ECOX集群管理系统对一个已有的PostgreSQL流复制集群进行高可用改造。

对于已有的环境如下,PostgreSQL流复制集群已经工作,其环境如下:

软件版本:

CENTER_PostgreSQL_Community

现有PostgreSQL流复制集群架构:

CENTER_PostgreSQL_Community

2安装过程

2.1安装仲裁集群(略)

仲裁集群安装过程比较简单,需要注意myid的配置。如果启动失败,查看是否不是防火墙的问题。

仲裁集群最好是独立于数据库集群安装,推荐5节点集群,最低要求3个节点。

2.2安装EcoX高可用管理系统

在所有的数据库节点都需要安装EcoX高可用关系软件,本示例中采用三台服务器作为PostgreSQL数据库节点,分别是:10.9.5.21,10.9.5.22,10.9.5.24,因此在这几个服务器上需要安装EcoX。

2.2.1通过rpm包安装

从成都文武信息技术有限公司官网下载EcoX安装包:http://w3.ww-it.cn/Fileud/lists/cate_id/30

将安装包拷贝到每台数据库服务器,使用rpm执行安装,默认安装到/usr/EcoX:

rpm -ivh EcoX-5.12.2-1.el6.x86_64.rpm 

2.2.2环境设置

设置环境变量:

export  PATH=/usr/EcoX/bin:$PATH
export  LD_LIBRARY_PATH=/usr/EcoX/lib:$LD_LIBRARY_PATH

添加postgres到sudoer中:

[root@pg21 ~]# sudo echo " postgres ALL=(ALL) NOPASSWD: ALL " >> /etc/sudoers

2.2.3修改配置文件

修改每台数据库服务器上的EcoX配置文件:/usr/EcoX/etc/EcoX.conf,配置文件的内容如下:

[root@pg21 etc]# cat ecox.conf
cluster=cluster_name
#init_role=comaster
pgcomaster_num=2
#auto_promote_slave=false
auto_promote_slave=true
#async_replication=yes
zkhost=10.9.5.20:4119,10.9.5.21:4119,10.9.5.22:4119,10.9.5.24:4119,10.9.5.35:4119,10.9.5.36:4119
zktimeout=20000
pghost=10.9.5.21
pgbin=/usr/pgsql-10/bin
pgport=5433
pgdata=/var/lib/pgsql/10/data
pgclient_net=10.9.0.0/16
pgcluster_net=10.9.0.0/16

#do_not_use_vip=true
eth_port=eth0
virtual_ip=10.9.5.200
netmask=255.255.255.0

do_not_use_comaster_vip=true
comaster_eth_port=eth0
comaster_virtual_ip=10.9.5.201
comaster_netmask=255.255.255.0

3管理已有集群

3.1备份数据库

有条件的情况下,最好是对数据库进行一次备份。当然对于流复制集群,其他节点的数据如果是追平的,不做备份也是可以接受的。

因为,EcoX在管理集群时不会对数据目录(data目录)做修改,不会影响数据库中历史数据。做备份,更多是一种保护手段。

3.2添加用户

在已有集群主节点上执行添加用户的SQL命令:

postgres=# create user user_for_rewind with password 'PostgreSQL@ww-it.cn';

3.3修改配置文件

3.3.1修改postgresql.conf文件

每个数据库节点的配置文件都需要修改,可以将这些参数放到最后面,方便区分,PostgreSQL会以最后的为准:

wal_log_hints=on
shared_buffers #根据物理机配置进行调整
work_mem #根据负载进行调整
temp_buffers #根据负载进行调整
maintainance_work_mem #按物理机配置进行调整
effective_cache_size #按物理机配置进行调整
wal_buffers #推荐32MB
full_page_write=on #安全性高
synchronous_commit=on #安全性高
checkpoint_compeletion_target #推荐0.7~0.9,具体需要根据IO表现来分配

3.3.2修改pg_hba.conf文件

每个数据库节点的配置文件都需要修改,IP段为几个流复制节点所在的网段:

host        postgres      user_for_rewind     10.9.5.0/24  trust

3.4依次停止数据库

先停止从节点,再停止主节点上的PostgreSQL数据库,使用pg_ctl命令停止数据库时,要加上-m fast参数,这样数据库会在停止前做一次Checkpoint,保证脏数据都刷回到磁盘:

pg_ctl -D /var/lib/pgsql/10/data -m fast stop

3.5依次启动EcoX

先启动主节点,再启动从节点上的EcoX软件,EcoX启动时会启动本节点的PostgreSQL数据库,并自动维护流复制关系:

ecox start

3.6查看节点状态

使用ecox show node查看本节点EcoX状态:

(1)查看主节点10.9.5.21 EcoX状态,节点角色为master:

-bash-4.1$ ecox show node
EcoX status: running
Node name  : node0000000000
Node role  : master

(2)查看从节点10.9.5.22 EcoX状态,节点角色为comaster:

-bash-4.1$ ecox show node
EcoX status: running
Node name  : node0000000001
Node role  : comaster

(3)查看节点10.9.5.24 EcoX状态,节点角色也为comaster:

-bash-4.1$ ecox show node
EcoX status: running
Node name  : node0000000002
Node role  : comaster

如果在ecox.conf中配置从节点个数为1,那么这个节点的角色将是slave,具体可以参考使用说明文档。

3.7查看集群状态

在任意节点上使用ecox show cluster查看集群状态:

-bash-4.1$ ecox show cluster
init cluster instance success
PostgreSQL 10.1 is compatible
node name     :  ip address  |  port  |  online
---------------------------------------------------------
node0000000000:  10.9.5.21  |  5410  |  TRUE
node0000000001:  10.9.5.22  |  5410  |  TRUE
node0000000002:  10.9.5.24  |  5410  |  TRUE
master     : node0000000000
comaster  1: node0000000001
comaster  2: node0000000002
last master: node0000000000
sync replication :node0000000001

4如何替换已有的高可用集群软件

需要先停止已有高可用集群软件,再进行上面第三节的操作步骤。

4.1pacemaker+corosync

pacemaker、corosync、pcsd等软件是和PostgreSQL数据库安装在一个节点上的,也即是说,每个PostgreSQL数据库节点上都有这些软件。下面是停止命令:

(1)首先停止pacemaker、corosync和pcsd的服务

[root@sljc_test1 ~]# service corosync stop
[root@sljc_test1 ~]# service pacemaker stop
[root@sljc_test1 ~]# service pcsd stop

(2)确保pacemaker、corosync和pcsd服务已经停止

[root@sljc_test1 ~]# ps -aux | grep corosync
[root@sljc_test1 ~]# ps -aux | grep pacemaker
[root@sljc_test1 ~]# ps -aux | grep pcsd

(3)确保pacemaker、corosync和pcsd的服务不会开机启动

[root@sljc_test1 ~]# chkconfig --list | grep corosync
[root@sljc_test1 ~]# chkconfig --list | grep pacemaker
[root@sljc_test1 ~]# chkconfig --list | grep pcsd

(4)卸载pacemaker、corosync和pcsd (这一步骤是放在安装EcoX前还是在安装并正常启动EcoX后,为了安全考虑,最好是卸载掉,避免误启动)

[root@sljc_test1 ~]# yum erase corosync
[root@sljc_test1 ~]# yum erase pacemaker
[root@sljc_test1 ~]# yum erase pcs

4.2pgpool

pgpool是以代理的方式管理PostgreSQL集群,一般是单独部署在数据库节点之外的,采用主、备双节点的方式保证自身高可用。

因此需要先停止备用pgpool节点,再停止主用pgpool节点,分别在对应节点执行:

[root@sljc_test1 ~]# pgpool -m fast stop

同样需要在每个节点删除PGPool的软件。

5后记和总结

至此,EcoX成功接管原来的PostgreSQL流复制集群,能够对原来的集群进行高可用管理。整个切换过程时间非常短(数据库停止、启动的时间),也不会对数据库产生其他影响,我们就可以享用数据库高可用等一系列的功能,保证数据库对外服务的连续性。

EcoX还有很多高级特色功能,例如:可以设置节点角色、节点VIP是否启用、可设置从节点个数、重启数据库、自动优化数据库配置文件等等,这里就不一一体验了,感兴趣的朋友可以到成都文武信息技术有限公司的官网下载EcoX全套资料进行了解和使用,链接:http://w3.ww-it.cn/Fileud/lists/cate_id/30。

对于接管其它高可用方案,需要正确停止集群,并且确保原先的集群管理软件不会再次启动,我们推荐的方法是在安全停机后,完整删除原先的集群管理软件。再进行ECOX的安装和配置。

CENTER_PostgreSQL_Community


评论:3   浏览: 8006                   顶: 674  踩: 651 

请在登录后发表评论,否则无法保存。

1# __ xcvxcvsdf 回答于 2024-10-23 13:01:12+08
https://wenshang.tiancebbs.cn/ http://taiying.njtcbmw.cn/jswx/ https://chqchengdong.tiancebbs.cn/ http://nalei.zjtcbmw.cn/qingdao/ http://js.sytcxxw.cn/hljhrb/ http://nalei.zjtcbmw.cn/shpudong/ http://xinguang.sctcbmw.cn/jiaozuo/ http://gx.lztcxxw.cn/jinshansh/ http://tuiguang.hntcxxw.cn/zpq/ https://zhongguancun.tiancebbs.cn/ http://cf.lstcxxw.cn/huludao/ https://lile.tiancebbs.cn/ http://taiying.njtcbmw.cn/chongqing/ https://shuangbai.tiancebbs.cn/ https://sanlin.tiancebbs.cn/ http://ty.cqtcxxw.cn/lanzhou/ http://ouyu.hftcbmw.cn/jbzp/

2# __ xcvxcvsdf 回答于 2024-10-12 22:03:13+08
https://su.tiancebbs.cn/hjzl/464889.html https://su.tiancebbs.cn/hjzl/457861.html https://www.tiancebbs.cn/wxgzp/53742.html https://aihuishou.tiancebbs.cn/sh/1655.html https://www.tiancebbs.cn/ershoufang/473590.html https://wuwei.tiancebbs.cn/qths/473742.html https://changshushi.tiancebbs.cn/hjzl/462798.html https://aihuishou.tiancebbs.cn/sh/870.html https://www.tiancebbs.cn/ershoufang/471318.html https://aihuishou.tiancebbs.cn/sh/163.html https://zulin.tiancebbs.cn/sh/617.html https://dongyuanxian.tiancebbs.cn/qths/453555.html https://su.tiancebbs.cn/hjzl/456463.html https://aihuishou.tiancebbs.cn/sh/1538.html https://su.tiancebbs.cn/hjzl/463408.html https://guoluo.tiancebbs.cn/qths/458681.html https://www.tiancebbs.cn/qtfwxx/473275.html

3# __ xiaowu 回答于 2024-04-23 14:53:29+08
带周字的网名:https://www.nanss.com/mingcheng/5616.html 养生的句子经典语录:https://www.nanss.com/yulu/5940.html 形容团结的诗句:https://www.nanss.com/xuexi/5870.html 简短有力的要账短信:https://www.nanss.com/shenghuo/5874.html 天刀名字:https://www.nanss.com/mingcheng/5896.html 夸老师上课讲的好的话:https://www.nanss.com/xuexi/5822.html 关于爱情的网名:https://www.nanss.com/mingcheng/5530.html 设计师个人理念句子:https://www.nanss.com/gongzuo/5908.html 骚一点的名字:https://www.nanss.com/mingcheng/5649.html 属蛇人一辈子的克星:https://www.nanss.com/xingzuo/4862.html 祝别人添孙子的贺词:https://www.nanss.com/yulu/5717.html 祈福的话语:https://www.nanss.com/yulu/5053.html 因果轮回适合发朋友圈的句子:https://www.nanss.com/wenan/5570.html 生活中太多无奈的句子:https://www.nanss.com/yulu/5315.html 古代有杀气又有霸气的男名字:https://www.nanss.com/mingcheng/5873.html 让对方听不懂的表白:https://www.nanss.com/yulu/5994.html 求婚表白的话:https://www.nanss.com/yulu/5546.html 夏目漱石经典语录:https://www.nanss.com/yulu/5938.html 抖音最火晚霞的句子:https://www.nanss.com/wenan/5983.html 说说桂林:https://www.nanss.com/xuexi/5920.html 沉默是最好的诠释:https://www.nanss.com/yuedu/5987.html 表示儿女双全的昵称:https://www.nanss.com/mingcheng/5668.html 博尔赫斯名言名句:https://www.nanss.com/xuexi/5931.html 向劳动者致敬的话:https://www.nanss.com/yulu/5905.html 成熟低调有内涵的签名:https://www.nanss.com/wenan/5423.html 吸引异性的交友短语:https://www.nanss.com/yulu/5765.html 有志气的网名:https://www.nanss.com/mingcheng/5483.html 为生病父亲祈福的句子:https://www.nanss.com/yulu/5863.html 少先队入队寄语:https://www.nanss.com/xuexi/5934.html 十岁成长礼祝福语:https://www.nanss.com/xuexi/5899.html



发表评论:
加入我们
QQ群1:5276420
QQ群2:3336901
QQ群3:254622631
文档群:150657323
文档翻译平台:按此访问
社区邮件列表:按此订阅
扫码关注
© PostgreSQL中文社区 ... (自2010年起)