PolarDB-O在运营商的高可用部署实践

晏杰宏 2020-11-06 19:19:00
作者介绍

晏杰宏,新炬网络高级专家,主要负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维服务管理经验。目前专注于云计算、中间件、开源技术和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PostgreSQL PGCE和阿里云ACP等认证。

 

一、背影介绍

 

自从阿里于2010年发动了IOE运动,2013年因美国一起安全事件,将去IOE重要性重新推上另一个高度。政府部门、银行、电信行业、制造业等各类企业纷纷进行各自的去IOE试点。近些年国内数据库软件越来越成熟,数据库国产化成了热门话题。企业都开始选择成熟国产数据库软件来国产化,让自己的业务数据库不再对现有的数据库软件有更强的依赖性。

 

本次某省移动信息技术部门挑选了一个业务系统做国产化数据库试点上线,最终选用了高度兼容Oracle的阿里云Polardb-O数据库。此次国产化试点上线本人有幸重度参与项目其中。接下来的分享会为各位读者精心挑选阿里云Polardb-O数据库运维场景并续集的形式来介绍,可用部署、软件版本升级、功能维护性测试、高可用测试、日常巡检、性能监控、应急演练、应急保障、备库与恢复、备份策略、Polardb常见问题等常见场景。

 

二、高可用部署

 

本方案高可用部署采用阿里云Poardb-O 11.2版本部署搭建1主1备高可用集群。主备节点之间采用流复制将pg_wal日志文件进行主备数据库实时同步,确保主从节点数据一致性。同时通过 Cluster Mangaer集群管控软件来管理主从数据库节点,实现主备库之间能自动与手动切换,确保主备数据库切换数据不丢失情况,还能提供数据库高可用服务。

 

1、系统规划
1、xi

 

1)硬件规格信息

 

 

2)网卡配置要求

 

考虑到备份、高可用方面的需要,建议万兆网及以上。

 

3)架构图

 

 

4)安装规划

 

 

三、基础软件部署

 

1、环境准备
1、xi

 

1)关闭操作透明大页


 

2)内核参数调优

 

修改内核参数谁的/etc/sysctl.conf ,增加以下内容后,执行 sudo sysctl -p 生效。

 

 

创建/etc/security/limits.d/polardb_limits.conf,内容如下:

 

 

3)关闭防火墙服务和selinux

 

 

4)创建polardb主机用户和组

 

 

5)设置普通用户sudo权限

 

①先查看系统是否安装sudo,可以使用命令 rpm -qa sudo 查看,若没有安装,可以使用yum安装  yum -y install sudo 

 

 

②把polardb用户加入wheel组,加入此组才有sudo权限

 

 

③把如下polardb用户加入配置文件/etc/sudoers

 

 

④远程sudo ssh开启(这一项特别注意不操作会影响后面节点加入CM)

 

 

2、安装Polardb-O数据库软件
1、xi

 

这里软件包是用rpm二进制方式安装

 

 

3、配置polardb用户环境
1、xi

 

为polardb用户配置环境变量,切换polardb用户,在.bash_profile文件中添加如下内容,最后使用命令source .bash_profile生效环境变量。

 

 

4、配置安装PFS
1、xi

 

PFS文件系统用于存储Polardb-O数据库数据,本方案提供了四块sd*裸盘,采集LVM磁盘管理方式来管理这4块盘,后续磁盘扩容直接使用LVM扩容,创建逻辑卷方式用于PFS磁盘配置。这里详细描述如何裸盘如何采用LVM来创建逻辑卷,详细配置过程请参考方案《Polardb-O linux LVM逻辑卷管理配置》。

 

这里以创建好的逻辑卷/vda/data为例来配置PFS文件系统。配置安装PFS时需要占用名称为$PFSDISK的设备。在安装过程中过程中会格式化该设备,如果/dev/$PFSDISK已经挂载过了,要umount该设备。依次执行以下命令进行初始化:

 

 

5、配置安装PolarDB数据库
1、xi

 

1)初始化数据库集群

 

PolarDB-O 在数据库启动之前需要执行初始化数据库集群,请用polardb用户登录,执行如下初始化数据库命令:

 

 

2)初始化PFS数据

 

如下命令请用polardb用户操作,下面命令用途是将本地$PGDATA下面的数据拷贝到PFS磁盘上。后续数据库加载直接读写PFS磁盘文件。

 

 

3)修改配置文件

 

初始化数据库集群后,数据库的参数文件 postgresql.conf 文件中都是默认参数,用户可以根据自身需要进行修改,如下以内存100规格为例,需要修改的核心配置参数如下:


 

特别注意:

 

如果在修改Polardb数据库参数文件postgresql.conf之前启动过数据库,请先确认文件 $PGDATA/polar_node_static.conf是否存在,若存在请将其$PGDATA/polar_node_static.conf文件删除后再启动数据库,否则会影响Polardb-O数据库正常启动。

 

为了实现其他机器对PolarDB for O 数据库的访问,还需要修改访问控制文件,即pg_hba.conf,一般是放开所有的ipv4 的访问,尾部添加如下配置:

 

 

4)启与停数据库

 

修改完配置文件之后,polardb用户可以执行命令如下,启动数据库:

 

 

6、检查安装
1、xi

 

 

1)数据库检查

 

数据库启动之后,使用polardb用户可以通过PolarDB-O 内核二进制包中自带的psql 客户端进行连通测试,执行如下命令:

 

 

2)进程检查

 

数据库启动成功之后,会在数据库目录下生成一个postmaster.pid,其中第一行是PolarDB forO 守护进程pid,用户可以通过ps -a|grep 守护进程pid 检查PolarDB-O 进程情况,如需要检查polar-postgres ,logger,checkpointer,checkpointer…等进程。

 

四、Polardb-O主备高可用部署安装

 

1、初始化主节点
1、xi

 

初化主节点需要进行如下操作:

主库初始化操作需要完成以上第3章节的2~6章节内容。

 

2、创建主库用户和流复制槽
1、xi

 

使用polardb用户可以通过psql 客户端创建流复制用户。

 

3、备库初始化
1、xi

 

初化化备节点需要进行如下操作:

 

1)  对软硬件环境进行安装配置,请完成第3章节,3.1环境准备、3.2polardb-O数据库软件安装、3.3配置用户环境、3.4配置安装PFS。

 

2)  在备份执行pg_basebackup命令,使用主库数据目录和PFS初始化备库数据目录。(注意$PGDATA目录不能提前创建,只创建前缀目录/app)

 

 

3)  修改备库postgresql.conf文件中的参数。

 

$PFSDISK 替换成PFS实际文件目录,$PFSIR替换成实际的设备盘名称。

 

 

4)  启动和检查备库节点

 

启动与检查备节点可验证数据库是否连接成功。具体操作如下:

 

 

如果能连通,则证明数据库安装成功,并且启动成功。

 

4、检查主库流复制状态
1、xi

 

备节点启动之后,可使用psql 连接主节点,检查流复制状态。在主库使用如下sql确认流复制建立成功:

 

 

如果看到standby1 节点建立的流复制节点,则说明主备搭建成功。

 

5、Cluster Manager集群管控部署
1、xi

 

1)CM主机初始化配置

 

安装CM软件前需要对CM主机进程操作系统预配置准备,请参考第3章节,配置完成3.1小节下面的环境准备。

 

2)主机之间认证打通

 

CM需要远程管理主备节点,需要打通CM到主备两台主机之间户型关系。这里统一用polardb用户来建立户信关系,polardb用户执行如下命令:

 

 

3)CM软件安装

 

在cm节点上安装cluster_manager,如下所示:

 

 

4)CM服务配置

 

 ① 配置探针用户

 

在主库主机上创建aurora探测用户:

 

 

 ②  创建配置文件

 

在CM服务器上面,使用polardb用户创建一个配置目录:


 

5)CM服务管理

 

 ① 启动服务

 

在CM主机上使用polardb用户启动CM服务

 

 

 ② 停止服务

 

 

 ③ 查看服务

 

 

6、CM集群管理
1、xi

 

1)配置数据库

 

在Cluster Manager节点上配置主库

 

 

在Cluster Manager节点上配置备库

 

 

2)配置VIP

 

高可用方式下,对外提供数据库服务器的主机除了有一个真实IP外还有一个虚拟IP,使用这两个IP都可以连接到该主机,所有项目中数据库链接配置的都是到虚拟IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。

 

 

3)集群状态检查

 

使用如下命令可以检查主备库在活状态,VIP漂流具体节点。

 

 

curl -H "Content-Type:application/json" 

http://127.0.0.1:5000/v1/status?type=visual

 

 

4)手动主从切换

 

在CM主机上通过如下命令可以完成手动主备切换。

 

 

五、总结

 

经过此次国产化数据库项目实践经验总结,我们在软件功能性测试、业务改造和高可用等功能场景上花了很多时间来研究与测试,测试过程中碰到了很多坑,也积累了很多国产化数据库经验,避免国产化数据库新手踩坑,有兴趣的朋友可以一起来交流与探讨。

 

作者丨晏杰宏
来源丨炬南山(ID:gh_f90290882192)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
最新评论
访客 2023年08月20日

230721

访客 2023年08月16日

1、导入Mongo Monitor监控工具表结构(mongo_monitor…

访客 2023年08月04日

上面提到: 在问题描述的架构图中我们可以看到,Click…

访客 2023年07月19日

PMM不香吗?

访客 2023年06月20日

如今看都很棒

活动预告