EcoX-PostgreSQL高可用集群最佳实践(续) 原作者:何敏 创作时间:2019-07-01 16:41:40+08 |
wangliyun 发布于2019-07-02 08:20:40
![]() ![]() ![]() ![]() ![]() |
作者简介:
何敏,目前服务于成都文武信息技术有限公司,有丰富的开发和运维经验。参与开发公司的PostgreSQL高可用系统EcoX、RDS系统,对PostgreSQL高可用系统有非常深入的了解。服务过银行、保险、电力等行业客户。
1实践简介
EcoX数据库高可用集群管理系统软件,该软件包含数据库高可用、读写分离、负载均衡、连接池等功能,能够保证业务7*24小时连续运行,保证数据零丢失。
在上期我们已经介绍过如何全新搭建一个EcoX-PostgreSQL高可用系统,期间有很多用户咨询对于已有集群,用ECOX如何接管,所以这期我们介绍如何用ECOX集群管理系统对一个已有的PostgreSQL流复制集群进行高可用改造。
对于已有的环境如下,PostgreSQL流复制集群已经工作,其环境如下:
软件版本:
现有PostgreSQL流复制集群架构:
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的安装和配置。
请在登录后发表评论,否则无法保存。
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
发表评论:
扫码关注
© PostgreSQL中文社区 ... (自2010年起)